BxMessengerNavGroupsMenu.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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 Messenger Messenger
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * View block menu.
  13. */
  14. class BxMessengerNavGroupsMenu extends BxTemplMenuProfileFollowings
  15. {
  16. private $_sModule = '';
  17. private $_oModule = null;
  18. private $_oConfig = null;
  19. private $_oDb = null;
  20. private $_aMenuStat = null;
  21. private $_iProfileId = 0;
  22. public function __construct ($aObject, $oTemplate = false)
  23. {
  24. $this->_sModule = 'bx_messenger';
  25. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  26. parent::__construct ($aObject, $this->_oModule->_oTemplate);
  27. $this->_oConfig = &$this->_oModule->_oConfig;
  28. $this->_oDb = &$this->_oModule->_oDb;
  29. $this->_iProfileId = bx_get_logged_profile_id();
  30. if ($this->_iProfileId) {
  31. $this->_aMenuStat = $this->_oModule->_oDb->getUnreadMessagesStat($this->_iProfileId);
  32. }
  33. }
  34. protected function _getMenuItem ($a){
  35. $aMenuItem = parent::_getMenuItem($a);
  36. $iAddon = 0;
  37. if (isset($this->_aMenuStat['groups'])) {
  38. if (isset($aMenuItem['module'])) {
  39. if (isset($this->_aMenuStat['groups'][$aMenuItem['module']]))
  40. $iAddon = count($this->_aMenuStat['groups'][$aMenuItem['module']]);
  41. } else if (!empty($aMenuItem['parent']) &&
  42. isset($this->_aMenuStat['groups'][$aMenuItem['parent']]) &&
  43. isset($this->_aMenuStat['groups'][$aMenuItem['parent']][$aMenuItem['group-id']]))
  44. {
  45. $iAddon = count($this->_aMenuStat['groups'][$aMenuItem['parent']][$aMenuItem['group-id']]);
  46. }
  47. }
  48. $sModule = isset($aMenuItem['module']) ? $aMenuItem['module'] : '';
  49. $aMenuItem['bx_if:addon'] = array (
  50. 'condition' => true,
  51. 'content' => array(
  52. 'addon' => $iAddon,
  53. 'hidden' => !$iAddon ? 'hidden' : '',
  54. 'bx_if:module' => array(
  55. 'condition' => $sModule,
  56. 'content' => array(
  57. 'type' => $sModule
  58. )
  59. )
  60. )
  61. );
  62. return $aMenuItem;
  63. }
  64. public function getMenuItemsRaw(){
  65. $CNF = $this->_oConfig->CNF;
  66. $iProfileId = bx_get_logged_profile_id();
  67. //echo '<pre>';
  68. $aMenuItems = array();
  69. $aGroupsList = $this->_oDb->getMyLotsByGroups($iProfileId);
  70. //print_r($aGroupsList);
  71. //exit;
  72. if (empty($aGroupsList))
  73. return $aMenuItems;
  74. $i = 0;
  75. foreach($aGroupsList as $sModule => $aModule) {
  76. $aMenuItems[$sModule] = [
  77. 'onclick' => "javascript:bx_menu_toggle(this, '" . $this->_sObject . "', '" . $sModule . "')",
  78. 'title' => _t("_{$sModule}"),
  79. 'module' => $sModule,
  80. 'name' => $sModule . $iProfileId,
  81. 'id' => $i++,
  82. ];
  83. $aSubmenu = array();
  84. foreach ($aModule as &$aItem) {
  85. if ($sModule !== BX_MSG_TALK_TYPE_PAGES) {
  86. if ($oContext = BxDolProfile::getInstance($aItem['id'])){
  87. $sIcon = $oContext->getIcon();
  88. $sTitle = html_entity_decode($oContext->getDisplayName());
  89. } else
  90. {
  91. $sIcon = '';
  92. $sTitle = $aItem['name'];
  93. }
  94. }
  95. else
  96. {
  97. $sIcon = $this->_oConfig->getPageIcon();
  98. /*if (!$sIcon)
  99. $sIcon = bx_srv($sModule, 'get_thumb', $aItem['id']);*/
  100. if ($oPage = BxDolPage::getObjectInstanceByURI($aItem['url']))
  101. $sIcon = $oPage->getIcon();
  102. //print_r($oPage);
  103. //$oPage->getIcon();
  104. $sTitle = $aItem[$CNF['FMG_NAME']];
  105. }
  106. $aSubmenu[] = [
  107. 'id' => 'context-' . $aItem['group_id'],
  108. 'name' => 'context-' . $aItem['group_id'],
  109. 'group-id' => $aItem['group_id'],
  110. 'parent' => $sModule,
  111. 'class' => $aItem['name'],
  112. 'link' => 'javascript:void(0)',
  113. 'onclick' => "{$CNF['JSMain']}.loadTalksList(this, { group: 'groups', id: " . (int)$aItem[$CNF['FMGL_GROUP_ID']] . " })",
  114. 'target' => '_self',
  115. 'title' => $sTitle,
  116. 'icon' => $sIcon,
  117. 'active' => 1
  118. ];
  119. }
  120. if (!empty($aSubmenu)){
  121. if (bx_is_api())
  122. $aMenuItems[$sModule]['submenu_object'] = $aSubmenu;
  123. else
  124. {
  125. $aMenuItems[$sModule]['subitems'] = $aSubmenu;
  126. $this->_oTemplate->addJs('utils.js');
  127. }
  128. }
  129. else
  130. unset($aMenuItems[$sModule]);
  131. }
  132. /*echo '<pre>';
  133. print_r($aMenuItems);
  134. exit;*/
  135. return $aMenuItems;
  136. }
  137. }
  138. /** @} */