BxBaseMenuSwitchLanguage.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. protected $_sType;
  15. public function __construct ($aObject, $oTemplate)
  16. {
  17. parent::__construct ($aObject, $oTemplate);
  18. $this->_sType = str_replace('sys_switch_language_', '', $this->_sObject);
  19. }
  20. public function getMenuItems ()
  21. {
  22. $this->loadData();
  23. return parent::getMenuItems();
  24. }
  25. protected function loadData()
  26. {
  27. $aLanguages = BxDolLanguagesQuery::getInstance()->getLanguages(false, true);
  28. if(empty($aLanguages) || !is_array($aLanguages) || count($aLanguages) < 2)
  29. return;
  30. $sLanguage = BxDolLanguages::getInstance()->getCurrentLangName();
  31. $this->setSelected('', $sLanguage);
  32. list($sPageLink, $aPageParams) = $this->{'getBaseUrl' . bx_gen_method_name($this->_sType)}();
  33. $oPermalink = BxDolPermalinks::getInstance();
  34. $sMethod = 'getItemTitle' . bx_gen_method_name($this->_sType);
  35. $aItems = array();
  36. foreach( $aLanguages as $sName => $sLang ) {
  37. $aPageParams['lang'] = $sName;
  38. $aItems[] = array(
  39. 'id' => $sName,
  40. 'name' => $sName,
  41. 'class' => '',
  42. 'title' => $this->$sMethod($sName, $sLang),
  43. 'target' => '_self',
  44. 'icon' => '',
  45. 'link' => bx_html_attribute(bx_append_url_params($oPermalink->permalink($sPageLink), $aPageParams)),
  46. 'onclick' => ''
  47. );
  48. }
  49. $this->_aObject['menu_items'] = $aItems;
  50. }
  51. protected function getBaseUrlPopup()
  52. {
  53. return $this->getBaseUrl($_SERVER['HTTP_REFERER']);
  54. }
  55. protected function getBaseUrlInline()
  56. {
  57. $aBaseLink = parse_url(BX_DOL_URL_ROOT);
  58. $sPageLink = (!empty($aBaseLink['scheme']) ? $aBaseLink['scheme'] : 'http') . '://' . $aBaseLink['host'] . $_SERVER['REQUEST_URI'];
  59. list($sPageLink, $aPageParams) = $this->getBaseUrl($sPageLink);
  60. $aPageParamsAdd = array();
  61. if(!empty($_SERVER['QUERY_STRING'])) {
  62. parse_str($_SERVER['QUERY_STRING'], $aPageParamsAdd);
  63. if(!empty($aPageParamsAdd) && is_array($aPageParamsAdd))
  64. $aPageParams = array_merge($aPageParams, $aPageParamsAdd);
  65. }
  66. return array($sPageLink, $aPageParams);
  67. }
  68. protected function getBaseUrl($sPageLink)
  69. {
  70. $sPageLink = BxDolPermalinks::getInstance()->unpermalink($sPageLink);
  71. $sPageParams = '';
  72. if(strpos($sPageLink, '?') !== false)
  73. list($sPageLink, $sPageParams) = explode('?', $sPageLink);
  74. $aPageParams = array();
  75. if(!empty($sPageParams))
  76. parse_str($sPageParams, $aPageParams);
  77. return array($sPageLink, $aPageParams);
  78. }
  79. protected function getItemTitlePopup($sName, $sTitle)
  80. {
  81. return genFlag($sName) . ' ' . $sTitle;
  82. }
  83. protected function getItemTitleInline($sName, $sTitle)
  84. {
  85. return genFlag($sName);
  86. }
  87. }
  88. /** @} */