Source for file helper.php

Documentation is available at helper.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Platform
  4.  * @subpackage  Language
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE
  8.  */
  9.  
  10. defined('JPATH_PLATFORM'or die;
  11.  
  12. /**
  13.  * Language helper class
  14.  *
  15.  * @package     Joomla.Platform
  16.  * @subpackage  Language
  17.  * @since       11.1
  18.  */
  19. {
  20.     /**
  21.      * Builds a list of the system languages which can be used in a select option
  22.      *
  23.      * @param   string   $actualLanguage  Client key for the area
  24.      * @param   string   $basePath        Base path to use
  25.      * @param   boolean  $caching         True if caching is used
  26.      * @param   boolean  $installed       Get only installed languages
  27.      *
  28.      * @return  array  List of system languages
  29.      *
  30.      * @since   11.1
  31.      */
  32.     public static function createLanguageList($actualLanguage$basePath JPATH_BASE$caching false$installed false)
  33.     {
  34.         $list array();
  35.  
  36.         // Cache activation
  37.         $langs JLanguage::getKnownLanguages($basePath);
  38.  
  39.         if ($installed)
  40.         {
  41.             $db JFactory::getDbo();
  42.             $query $db->getQuery(true)
  43.                 ->select('element')
  44.                 ->from('#__extensions')
  45.                 ->where('type=' $db->quote('language'))
  46.                 ->where('state=0')
  47.                 ->where('enabled=1')
  48.                 ->where('client_id=' ($basePath == JPATH_ADMINISTRATOR 0));
  49.             $db->setQuery($query);
  50.             $installed_languages $db->loadObjectList('element');
  51.         }
  52.  
  53.         foreach ($langs as $lang => $metadata)
  54.         {
  55.             if (!$installed || array_key_exists($lang$installed_languages))
  56.             {
  57.                 $option array();
  58.  
  59.                 $option['text'$metadata['name'];
  60.                 $option['value'$lang;
  61.  
  62.                 if ($lang == $actualLanguage)
  63.                 {
  64.                     $option['selected''selected="selected"';
  65.                 }
  66.  
  67.                 $list[$option;
  68.             }
  69.         }
  70.  
  71.         return $list;
  72.     }
  73.  
  74.     /**
  75.      * Tries to detect the language.
  76.      *
  77.      * @return  string  locale or null if not found
  78.      *
  79.      * @since   11.1
  80.      */
  81.     public static function detectLanguage()
  82.     {
  83.         if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
  84.         {
  85.             $browserLangs explode(','$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  86.             $systemLangs self::getLanguages();
  87.  
  88.             foreach ($browserLangs as $browserLang)
  89.             {
  90.                 // Slice out the part before ; on first step, the part before - on second, place into array
  91.                 $browserLang substr($browserLang0strcspn($browserLang';'));
  92.                 $primary_browserLang substr($browserLang02);
  93.  
  94.                 foreach ($systemLangs as $systemLang)
  95.                 {
  96.                     // Take off 3 letters iso code languages as they can't match browsers' languages and default them to en
  97.                     $Jinstall_lang $systemLang->lang_code;
  98.  
  99.                     if (strlen($Jinstall_lang6)
  100.                     {
  101.                         if (strtolower($browserLang== strtolower(substr($systemLang->lang_code0strlen($browserLang))))
  102.                         {
  103.                             return $systemLang->lang_code;
  104.                         }
  105.                         elseif ($primary_browserLang == substr($systemLang->lang_code02))
  106.                         {
  107.                             $primaryDetectedLang $systemLang->lang_code;
  108.                         }
  109.                     }
  110.                 }
  111.  
  112.                 if (isset($primaryDetectedLang))
  113.                 {
  114.                     return $primaryDetectedLang;
  115.                 }
  116.             }
  117.         }
  118.  
  119.         return null;
  120.     }
  121.  
  122.     /**
  123.      * Get available languages
  124.      *
  125.      * @param   string  $key  Array key
  126.      *
  127.      * @return  array  An array of published languages
  128.      *
  129.      * @since   11.1
  130.      */
  131.     public static function getLanguages($key 'default')
  132.     {
  133.         static $languages;
  134.  
  135.         if (empty($languages))
  136.         {
  137.             // Installation uses available languages
  138.             if (JFactory::getApplication()->getClientId(== 2)
  139.             {
  140.                 $languages[$keyarray();
  141.                 $knownLangs JLanguage::getKnownLanguages(JPATH_BASE);
  142.  
  143.                 foreach ($knownLangs as $metadata)
  144.                 {
  145.                     // Take off 3 letters iso code languages as they can't match browsers' languages and default them to en
  146.                     $obj new stdClass;
  147.                     $obj->lang_code $metadata['tag'];
  148.                     $languages[$key][$obj;
  149.                 }
  150.             }
  151.             else
  152.             {
  153.                 $cache JFactory::getCache('com_languages''');
  154.  
  155.                 if (!$languages $cache->get('languages'))
  156.                 {
  157.                     $db JFactory::getDbo();
  158.                     $query $db->getQuery(true)
  159.                         ->select('*')
  160.                         ->from('#__languages')
  161.                         ->where('published=1')
  162.                         ->order('ordering ASC');
  163.                     $db->setQuery($query);
  164.  
  165.                     $languages['default'$db->loadObjectList();
  166.                     $languages['sef'array();
  167.                     $languages['lang_code'array();
  168.  
  169.                     if (isset($languages['default'][0]))
  170.                     {
  171.                         foreach ($languages['default'as $lang)
  172.                         {
  173.                             $languages['sef'][$lang->sef$lang;
  174.                             $languages['lang_code'][$lang->lang_code$lang;
  175.                         }
  176.                     }
  177.  
  178.                     $cache->store($languages'languages');
  179.                 }
  180.             }
  181.         }
  182.  
  183.         return $languages[$key];
  184.     }
  185. }

Documentation generated on Tue, 19 Nov 2013 15:04:23 +0100 by phpDocumentor 1.4.3