| 
      1
     | 
    
      <?php
 
     | 
  
  
    | 
      2
     | 
    
      /**
 
     | 
  
  
    | 
      3
     | 
    
       * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
     | 
  
  
    | 
      4
     | 
    
       *
 
     | 
  
  
    | 
      5
     | 
    
       * This program is free software: you can redistribute it and/or modify
 
     | 
  
  
    | 
      6
     | 
    
       * it under the terms of the GNU General Public License as published by
 
     | 
  
  
    | 
      7
     | 
    
       * the Free Software Foundation, either version 3 of the License, or
 
     | 
  
  
    | 
      8
     | 
    
       * (at your option) any later version.
 
     | 
  
  
    | 
      9
     | 
    
       *
 
     | 
  
  
    | 
      10
     | 
    
       * This program is distributed in the hope that it will be useful,
 
     | 
  
  
    | 
      11
     | 
    
       * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
     | 
  
  
    | 
      12
     | 
    
       * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
     | 
  
  
    | 
      13
     | 
    
       * GNU General Public License for more details.
 
     | 
  
  
    | 
      14
     | 
    
       *
 
     | 
  
  
    | 
      15
     | 
    
       * You should have received a copy of the GNU General Public License
 
     | 
  
  
    | 
      16
     | 
    
       * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
     | 
  
  
    | 
      17
     | 
    
       */
 
     | 
  
  
    | 
      18
     | 
    
      
 
     | 
  
  
    | 
      19
     | 
    
      /**
 
     | 
  
  
    | 
      20
     | 
    
       * Lib.php
 
     | 
  
  
    | 
      21
     | 
    
       *
 
     | 
  
  
    | 
      22
     | 
    
       * @category     Modules
 
     | 
  
  
    | 
      23
     | 
    
       * @package      Modules_MultiLingual
 
     | 
  
  
    | 
      24
     | 
    
       * @author       Werner v.d.Decken <wkl@isteam.de>
 
     | 
  
  
    | 
      25
     | 
    
       * @author       Dietmar Wöllbrink <dietmar.woellbrink@websiteBaker.org>
 
     | 
  
  
    | 
      26
     | 
    
       * @copyright    Werner v.d.Decken <wkl@isteam.de>
 
     | 
  
  
    | 
      27
     | 
    
       * @license      http://www.gnu.org/licenses/gpl.html   GPL License
 
     | 
  
  
    | 
      28
     | 
    
       * @version      1.6.8
 
     | 
  
  
    | 
      29
     | 
    
       * @revision     $Revision: 2070 $
 
     | 
  
  
    | 
      30
     | 
    
       * @link         $HeadURL: svn://isteam.dynxs.de/wb-archiv/branches/2.8.x/wb/modules/MultiLingual/Lib.php $
 
     | 
  
  
    | 
      31
     | 
    
       * @lastmodified $Date: 2014-01-03 02:21:42 +0100 (Fri, 03 Jan 2014) $
 
     | 
  
  
    | 
      32
     | 
    
       * @since        File available since 09.01.2013
 
     | 
  
  
    | 
      33
     | 
    
       * @description  provides a flexible posibility for changeing to a translated page
 
     | 
  
  
    | 
      34
     | 
    
       */
 
     | 
  
  
    | 
      35
     | 
    
      
 
     | 
  
  
    | 
      36
     | 
    
      class m_MultiLingual_Lib {
     | 
  
  
    | 
      37
     | 
    
      /** @var object instance of the WbAdaptor object */
 
     | 
  
  
    | 
      38
     | 
    
      	protected $_oReg = null;
 
     | 
  
  
    | 
      39
     | 
    
      /** @var object instance of the application object */
 
     | 
  
  
    | 
      40
     | 
    
      	private $_oApp     = null;
 
     | 
  
  
    | 
      41
     | 
    
      /** @var object instance of the database object */
 
     | 
  
  
    | 
      42
     | 
    
      	private $_oDb      = null;
 
     | 
  
  
    | 
      43
     | 
    
      
 
     | 
  
  
    | 
      44
     | 
    
      	private $_defaultPageId = 0;
 
     | 
  
  
    | 
      45
     | 
    
      
 
     | 
  
  
    | 
      46
     | 
    
      
 
     | 
  
  
    | 
      47
     | 
    
      /** @var array holds several values from the default.ini */	
 
     | 
  
  
    | 
      48
     | 
    
      	private $_config      = array();
 
     | 
  
  
    | 
      49
     | 
    
      /** @var array set several values for Twig_Environment */	
 
     | 
  
  
    | 
      50
     | 
    
      	private $_aTwigEnv    = array();
 
     | 
  
  
    | 
      51
     | 
    
      /** @var array set several values for Twig_Loader */	
 
     | 
  
  
    | 
      52
     | 
    
      	private $_aTwigLoader = array();
 
     | 
  
  
    | 
      53
     | 
    
      /** @var string set icon extension */	
 
     | 
  
  
    | 
      54
     | 
    
      	private $_sExtension  = array();
 
     | 
  
  
    | 
      55
     | 
    
      /**
 
     | 
  
  
    | 
      56
     | 
    
       * constructor used to import some application constants and objects
 
     | 
  
  
    | 
      57
     | 
    
       */	
 
     | 
  
  
    | 
      58
     | 
    
      	public function __construct() 
 
     | 
  
  
    | 
      59
     | 
    
      	{
     | 
  
  
    | 
      60
     | 
    
      		// import global vars and objects
 
     | 
  
  
    | 
      61
     | 
    
      		if(!defined('ADMIN_REL')) { define('ADMIN_REL', WB_REL.'/'.ADMIN_DIRECTORY); }
     | 
  
  
    | 
      62
     | 
    
      		$this->_oApp        = (isset($GLOBALS['admin']) ? $GLOBALS['admin'] : $GLOBALS['wb']);
 
     | 
  
  
    | 
      63
     | 
    
      		$this->_oDb         = WbDatabase::getInstance();
 
     | 
  
  
    | 
      64
     | 
    
      		$this->_oReg        = WbAdaptor::getInstance();
 
     | 
  
  
    | 
      65
     | 
    
      		$this->_config      = $this->_aConfig = $this->getConfig((dirname(__FILE__)).'/default.ini');
 
     | 
  
  
    | 
      66
     | 
    
      		$this->_aTwigEnv    = $this->_config['twig-environment'];
 
     | 
  
  
    | 
      67
     | 
    
      		$this->_aTwigLoader = $this->_config['twig-loader-file'];
 
     | 
  
  
    | 
      68
     | 
    
      	}
 
     | 
  
  
    | 
      69
     | 
    
      
 
     | 
  
  
    | 
      70
     | 
    
      	/**
 
     | 
  
  
    | 
      71
     | 
    
      	 * methode to update a var/value-pair into table
 
     | 
  
  
    | 
      72
     | 
    
      	 * @param integer $iPageId which page shall be updated
 
     | 
  
  
    | 
      73
     | 
    
      	 * @param string $sTable the pages table
 
     | 
  
  
    | 
      74
     | 
    
      	 * @param integer $iEntry 
 
     | 
  
  
    | 
      75
     | 
    
      	 * @return bool
 
     | 
  
  
    | 
      76
     | 
    
      	 */ 
 
     | 
  
  
    | 
      77
     | 
    
      	private function _updatePageCode($iPageId, $sTable, $iNewPageCode = null)
 
     | 
  
  
    | 
      78
     | 
    
      	{
     | 
  
  
    | 
      79
     | 
    
      		// if new Pagecode is missing then set the own page ID
 
     | 
  
  
    | 
      80
     | 
    
      		$entry = ( !isset($iNewPageCode) ? $iPageId : $iNewPageCode);
 
     | 
  
  
    | 
      81
     | 
    
      		$sql = 'UPDATE `'.$this->_oDb->TablePrefix.$sTable.'` '
 
     | 
  
  
    | 
      82
     | 
    
      		     . 'SET `page_code`='.$entry.', '
 
     | 
  
  
    | 
      83
     | 
    
      		     .     '`modified_when` = '.time().' '
 
     | 
  
  
    | 
      84
     | 
    
      		     . 'WHERE `page_id` = '.$iPageId;
 
     | 
  
  
    | 
      85
     | 
    
      		return (bool)$this->_oDb->query($sql);
 
     | 
  
  
    | 
      86
     | 
    
      	}
 
     | 
  
  
    | 
      87
     | 
    
      
 
     | 
  
  
    | 
      88
     | 
    
      	/**
 
     | 
  
  
    | 
      89
     | 
    
      	 * compose the needed SQL statement
 
     | 
  
  
    | 
      90
     | 
    
      	 * @param integer $sLangKey
 
     | 
  
  
    | 
      91
     | 
    
      	 * @return database object with given SQL statement
 
     | 
  
  
    | 
      92
     | 
    
      	 */			
 
     | 
  
  
    | 
      93
     | 
    
      	private function _getLangInUsedDbResult ( $sLangKey='' ) 
 
     | 
  
  
    | 
      94
     | 
    
      	{
     | 
  
  
    | 
      95
     | 
    
      		$sql = 'SELECT DISTINCT `language`,'
 
     | 
  
  
    | 
      96
     | 
    
      		     .                 '`page_id`,`level`,`parent`,`root_parent`,`page_code`,`link`,'
 
     | 
  
  
    | 
      97
     | 
    
      		     .                 '`visibility`,`viewing_groups`,`viewing_users`,`position`,'
 
     | 
  
  
    | 
      98
     | 
    
      		     .                 '`page_title`,`tooltip` '
 
     | 
  
  
    | 
      99
     | 
    
      		     . 'FROM `'.$this->_oDb->TablePrefix.'pages` '
 
     | 
  
  
    | 
      100
     | 
    
      		     . 'WHERE `level`= \'0\' '
 
     | 
  
  
    | 
      101
     | 
    
      		     .   'AND `root_parent`=`page_id` '
 
     | 
  
  
    | 
      102
     | 
    
      		     .   'AND (`visibility`!=\'none\' '
 
     | 
  
  
    | 
      103
     | 
    
      		     .   'AND `visibility`!=\'hidden\') '
 
     | 
  
  
    | 
      104
     | 
    
      		     .   ( ($sLangKey!='') ? ' AND `language` = \''.$sLangKey.'\'' : '')
 
     | 
  
  
    | 
      105
     | 
    
      		     .   'GROUP BY `language` '
 
     | 
  
  
    | 
      106
     | 
    
      		     .   'ORDER BY `position`';
 
     | 
  
  
    | 
      107
     | 
    
      		return $this->_oDb->query($sql);
 
     | 
  
  
    | 
      108
     | 
    
      	}
 
     | 
  
  
    | 
      109
     | 
    
      
 
     | 
  
  
    | 
      110
     | 
    
      	/**
 
     | 
  
  
    | 
      111
     | 
    
      	* 
 
     | 
  
  
    | 
      112
     | 
    
      	* search for pages with given page code and create a DB result object
 
     | 
  
  
    | 
      113
     | 
    
      	* @param integer Pagecode to search for
 
     | 
  
  
    | 
      114
     | 
    
      	* @return object result object or null on error
 
     | 
  
  
    | 
      115
     | 
    
      	*/
 
     | 
  
  
    | 
      116
     | 
    
      	private function _getPageCodeDbResult( $iPageCode )
 
     | 
  
  
    | 
      117
     | 
    
      	{
     | 
  
  
    | 
      118
     | 
    
      		$sql = 'SELECT `language`,'
 
     | 
  
  
    | 
      119
     | 
    
      		     .        '`page_id`,`level`,`parent`,`root_parent`,`page_code`,`link`,'
 
     | 
  
  
    | 
      120
     | 
    
      		     .        '`visibility`,`viewing_groups`,`viewing_users`,`position`,'
 
     | 
  
  
    | 
      121
     | 
    
      		     .        '`page_title`,`tooltip` '
 
     | 
  
  
    | 
      122
     | 
    
      		     .  'FROM `'.$this->_oDb->TablePrefix.'pages`'
 
     | 
  
  
    | 
      123
     | 
    
      		     .  'WHERE `page_code` = '.$iPageCode.' '
 
     | 
  
  
    | 
      124
     | 
    
      		     .  'ORDER BY `position`';
 
     | 
  
  
    | 
      125
     | 
    
      		return $this->_oDb->query($sql);
 
     | 
  
  
    | 
      126
     | 
    
      	}
 
     | 
  
  
    | 
      127
     | 
    
      
 
     | 
  
  
    | 
      128
     | 
    
      	/**
 
     | 
  
  
    | 
      129
     | 
    
      	 * compose the needed SQL statement
 
     | 
  
  
    | 
      130
     | 
    
      	 * @param integer $sLangKey
 
     | 
  
  
    | 
      131
     | 
    
      	 * @return database object with given SQL statementt
 
     | 
  
  
    | 
      132
     | 
    
      	 */
 
     | 
  
  
    | 
      133
     | 
    
      	private function _getLangAddonsDbResult ( $sLangKey='' ) 
 
     | 
  
  
    | 
      134
     | 
    
      	{
     | 
  
  
    | 
      135
     | 
    
      		$sql = 'SELECT `directory`,`name`  FROM `'.$this->_oDb->TablePrefix.'addons` '
 
     | 
  
  
    | 
      136
     | 
    
      		     . 'WHERE `type` = \'language\' '
 
     | 
  
  
    | 
      137
     | 
    
      		     . ( ($sLangKey!='') ? ' AND `directory` = \''.$langKey.'\' ' : '')
 
     | 
  
  
    | 
      138
     | 
    
      		     . 'ORDER BY `directory`';
 
     | 
  
  
    | 
      139
     | 
    
      		return $this->_oDb->query($sql);
 
     | 
  
  
    | 
      140
     | 
    
      	}
 
     | 
  
  
    | 
      141
     | 
    
      
 
     | 
  
  
    | 
      142
     | 
    
      	/**
 
     | 
  
  
    | 
      143
     | 
    
      	 * 
 
     | 
  
  
    | 
      144
     | 
    
      	 * @param integer $parent
 
     | 
  
  
    | 
      145
     | 
    
      	 * @return database object with given SQL statement
 
     | 
  
  
    | 
      146
     | 
    
      	 */
 
     | 
  
  
    | 
      147
     | 
    
      	private function _getPageListDbResult ( $parent ) 
 
     | 
  
  
    | 
      148
     | 
    
      	{
     | 
  
  
    | 
      149
     | 
    
      	    $sql = 'SELECT `language`,`tooltip`,'
 
     | 
  
  
    | 
      150
     | 
    
      		     .        '`page_id`,`page_title`,`menu_title`, `page_code`, `parent` '
 
     | 
  
  
    | 
      151
     | 
    
      		     . 'FROM `'.$this->_oDb->TablePrefix.'pages` '
 
     | 
  
  
    | 
      152
     | 
    
      		     . 'WHERE `parent` = '.$parent. ' '
 
     | 
  
  
    | 
      153
     | 
    
      		     . 'ORDER BY `position`';
 
     | 
  
  
    | 
      154
     | 
    
      		return $this->_oDb->query($sql);
 
     | 
  
  
    | 
      155
     | 
    
      	}
 
     | 
  
  
    | 
      156
     | 
    
      
 
     | 
  
  
    | 
      157
     | 
    
      	private function _getPageCodeValues(  $iPageCode=0 )
 
     | 
  
  
    | 
      158
     | 
    
      	{
     | 
  
  
    | 
      159
     | 
    
      		$aRetval = array();
 
     | 
  
  
    | 
      160
     | 
    
      		if( ($oRes = $this->_getPageCodeDbResult($iPageCode)) )
 
     | 
  
  
    | 
      161
     | 
    
      		{
     | 
  
  
    | 
      162
     | 
    
      			while($page = $oRes->fetchRow(MYSQL_ASSOC))
 
     | 
  
  
    | 
      163
     | 
    
      			{
     | 
  
  
    | 
      164
     | 
    
      				if(!$this->_oApp->page_is_visible($page)) {continue;}
     | 
  
  
    | 
      165
     | 
    
      				$aRetval[$page['language']] = $page;
 
     | 
  
  
    | 
      166
     | 
    
      			}
 
     | 
  
  
    | 
      167
     | 
    
      		}
 
     | 
  
  
    | 
      168
     | 
    
      		return $aRetval;
 
     | 
  
  
    | 
      169
     | 
    
      	}
 
     | 
  
  
    | 
      170
     | 
    
      
 
     | 
  
  
    | 
      171
     | 
    
      	private function _getPageList($parent, $this_page=0 )
 
     | 
  
  
    | 
      172
     | 
    
      	{
     | 
  
  
    | 
      173
     | 
    
      		static $entries = array();
 
     | 
  
  
    | 
      174
     | 
    
      		if( ($oLang = $this->_getPageListDbResult($parent)) )
 
     | 
  
  
    | 
      175
     | 
    
      		{
     | 
  
  
    | 
      176
     | 
    
      			while($value = $oLang->fetchRow(MYSQL_ASSOC))
 
     | 
  
  
    | 
      177
     | 
    
      			{
     | 
  
  
    | 
      178
     | 
    
      				if (( $value['page_id'] != $this_page ) )
 
     | 
  
  
    | 
      179
     | 
    
      				{
     | 
  
  
    | 
      180
     | 
    
      					$entries [$value['page_id']]['language'] = $value['language'];
 
     | 
  
  
    | 
      181
     | 
    
      					$entries [$value['page_id']]['menu_title'] = $value['menu_title'];
 
     | 
  
  
    | 
      182
     | 
    
      					$this->_getPageList($value['page_id'], $this_page );
 
     | 
  
  
    | 
      183
     | 
    
      				}
 
     | 
  
  
    | 
      184
     | 
    
      			}
 
     | 
  
  
    | 
      185
     | 
    
      		}
 
     | 
  
  
    | 
      186
     | 
    
      		return $entries;
 
     | 
  
  
    | 
      187
     | 
    
      	}
 
     | 
  
  
    | 
      188
     | 
    
      
 
     | 
  
  
    | 
      189
     | 
    
      
 
     | 
  
  
    | 
      190
     | 
    
          protected function getConfig($sFilename)
 
     | 
  
  
    | 
      191
     | 
    
          {
     | 
  
  
    | 
      192
     | 
    
              if(is_readable($sFilename)){
     | 
  
  
    | 
      193
     | 
    
                  return parse_ini_file($sFilename, true);
 
     | 
  
  
    | 
      194
     | 
    
              }else {
     | 
  
  
    | 
      195
     | 
    
                  return null;
 
     | 
  
  
    | 
      196
     | 
    
              }
 
     | 
  
  
    | 
      197
     | 
    
          }
 
     | 
  
  
    | 
      198
     | 
    
      
 
     | 
  
  
    | 
      199
     | 
    
      
 
     | 
  
  
    | 
      200
     | 
    
      	private function _getAllowedLanguagesFromAddons($sLangKey='')
 
     | 
  
  
    | 
      201
     | 
    
      	{
     | 
  
  
    | 
      202
     | 
    
      		$aLangAddons = array();
 
     | 
  
  
    | 
      203
     | 
    
      		if( ($oLang = $this->_getLangAddonsDbResult($sLangKey)) )
 
     | 
  
  
    | 
      204
     | 
    
      		{
     | 
  
  
    | 
      205
     | 
    
      			while( $aLang = $oLang->fetchRow(MYSQL_ASSOC) )
 
     | 
  
  
    | 
      206
     | 
    
      			{
     | 
  
  
    | 
      207
     | 
    
      				$aLangAddons[$aLang['directory']] = $aLang['name'];
 
     | 
  
  
    | 
      208
     | 
    
      			}
 
     | 
  
  
    | 
      209
     | 
    
      		}
 
     | 
  
  
    | 
      210
     | 
    
      		return $aLangAddons;
 
     | 
  
  
    | 
      211
     | 
    
      	}
 
     | 
  
  
    | 
      212
     | 
    
      
 
     | 
  
  
    | 
      213
     | 
    
      	/**
 
     | 
  
  
    | 
      214
     | 
    
      	 * 
 
     | 
  
  
    | 
      215
     | 
    
      	 * 
 
     | 
  
  
    | 
      216
     | 
    
      	 * @param 
 
     | 
  
  
    | 
      217
     | 
    
      	 * @return array of first visible language pages with defined fields
 
     | 
  
  
    | 
      218
     | 
    
      	 */
 
     | 
  
  
    | 
      219
     | 
    
      	private function _getLanguagesDetailsInUsed ( $sLangKey='' ) 
 
     | 
  
  
    | 
      220
     | 
    
      	{
     | 
  
  
    | 
      221
     | 
    
      		$aRetval = array();
 
     | 
  
  
    | 
      222
     | 
    
      		if( ($oRes = $this->_getLangInUsedDbResult($sLangKey)) ) 
 
     | 
  
  
    | 
      223
     | 
    
      		{
     | 
  
  
    | 
      224
     | 
    
      			while($page = $oRes->fetchRow(MYSQL_ASSOC))
 
     | 
  
  
    | 
      225
     | 
    
      			{
     | 
  
  
    | 
      226
     | 
    
      				if(!$this->_oApp->page_is_visible($page)) {continue;}
     | 
  
  
    | 
      227
     | 
    
      				$aRetval[$page['language']] = $page;
 
     | 
  
  
    | 
      228
     | 
    
      			}
 
     | 
  
  
    | 
      229
     | 
    
      		}
 
     | 
  
  
    | 
      230
     | 
    
      		return $aRetval;
 
     | 
  
  
    | 
      231
     | 
    
      	}
 
     | 
  
  
    | 
      232
     | 
    
      	
 
     | 
  
  
    | 
      233
     | 
    
      	/**
 
     | 
  
  
    | 
      234
     | 
    
      	* m_MultiLingual_Lib::getLangMenuData()
 
     | 
  
  
    | 
      235
     | 
    
      	* 
 
     | 
  
  
    | 
      236
     | 
    
      	* @param mixed $config
 
     | 
  
  
    | 
      237
     | 
    
      	* @param mixed $oApp
 
     | 
  
  
    | 
      238
     | 
    
      	* @return
 
     | 
  
  
    | 
      239
     | 
    
      	*/
 
     | 
  
  
    | 
      240
     | 
    
      	private function _getLangMenuData ( ) 
 
     | 
  
  
    | 
      241
     | 
    
      	{
     | 
  
  
    | 
      242
     | 
    
      		$aTplData = array();
 
     | 
  
  
    | 
      243
     | 
    
      	// get root pages for all used languages
 
     | 
  
  
    | 
      244
     | 
    
      		$aAllowedRootLanguages = $this->_getLanguagesDetailsInUsed( );
 
     | 
  
  
    | 
      245
     | 
    
      		if(sizeof($aAllowedRootLanguages)>1)
 
     | 
  
  
    | 
      246
     | 
    
      		{
     | 
  
  
    | 
      247
     | 
    
      		// get all pages witch the same page_code
 
     | 
  
  
    | 
      248
     | 
    
      			$aMatchingPages = $this->_getPageCodeValues( $this->_oApp->page['page_code'] );
 
     | 
  
  
    | 
      249
     | 
    
      		// remove all pages from list with not avaliable languages
 
     | 
  
  
    | 
      250
     | 
    
      			$aPossibleMatchingPages = array_intersect_key($aMatchingPages, $aAllowedRootLanguages);
 
     | 
  
  
    | 
      251
     | 
    
      		// add Allowed root pages to possible matches
 
     | 
  
  
    | 
      252
     | 
    
      			$aAvailablePages = array_merge($aAllowedRootLanguages, $aPossibleMatchingPages);
 
     | 
  
  
    | 
      253
     | 
    
      			foreach ( $aAvailablePages AS $aPage)
 
     | 
  
  
    | 
      254
     | 
    
      			{
     | 
  
  
    | 
      255
     | 
    
      				$aTplData[] = array(
 
     | 
  
  
    | 
      256
     | 
    
      				    'sIconUrl'         => $this->_oReg->AppRel . 'modules/'
 
     | 
  
  
    | 
      257
     | 
    
      					                    . basename(dirname(__FILE__)) . '/',
 
     | 
  
  
    | 
      258
     | 
    
      				    'bCurrentLanguage' => (($aPage['language'] == $this->_oReg->Language) ? true : false),
 
     | 
  
  
    | 
      259
     | 
    
      				    'sTargetPageUrl'   => $this->_oReg->AppRel . $this->_oReg->PagesDir
 
     | 
  
  
    | 
      260
     | 
    
      				                        . trim($aAvailablePages[$aPage['language']]['link'],'/')
 
     | 
  
  
    | 
      261
     | 
    
      					                    . $this->_oReg->PageExtension,
 
     | 
  
  
    | 
      262
     | 
    
      				    'sPageTitle'       => $aAvailablePages[$aPage['language']]['page_title'],
 
     | 
  
  
    | 
      263
     | 
    
      				    'sFilename'        => strtolower($aAvailablePages[$aPage['language']]['language']),
 
     | 
  
  
    | 
      264
     | 
    
      				    'sImageType'       => $this->_sExtension,
 
     | 
  
  
    | 
      265
     | 
    
      					'sToolTip'         => $aAvailablePages[$aPage['language']]['tooltip']
 
     | 
  
  
    | 
      266
     | 
    
      				);
 
     | 
  
  
    | 
      267
     | 
    
      			}
 
     | 
  
  
    | 
      268
     | 
    
      		}
 
     | 
  
  
    | 
      269
     | 
    
      		return $aTplData;
 
     | 
  
  
    | 
      270
     | 
    
      	}
 
     | 
  
  
    | 
      271
     | 
    
      
 
     | 
  
  
    | 
      272
     | 
    
      	/**
 
     | 
  
  
    | 
      273
     | 
    
      	* m_MultiLingual_Lib::getLangMenu()
 
     | 
  
  
    | 
      274
     | 
    
      	* 
 
     | 
  
  
    | 
      275
     | 
    
      	* @param mixed $config
 
     | 
  
  
    | 
      276
     | 
    
      	* @param mixed $oApp
 
     | 
  
  
    | 
      277
     | 
    
      	* @return
 
     | 
  
  
    | 
      278
     | 
    
      	*/
 
     | 
  
  
    | 
      279
     | 
    
      	private function _getLangMenuTwig ( ) 
 
     | 
  
  
    | 
      280
     | 
    
      	{
     | 
  
  
    | 
      281
     | 
    
      		$loader = new Twig_Loader_Filesystem( dirname(__FILE__).$this->_aTwigLoader['templates_dir'] );
 
     | 
  
  
    | 
      282
     | 
    
      		$twig   = new Twig_Environment( $loader );
 
     | 
  
  
    | 
      283
     | 
    
      		$data['aTargetList']   = $this->_getLangMenuData( );
 
     | 
  
  
    | 
      284
     | 
    
      		return $twig->render($this->_aTwigLoader['default_template'], $data);
 
     | 
  
  
    | 
      285
     | 
    
      	}
 
     | 
  
  
    | 
      286
     | 
    
      
 
     | 
  
  
    | 
      287
     | 
    
          private function _detectIE()
 
     | 
  
  
    | 
      288
     | 
    
          {
     | 
  
  
    | 
      289
     | 
    
              preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $aMatches);
     | 
  
  
    | 
      290
     | 
    
              if (count($aMatches)>1){
     | 
  
  
    | 
      291
     | 
    
                return true;
 
     | 
  
  
    | 
      292
     | 
    
              }
 
     | 
  
  
    | 
      293
     | 
    
              return false;
 
     | 
  
  
    | 
      294
     | 
    
          }
 
     | 
  
  
    | 
      295
     | 
    
          
 
     | 
  
  
    | 
      296
     | 
    
      	public function setExtension($sExtension = 'auto') 
 
     | 
  
  
    | 
      297
     | 
    
      	{   
     | 
  
  
    | 
      298
     | 
    
      		if($sExtension == 'auto' || $sExtension == 'svg') {
     | 
  
  
    | 
      299
     | 
    
      			$this->_sExtension = ($this->_detectIE() == true) ? 'png' : 'svg';
 
     | 
  
  
    | 
      300
     | 
    
      		} else {
     | 
  
  
    | 
      301
     | 
    
      			$this->_sExtension = 'png';
 
     | 
  
  
    | 
      302
     | 
    
      		}
 
     | 
  
  
    | 
      303
     | 
    
      		return;
 
     | 
  
  
    | 
      304
     | 
    
      	}
 
     | 
  
  
    | 
      305
     | 
    
          
 
     | 
  
  
    | 
      306
     | 
    
      	public function getLangMenu() 
 
     | 
  
  
    | 
      307
     | 
    
      	{
     | 
  
  
    | 
      308
     | 
    
      		return $this->_getLangMenuTwig ( );
 
     | 
  
  
    | 
      309
     | 
    
      	}
 
     | 
  
  
    | 
      310
     | 
    
      
 
     | 
  
  
    | 
      311
     | 
    
      	public function updateDefaultPagesCode (  ) 
 
     | 
  
  
    | 
      312
     | 
    
      	{
     | 
  
  
    | 
      313
     | 
    
      		$retVal  = false;
 
     | 
  
  
    | 
      314
     | 
    
      		$aLangs  = $this->_getLanguagesDetailsInUsed(  );
 
     | 
  
  
    | 
      315
     | 
    
      		$entries = $this->_getPageList( 0 );
 
     | 
  
  
    | 
      316
     | 
    
      // fill page_code with page_id for default_language
 
     | 
  
  
    | 
      317
     | 
    
      		while( list( $page_id, $val ) = each ( $entries ) )
 
     | 
  
  
    | 
      318
     | 
    
      		{
     | 
  
  
    | 
      319
     | 
    
      			if( $val['language'] == $this->_oReg->DefaultLanguage ) {
     | 
  
  
    | 
      320
     | 
    
      				if( ($retVal = $this->_updatePageCode((int)$page_id, 'pages', (int)$page_id ))==false ){ break;  }
     | 
  
  
    | 
      321
     | 
    
      			}
 
     | 
  
  
    | 
      322
     | 
    
      		}
 
     | 
  
  
    | 
      323
     | 
    
      		return $retVal;
 
     | 
  
  
    | 
      324
     | 
    
      	}
 
     | 
  
  
    | 
      325
     | 
    
      	
 
     | 
  
  
    | 
      326
     | 
    
      }
 
     |