1
0

BxBaseMenuSwitchLanguage.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaBaseView UNA Base Representation Classes
  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. $aLanguages = BxDolLanguagesQuery::getInstance()->getLanguages(false, true);
  26. if(empty($aLanguages) || !is_array($aLanguages) || count($aLanguages) < 2)
  27. return;
  28. $sLanguage = BxDolLanguages::getInstance()->getCurrentLangName();
  29. $this->setSelected('', $sLanguage);
  30. $oPermalink = BxDolPermalinks::getInstance();
  31. $aBaseLink = parse_url(BX_DOL_URL_ROOT);
  32. $sBaseLink = (!empty($aBaseLink['scheme']) ? $aBaseLink['scheme'] : 'http') . '://' . $aBaseLink['host'];
  33. $sPageLink = $oPermalink->unpermalink($sBaseLink . $_SERVER['REQUEST_URI'], false);
  34. $sPageParams = '';
  35. if(strpos($sPageLink, '?') !== false)
  36. list($sPageLink, $sPageParams) = explode('?', $sPageLink);
  37. $aPageParams = array();
  38. if(!empty($sPageParams))
  39. parse_str($sPageParams, $aPageParams);
  40. $aPageParamsAdd = array();
  41. if(!empty($_SERVER['QUERY_STRING'])) {
  42. parse_str($_SERVER['QUERY_STRING'], $aPageParamsAdd);
  43. if(!empty($aPageParamsAdd) && is_array($aPageParamsAdd))
  44. $aPageParams = array_merge($aPageParams, $aPageParamsAdd);
  45. }
  46. $aItems = array();
  47. foreach( $aLanguages as $sName => $sLang ) {
  48. $aPageParams['lang'] = $sName;
  49. $aItems[] = array(
  50. 'id' => $sName,
  51. 'name' => $sName,
  52. 'class' => '',
  53. 'title' => $this->getItemTitle($sName, $sLang),
  54. 'target' => '_self',
  55. 'icon' => '',
  56. 'link' => bx_html_attribute(bx_append_url_params($oPermalink->permalink($sPageLink), $aPageParams)),
  57. 'onclick' => ''
  58. );
  59. }
  60. $this->_aObject['menu_items'] = $aItems;
  61. }
  62. protected function getItemTitle($sName, $sTitle)
  63. {
  64. return genFlag($sName);
  65. }
  66. }
  67. /** @} */