linea21-core
[ class tree: linea21-core ] [ index: linea21-core ] [ all elements ]

Source for file class.culture.php

Documentation is available at class.culture.php

  1. <?php
  2. /**
  3.  * @package linea21.core
  4.  * @subpackage culture
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Plugin Management
  10.  */
  11.  
  12. class culture {
  13.  
  14.   private static $instance;
  15.  
  16.   private $params array();
  17.  
  18.   private $separator '_';
  19.  
  20.   public $cultures = array()// collect data related to available languages
  21.  
  22.  
  23.   private function __construct({
  24.  
  25.     global $culture;
  26.  
  27.     $a array('none');
  28.  
  29.     self::prepareCultures();
  30.  
  31.     $a=array_merge($aarray_keys($this->cultures));
  32.  
  33.     // checking if lang is forced or already set in session
  34.     if(isset($_GET['flang']))
  35.     {
  36.       in_array($_GET['flang']$a$_SESSION['flang'$_GET['flang'die('no way!');
  37.       $this->params['current'$_GET['flang'];
  38.     }
  39.     elseif(isset($_SESSION['flang']))
  40.     {
  41.       in_array($_SESSION['flang']$adie('no way!');
  42.       $this->params['current'=  $_SESSION['flang'];
  43.     }
  44.     else
  45.     {
  46.       $this->params['current'=  LANGUAGE;
  47.     }
  48.     if($this->params['current']=='none'self::reset();
  49.  
  50.     // initializing parameters
  51.     include('../languages/' .$this->params['current']'/define.php');
  52.     if(strpos($this->params['current']$this->separator!= false)   {
  53.       list($this->params['language_code']$this->params['country_code']explode($this->separator$this->params['current']);
  54.     else {
  55.       $this->params['language_code'$this->params['current'];
  56.     }
  57.     $this->params['language'$culture[$this->params['current']]['Language'];
  58.     if(isset($culture[$this->params['current']]['Country'])) $this->params['country'$culture[$this->params['current']]['Country'];
  59.  
  60.   }
  61.  
  62.   /**
  63.    * prepareCultures()
  64.    * Return available cultures
  65.    * @return array 
  66.    ***/
  67.   private function prepareCultures({
  68.  
  69.     $a array();
  70.     $b array();
  71.  
  72.     if ($handle opendir('../languages/')) {
  73.       while (false !== ($file readdir($handle))) {
  74.         if ($file != "." && $file != ".." && $file != ".svn"{
  75.           array_push($a$file);
  76.         }
  77.       }
  78.       closedir($handle);
  79.  
  80.       foreach($a as $el{
  81.         include('../languages/'.$el.'/define.php');
  82.         $b array_merge($b$culture);
  83.       }
  84.     }
  85.  
  86.     $this->cultures = $b;
  87.   }
  88.  
  89.   public static function getInstance()
  90.   {
  91.     if (!isset(self::$instance)) {
  92.       $c = __CLASS__;
  93.       self::$instance new $c;
  94.     }
  95.  
  96.     return self::$instance;
  97.   }
  98.  
  99.   /**
  100.    * getVar()
  101.    * Only for current culture !!!
  102.    * @param string $varname 
  103.    * @return string 
  104.    */
  105.   public function getVar($varname{
  106.  
  107.     return $this->params[$varname];
  108.  
  109.   }
  110.  
  111.   /**
  112.    * getCultureInfo()
  113.    * For any culture
  114.    * @param string $culture 
  115.    * @param string $param 
  116.    * @return string or bool
  117.    */
  118.   public function getCultureInfo($culture$param{
  119.  
  120.     if(isset($this->cultures[$culture][$param])) {
  121.       return $this->cultures[$culture][$param];
  122.     else
  123.     return false;
  124.  
  125.   }
  126.  
  127.   public function renderSwitcher({
  128.  
  129.     $switcher '';
  130.     if(isset($_SESSION['flang'])) {
  131.  
  132.       $array self::availableCultures();
  133.       $list '';
  134.  
  135.       foreach($array as $culture => $value{
  136.          
  137.         $a array('flang' => $culture);
  138.         if(CURRENT_APP =='admin'$url get_permalink(array_merge($_GET$a));
  139.         if(CURRENT_APP =='public'$url get_permalink($a);
  140.         $strucfirst($value['Language']);
  141.         if(isset($value['Country'])) $str.= ' ('.ucfirst($value['Country']).')';
  142.         $list .= '<li><a href="'.$url.'" title="'.$str.'"><img src="'.THEME_ADMIN_PATH.'images/flags/'.$culture.'.png" alt="'.$str.'" /><span>' $str '</span></a></li>'.END_LINE;
  143.  
  144.       }
  145.  
  146.       $switcher .= '<div id="lang_switcher">';
  147.       $switcher .= '<ul>';
  148.       $switcher .= $list;
  149.       $switcher .= '<li><a href="index.php?flang=none" title="default language">[X]</a></li>';
  150.       $switcher .= '</ul>';
  151.       $switcher .= '</div>';
  152.     }
  153.  
  154.     echo $switcher;
  155.  
  156.   }
  157.  
  158.   public function reset({
  159.  
  160.     if(isset($_SESSION['flang'])) unset($_SESSION['flang']);
  161.     if(isset($_GET['flang'])) unset($_GET['flang']);
  162.     $this->params['current'=  LANGUAGE;
  163.  
  164.   }
  165.  
  166.   /**
  167.    * availableCultures()
  168.    * Return available cultures
  169.    * @return array 
  170.    ***/
  171.   public function availableCultures({
  172.  
  173.     return $this->cultures;
  174.   }
  175.  
  176. }
  177.  
  178. ?>

Documentation generated on Thu, 03 May 2012 15:02:25 +0200 by phpDocumentor 1.4.1