1
0

BxBaseMenuSwitchLanguage.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup TridentCore Trident Core
  7. * @{
  8. */
  9. /**
  10. * Site main menu representation.
  11. */
  12. class BxBaseMenuSwitchLanguage extends BxTemplMenu
  13. {
  14. public function __construct ($aObject, $oTemplate)
  15. {
  16. parent::__construct ($aObject, $oTemplate);
  17. }
  18. public function getMenuItems ()
  19. {
  20. $this->loadData();
  21. return parent::getMenuItems();
  22. }
  23. protected function loadData()
  24. {
  25. $sLanguage = BxDolLanguages::getInstance()->getCurrentLangName();
  26. $this->setSelected('', $sLanguage);
  27. $oPermalink = BxDolPermalinks::getInstance();
  28. $aBaseLink = parse_url(BX_DOL_URL_ROOT);
  29. $sBaseLink = (!empty($aBaseLink['scheme']) ? $aBaseLink['scheme'] : 'http') . '://' . $aBaseLink['host'];
  30. $sPageLink = $oPermalink->unpermalink($sBaseLink . $_SERVER['REQUEST_URI']);
  31. $sPageParams = '';
  32. if(strpos($sPageLink, '?') !== false)
  33. list($sPageLink, $sPageParams) = explode('?', $sPageLink);
  34. $aPageParams = array();
  35. if(!empty($sPageParams))
  36. parse_str($sPageParams, $aPageParams);
  37. $aPageParamsAdd = array();
  38. if(!empty($_SERVER['QUERY_STRING'])) {
  39. parse_str($_SERVER['QUERY_STRING'], $aPageParamsAdd);
  40. if(!empty($aPageParamsAdd) && is_array($aPageParamsAdd))
  41. $aPageParams = array_merge($aPageParams, $aPageParamsAdd);
  42. }
  43. $aLanguages = BxDolLanguagesQuery::getInstance()->getLanguages(false, true);
  44. $aItems = array();
  45. foreach( $aLanguages as $sName => $sLang ) {
  46. $aPageParams['lang'] = $sName;
  47. $aItems[] = array(
  48. 'id' => $sName,
  49. 'name' => $sName,
  50. 'class' => '',
  51. 'title' => $this->getItemTitle($sName, $sLang),
  52. 'target' => '_self',
  53. 'icon' => '',
  54. 'link' => bx_html_attribute(bx_append_url_params($oPermalink->permalink($sPageLink), $aPageParams)),
  55. 'onclick' => ''
  56. );
  57. }
  58. $this->_aObject['menu_items'] = $aItems;
  59. }
  60. protected function getItemTitle($sName, $sTitle)
  61. {
  62. return genFlag($sName);
  63. }
  64. }
  65. /** @} */