BxBaseModGeneralMenuViewActions.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  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 BaseGeneral Base classes for modules
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * View entry social actions menu
  13. */
  14. class BxBaseModGeneralMenuViewActions extends BxTemplMenuCustom
  15. {
  16. protected $_sModule;
  17. protected $_oModule;
  18. protected $_oMenuAction;
  19. protected $_oMenuActionsMore;
  20. protected $_oMenuSocialSharing;
  21. protected $_iContentId;
  22. protected $_aContentInfo;
  23. protected $_bDynamicMode;
  24. protected $_bShowAsButton;
  25. protected $_bShowTitle;
  26. public function __construct($aObject, $oTemplate = false)
  27. {
  28. parent::__construct($aObject, $oTemplate);
  29. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  30. $this->setContentId(bx_process_input(bx_get('id'), BX_DATA_INT));
  31. $this->_oMenuActions = null;
  32. $this->_oMenuActionsMore = null;
  33. $this->_oMenuSocialSharing = null;
  34. $this->_bShowAsButton = true;
  35. $this->_bShowTitle = false;
  36. }
  37. public function setContentId($iContentId)
  38. {
  39. $this->_iContentId = (int)$iContentId;
  40. $this->_aContentInfo = $this->_oModule->_oDb->getContentInfoById($this->_iContentId);
  41. if($this->_aContentInfo)
  42. $this->addMarkers(array('content_id' => (int)$this->_iContentId));
  43. }
  44. protected function _getMenuItemDefault ($aItem)
  45. {
  46. $aItem['class_wrp'] = 'bx-base-general-entity-action' . (!empty($aItem['class_wrp']) ? ' ' . $aItem['class_wrp'] : '');
  47. if($this->_bShowAsButton)
  48. $aItem['class_link'] = 'bx-btn' . (!empty($aItem['class_link']) ? ' ' . $aItem['class_link'] : '');
  49. if(!$this->_bShowTitle)
  50. $aItem['bx_if:title']['condition'] = false;
  51. return parent::_getMenuItemDefault ($aItem);
  52. }
  53. protected function _getMenuItemView($aItem, $aParams = array())
  54. {
  55. $CNF = &$this->_oModule->_oConfig->CNF;
  56. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  57. if(empty($sObject) && !empty($CNF['OBJECT_VIEWS']))
  58. $sObject = $CNF['OBJECT_VIEWS'];
  59. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  60. if(empty($iId))
  61. $iId = $this->_iContentId;
  62. $oObject = !empty($sObject) ? BxDolView::getObjectInstance($sObject, $iId) : false;
  63. if(!$oObject || !$oObject->isEnabled())
  64. return '';
  65. return $oObject->getElementBlock(array(
  66. 'dynamic_mode' => $this->_bDynamicMode,
  67. 'show_do_view_as_button' => $this->_bShowAsButton,
  68. 'show_do_view_label' => $this->_bShowTitle
  69. ));
  70. }
  71. protected function _getMenuItemComment($aItem, $aParams = array())
  72. {
  73. $CNF = &$this->_oModule->_oConfig->CNF;
  74. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  75. if(empty($sObject) && !empty($CNF['OBJECT_COMMENTS']))
  76. $sObject = $CNF['OBJECT_COMMENTS'];
  77. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  78. if(empty($iId))
  79. $iId = $this->_iContentId;
  80. $oObject = !empty($sObject) ? BxTemplCmts::getObjectInstance($sObject, $iId) : false;
  81. if(!$oObject || !$oObject->isEnabled())
  82. return '';
  83. return $oObject->getElementBlock(array(
  84. 'dynamic_mode' => $this->_bDynamicMode,
  85. 'show_do_comment_as_button' => $this->_bShowAsButton,
  86. 'show_do_comment_label' => $this->_bShowTitle
  87. ));
  88. }
  89. protected function _getMenuItemVote($aItem, $aParams = array())
  90. {
  91. $CNF = &$this->_oModule->_oConfig->CNF;
  92. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  93. if(empty($sObject) && !empty($CNF['OBJECT_VOTES']))
  94. $sObject = $CNF['OBJECT_VOTES'];
  95. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  96. if(empty($iId))
  97. $iId = $this->_iContentId;
  98. $oObject = !empty($sObject) ? BxDolVote::getObjectInstance($sObject, $iId) : false;
  99. if(!$oObject || !$oObject->isEnabled())
  100. return '';
  101. return $oObject->getElementBlock(array(
  102. 'dynamic_mode' => $this->_bDynamicMode,
  103. 'show_do_vote_as_button' => $this->_bShowAsButton,
  104. 'show_do_vote_label' => $this->_bShowTitle
  105. ));
  106. }
  107. protected function _getMenuItemScore($aItem, $aParams = array())
  108. {
  109. $CNF = &$this->_oModule->_oConfig->CNF;
  110. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  111. if(empty($sObject) && !empty($CNF['OBJECT_SCORES']))
  112. $sObject = $CNF['OBJECT_SCORES'];
  113. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  114. if(empty($iId))
  115. $iId = $this->_iContentId;
  116. $oObject = !empty($sObject) ? BxDolScore::getObjectInstance($sObject, $iId) : false;
  117. if(!$oObject || !$oObject->isEnabled())
  118. return '';
  119. return $oObject->getElementBlock(array(
  120. 'dynamic_mode' => $this->_bDynamicMode,
  121. 'show_do_vote_as_button' => $this->_bShowAsButton,
  122. 'show_do_vote_label' => $this->_bShowTitle
  123. ));
  124. }
  125. protected function _getMenuItemFavorite($aItem, $aParams = array())
  126. {
  127. $CNF = &$this->_oModule->_oConfig->CNF;
  128. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  129. if(empty($sObject) && !empty($CNF['OBJECT_FAVORITES']))
  130. $sObject = $CNF['OBJECT_FAVORITES'];
  131. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  132. if(empty($iId))
  133. $iId = $this->_iContentId;
  134. $oObject = !empty($sObject) ? BxDolFavorite::getObjectInstance($sObject, $iId) : false;
  135. if(!$oObject || !$oObject->isEnabled())
  136. return '';
  137. return $oObject->getElementBlock(array(
  138. 'dynamic_mode' => $this->_bDynamicMode,
  139. 'show_do_favorite_as_button' => $this->_bShowAsButton,
  140. 'show_do_favorite_label' => $this->_bShowTitle
  141. ));
  142. }
  143. protected function _getMenuItemFeature($aItem, $aParams = array())
  144. {
  145. $CNF = &$this->_oModule->_oConfig->CNF;
  146. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  147. if(empty($sObject) && !empty($CNF['OBJECT_FEATURED']))
  148. $sObject = $CNF['OBJECT_FEATURED'];
  149. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  150. if(empty($iId))
  151. $iId = $this->_iContentId;
  152. $oObject = !empty($sObject) ? BxDolFeature::getObjectInstance($sObject, $iId) : false;
  153. if(!$oObject || !$oObject->isEnabled())
  154. return '';
  155. return $oObject->getElementBlock(array(
  156. 'dynamic_mode' => $this->_bDynamicMode,
  157. 'show_do_feature_as_button' => $this->_bShowAsButton,
  158. 'show_do_feature_label' => $this->_bShowTitle
  159. ));
  160. }
  161. protected function _getMenuItemRepost($aItem, $aParams = array())
  162. {
  163. $CNF = &$this->_oModule->_oConfig->CNF;
  164. $sAction = !empty($aParams['action']) ? $aParams['action'] : '';
  165. if(empty($sAction))
  166. $sAction = 'added';
  167. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  168. if(empty($iId))
  169. $iId = $this->_iContentId;
  170. if(!BxDolRequest::serviceExists('bx_timeline', 'get_repost_element_block'))
  171. return '';
  172. return BxDolService::call('bx_timeline', 'get_repost_element_block', array(bx_get_logged_profile_id(), $this->_oModule->_oConfig->getName(), $sAction, $iId, array(
  173. 'show_do_repost_as_button' => $this->_bShowAsButton,
  174. 'show_do_repost_text' => $this->_bShowTitle
  175. )));
  176. }
  177. protected function _getMenuItemReport($aItem, $aParams = array())
  178. {
  179. $CNF = &$this->_oModule->_oConfig->CNF;
  180. $sObject = !empty($aParams['object']) ? $aParams['object'] : '';
  181. if(empty($sObject) && !empty($CNF['OBJECT_REPORTS']))
  182. $sObject = $CNF['OBJECT_REPORTS'];
  183. $iId = !empty($aParams['id']) ? (int)$aParams['id'] : '';
  184. if(empty($iId))
  185. $iId = $this->_iContentId;
  186. $oObject = !empty($sObject) ? BxDolReport::getObjectInstance($sObject, $iId) : false;
  187. if(!$oObject || !$oObject->isEnabled())
  188. return '';
  189. return $oObject->getElementBlock(array(
  190. 'dynamic_mode' => $this->_bDynamicMode,
  191. 'show_do_report_as_button' => $this->_bShowAsButton,
  192. 'show_do_report_label' => $this->_bShowTitle
  193. ));
  194. }
  195. protected function _getMenuItemSocialSharingFacebook($aItem)
  196. {
  197. return $this->_getMenuItemByNameSocialSharing($aItem);
  198. }
  199. protected function _getMenuItemSocialSharingGoogleplus($aItem)
  200. {
  201. return $this->_getMenuItemByNameSocialSharing($aItem);
  202. }
  203. protected function _getMenuItemSocialSharingTwitter($aItem)
  204. {
  205. return $this->_getMenuItemByNameSocialSharing($aItem);
  206. }
  207. protected function _getMenuItemSocialSharingPinterest($aItem)
  208. {
  209. return $this->_getMenuItemByNameSocialSharing($aItem);
  210. }
  211. protected function _getMenuItemByNameActions($aItem, $aParams = array())
  212. {
  213. $CNF = &$this->_oModule->_oConfig->CNF;
  214. if(empty($this->_oMenuActions)) {
  215. $sObjectMenu = !empty($aParams['object_menu']) ? $aParams['object_menu'] : '';
  216. if(empty($sObjectMenu) && !empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']))
  217. $sObjectMenu = $CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY'];
  218. if(empty($sObjectMenu))
  219. return '';
  220. $this->_oMenuActions = BxDolMenu::getObjectInstance($sObjectMenu);
  221. $this->_oMenuActions->setContentId($this->_iContentId);
  222. }
  223. $aItem = $this->_oMenuActions->getMenuItem($aItem['name']);
  224. if(empty($aItem) || !is_array($aItem))
  225. return false;
  226. return $this->_getMenuItemDefault($aItem);
  227. }
  228. protected function _getMenuItemByNameSocialSharing($aItem, $aParams = array())
  229. {
  230. if(empty($this->_oMenuSocialSharing)) {
  231. $this->_oMenuSocialSharing = BxDolMenu::getObjectInstance('sys_social_sharing');
  232. $this->_oMenuSocialSharing->addMarkers($this->_aMarkers);
  233. }
  234. $aItem = $this->_oMenuSocialSharing->getMenuItem($aItem['name']);
  235. if(empty($aItem) || !is_array($aItem))
  236. return false;
  237. return $this->_getMenuItemDefault($aItem);
  238. }
  239. protected function _getMenuItemByNameActionsMore($aItem)
  240. {
  241. $CNF = &$this->_oModule->_oConfig->CNF;
  242. if(empty($this->_oMenuActionsMore)) {
  243. if(empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']))
  244. return '';
  245. $this->_oMenuActionsMore = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']);
  246. $this->_oMenuActionsMore->setContentId($this->_iContentId);
  247. }
  248. $aItem = $this->_oMenuActionsMore->getMenuItem($aItem['name']);
  249. if(empty($aItem) || !is_array($aItem))
  250. return false;
  251. return $this->_getMenuItemDefault($aItem);
  252. }
  253. }
  254. /** @} */