BxBaseModGeneralMenuViewActions.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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. if($this->_bShowAsButton)
  47. $aItem['class_link'] = 'bx-btn' . (!empty($aItem['class_link']) ? ' ' . $aItem['class_link'] : '');
  48. if(!$this->_bShowTitle)
  49. $aItem['bx_if:title']['condition'] = false;
  50. return parent::_getMenuItemDefault ($aItem);
  51. }
  52. protected function _getMenuItemView($aItem)
  53. {
  54. $CNF = &$this->_oModule->_oConfig->CNF;
  55. $oObject = !empty($CNF['OBJECT_VIEWS']) ? BxDolView::getObjectInstance($CNF['OBJECT_VIEWS'], $this->_iContentId) : false;
  56. if(!$oObject || !$oObject->isEnabled())
  57. return '';
  58. return $oObject->getElementBlock(array(
  59. 'dynamic_mode' => $this->_bDynamicMode,
  60. 'show_do_view_as_button' => $this->_bShowAsButton,
  61. 'show_do_view_label' => $this->_bShowTitle
  62. ));
  63. }
  64. protected function _getMenuItemComment($aItem)
  65. {
  66. $CNF = &$this->_oModule->_oConfig->CNF;
  67. $oObject = !empty($CNF['OBJECT_COMMENTS']) ? BxTemplCmts::getObjectInstance($CNF['OBJECT_COMMENTS'], $this->_iContentId) : false;
  68. if(!$oObject || !$oObject->isEnabled())
  69. return '';
  70. return $oObject->getElementBlock(array(
  71. 'dynamic_mode' => $this->_bDynamicMode,
  72. 'show_do_comment_as_button' => $this->_bShowAsButton,
  73. 'show_do_comment_label' => $this->_bShowTitle
  74. ));
  75. }
  76. protected function _getMenuItemVote($aItem)
  77. {
  78. $CNF = &$this->_oModule->_oConfig->CNF;
  79. $oObject = !empty($CNF['OBJECT_VOTES']) ? BxDolVote::getObjectInstance($CNF['OBJECT_VOTES'], $this->_iContentId) : false;
  80. if(!$oObject || !$oObject->isEnabled())
  81. return '';
  82. return $oObject->getElementBlock(array(
  83. 'dynamic_mode' => $this->_bDynamicMode,
  84. 'show_do_vote_as_button' => $this->_bShowAsButton,
  85. 'show_do_vote_label' => $this->_bShowTitle
  86. ));
  87. }
  88. protected function _getMenuItemScore($aItem)
  89. {
  90. $CNF = &$this->_oModule->_oConfig->CNF;
  91. $oObject = !empty($CNF['OBJECT_SCORES']) ? BxDolScore::getObjectInstance($CNF['OBJECT_SCORES'], $this->_iContentId) : false;
  92. if(!$oObject || !$oObject->isEnabled())
  93. return '';
  94. return $oObject->getElementBlock(array(
  95. 'dynamic_mode' => $this->_bDynamicMode,
  96. 'show_do_vote_as_button' => $this->_bShowAsButton,
  97. 'show_do_vote_label' => $this->_bShowTitle
  98. ));
  99. }
  100. protected function _getMenuItemFavorite($aItem)
  101. {
  102. $CNF = &$this->_oModule->_oConfig->CNF;
  103. $oObject = !empty($CNF['OBJECT_FAVORITES']) ? BxDolFavorite::getObjectInstance($CNF['OBJECT_FAVORITES'], $this->_iContentId) : false;
  104. if(!$oObject || !$oObject->isEnabled())
  105. return '';
  106. return $oObject->getElementBlock(array(
  107. 'dynamic_mode' => $this->_bDynamicMode,
  108. 'show_do_favorite_as_button' => $this->_bShowAsButton,
  109. 'show_do_favorite_label' => $this->_bShowTitle
  110. ));
  111. }
  112. protected function _getMenuItemFeature($aItem)
  113. {
  114. $CNF = &$this->_oModule->_oConfig->CNF;
  115. $oObject = !empty($CNF['OBJECT_FEATURED']) ? BxDolFeature::getObjectInstance($CNF['OBJECT_FEATURED'], $this->_iContentId) : false;
  116. if(!$oObject || !$oObject->isEnabled())
  117. return '';
  118. return $oObject->getElementBlock(array(
  119. 'dynamic_mode' => $this->_bDynamicMode,
  120. 'show_do_feature_as_button' => $this->_bShowAsButton,
  121. 'show_do_feature_label' => $this->_bShowTitle
  122. ));
  123. }
  124. protected function _getMenuItemRepost($aItem)
  125. {
  126. $CNF = &$this->_oModule->_oConfig->CNF;
  127. if(!BxDolRequest::serviceExists('bx_timeline', 'get_repost_element_block'))
  128. return '';
  129. return BxDolService::call('bx_timeline', 'get_repost_element_block', array(bx_get_logged_profile_id(), $this->_oModule->_oConfig->getName(), 'added', $this->_iContentId, array(
  130. 'show_do_repost_as_button' => $this->_bShowAsButton,
  131. 'show_do_repost_text' => $this->_bShowTitle
  132. )));
  133. }
  134. protected function _getMenuItemReport($aItem)
  135. {
  136. $CNF = &$this->_oModule->_oConfig->CNF;
  137. $oObject = !empty($CNF['OBJECT_REPORTS']) ? BxDolReport::getObjectInstance($CNF['OBJECT_REPORTS'], $this->_iContentId) : false;
  138. if(!$oObject || !$oObject->isEnabled())
  139. return '';
  140. return $oObject->getElementBlock(array(
  141. 'dynamic_mode' => $this->_bDynamicMode,
  142. 'show_do_report_as_button' => $this->_bShowAsButton,
  143. 'show_do_report_label' => $this->_bShowTitle
  144. ));
  145. }
  146. protected function _getMenuItemSocialSharingFacebook($aItem)
  147. {
  148. return $this->_getMenuItemByNameSocialSharing($aItem);
  149. }
  150. protected function _getMenuItemSocialSharingGoogleplus($aItem)
  151. {
  152. return $this->_getMenuItemByNameSocialSharing($aItem);
  153. }
  154. protected function _getMenuItemSocialSharingTwitter($aItem)
  155. {
  156. return $this->_getMenuItemByNameSocialSharing($aItem);
  157. }
  158. protected function _getMenuItemSocialSharingPinterest($aItem)
  159. {
  160. return $this->_getMenuItemByNameSocialSharing($aItem);
  161. }
  162. protected function _getMenuItemByNameActions($aItem)
  163. {
  164. $CNF = &$this->_oModule->_oConfig->CNF;
  165. if(empty($this->_oMenuActions)) {
  166. if(empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']))
  167. return '';
  168. $this->_oMenuActions = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']);
  169. $this->_oMenuActions->setContentId($this->_iContentId);
  170. }
  171. $aItem = $this->_oMenuActions->getMenuItem($aItem['name']);
  172. if(empty($aItem) || !is_array($aItem))
  173. return false;
  174. return $this->_getMenuItemDefault($aItem);
  175. }
  176. protected function _getMenuItemByNameSocialSharing($aItem)
  177. {
  178. if(empty($this->_oMenuSocialSharing)) {
  179. $this->_oMenuSocialSharing = BxDolMenu::getObjectInstance('sys_social_sharing');
  180. $this->_oMenuSocialSharing->addMarkers(array_merge($this->_aMarkers, array(
  181. 'id' => $this->_iContentId,
  182. 'module' => $this->_oModule->_oConfig->getName(),
  183. )));
  184. }
  185. $aItem = $this->_oMenuSocialSharing->getMenuItem($aItem['name']);
  186. if(empty($aItem) || !is_array($aItem))
  187. return false;
  188. return $this->_getMenuItemDefault($aItem);
  189. }
  190. protected function _getMenuItemByNameActionsMore($aItem)
  191. {
  192. $CNF = &$this->_oModule->_oConfig->CNF;
  193. if(empty($this->_oMenuActionsMore)) {
  194. if(empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']))
  195. return '';
  196. $this->_oMenuActionsMore = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']);
  197. $this->_oMenuActionsMore->setContentId($this->_iContentId);
  198. }
  199. $aItem = $this->_oMenuActionsMore->getMenuItem($aItem['name']);
  200. if(empty($aItem) || !is_array($aItem))
  201. return false;
  202. return $this->_getMenuItemDefault($aItem);
  203. }
  204. }
  205. /** @} */