Source for file language.php

Documentation is available at language.php

  1. <?php
  2. /**
  3.  * @package     FrameworkOnFramework
  4.  * @subpackage  model
  5.  * @copyright   Copyright (C) 2010 - 2012 Akeeba Ltd. All rights reserved.
  6.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  7.  */
  8. // Protect from unauthorized access
  9. defined('_JEXEC'or die;
  10.  
  11. /**
  12.  * FrameworkOnFramework model behavior class to filter front-end access to items
  13.  * based on the language.
  14.  *
  15.  * @package  FrameworkOnFramework
  16.  * @since    2.1
  17.  */
  18. {
  19.     /**
  20.      * This event runs after we have built the query used to fetch a record
  21.      * list in a model. It is used to apply automatic query filters.
  22.      *
  23.      * @param   FOFModel        &$model  The model which calls this event
  24.      * @param   JDatabaseQuery  &$query  The model which calls this event
  25.      *
  26.      * @return  void 
  27.      */
  28.     public function onAfterBuildQuery(&$model&$query)
  29.     {
  30.         // This behavior only applies to the front-end.
  31.         if (!FOFPlatform::getInstance()->isFrontend())
  32.         {
  33.             return;
  34.         }
  35.  
  36.         // Get the name of the language field
  37.         $table $model->getTable();
  38.         $languageField $table->getColumnAlias('language');
  39.  
  40.         // Make sure the access field actually exists
  41.         if (!in_array($languageField$table->getKnownFields()))
  42.         {
  43.             return;
  44.         }
  45.  
  46.         // Make sure it is a multilingual site and get a list of languages
  47.         $app JFactory::getApplication();
  48.         $hasLanguageFilter method_exists($app'getLanguageFilter');
  49.  
  50.         if ($hasLanguageFilter)
  51.         {
  52.             $hasLanguageFilter $app->getLanguageFilter();
  53.         }
  54.  
  55.         if (!$hasLanguageFilter)
  56.         {
  57.             return;
  58.         }
  59.  
  60.         $lang_filter_plugin JPluginHelper::getPlugin('system''languagefilter');
  61.         $lang_filter_params new JRegistry($lang_filter_plugin->params);
  62.  
  63.         $languages array('*');
  64.  
  65.         if ($lang_filter_params->get('remove_default_prefix'))
  66.         {
  67.             // Get default site language
  68.             $lg JFactory::getLanguage();
  69.             $languages[$lg->getTag();
  70.         }
  71.         else
  72.         {
  73.             $languages[JFactory::getApplication()->input->getCmd('language''*');
  74.         }
  75.  
  76.         // Filter out double languages
  77.         $languages array_unique($languages);
  78.  
  79.         // And filter the query output by these languages
  80.         $db JFactory::getDbo();
  81.         $languages array_map(array($db'quote')$languages);
  82.         $query->where($db->qn($languageField' IN (' implode(','$languages')');
  83.     }
  84.  
  85.     /**
  86.      * The event runs after FOFModel has called FOFTable and retrieved a single
  87.      * item from the database. It is used to apply automatic filters.
  88.      *
  89.      * @param   FOFModel  &$model   The model which was called
  90.      * @param   FOFTable  &$record  The record loaded from the databae
  91.      *
  92.      * @return  void 
  93.      */
  94.     public function onAfterGetItem(&$model&$record)
  95.     {
  96.         if ($record instanceof FOFTable)
  97.         {
  98.             $fieldName $record->getColumnAlias('language');
  99.  
  100.             // Make sure the field actually exists
  101.             if (!in_array($fieldName$record->getKnownFields()))
  102.             {
  103.                 return;
  104.             }
  105.  
  106.             // Make sure it is a multilingual site and get a list of languages
  107.             $app JFactory::getApplication();
  108.             $hasLanguageFilter method_exists($app'getLanguageFilter');
  109.  
  110.             if ($hasLanguageFilter)
  111.             {
  112.                 $hasLanguageFilter $app->getLanguageFilter();
  113.             }
  114.  
  115.             if (!$hasLanguageFilter)
  116.             {
  117.                 return;
  118.             }
  119.  
  120.             $lang_filter_plugin JPluginHelper::getPlugin('system''languagefilter');
  121.             $lang_filter_params new JRegistry($lang_filter_plugin->params);
  122.  
  123.             $languages array('*');
  124.  
  125.             if ($lang_filter_params->get('remove_default_prefix'))
  126.             {
  127.                 // Get default site language
  128.                 $lg JFactory::getLanguage();
  129.                 $languages[$lg->getTag();
  130.             }
  131.             else
  132.             {
  133.                 $languages[JFactory::getApplication()->input->getCmd('language''*');
  134.             }
  135.  
  136.             // Filter out double languages
  137.             $languages array_unique($languages);
  138.  
  139.             if (!in_array($record->$fieldName$languages))
  140.             {
  141.                 $record null;
  142.             }
  143.         }
  144.     }
  145. }

Documentation generated on Tue, 19 Nov 2013 15:06:31 +0100 by phpDocumentor 1.4.3