1
0

BxBaseModGroupsFormsEntryHelper.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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 BaseGroups Base classes for groups modules
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * Group profile forms functions
  13. */
  14. class BxBaseModGroupsFormsEntryHelper extends BxBaseModProfileFormsEntryHelper
  15. {
  16. public function __construct($oModule)
  17. {
  18. parent::__construct($oModule);
  19. }
  20. protected function _getProfileAndContentData ($iContentId)
  21. {
  22. $CNF = &$this->_oModule->_oConfig->CNF;
  23. $aContentInfo = $this->_oModule->_oDb->getContentInfoById($iContentId);
  24. if(!$aContentInfo)
  25. return array(false, false);
  26. $oProfile = BxDolProfile::getInstanceMagic($aContentInfo[$CNF['FIELD_AUTHOR']]);
  27. return array($oProfile, $aContentInfo);
  28. }
  29. protected function _processPermissionsCheckForViewDataForm ($aContentInfo, $oProfile)
  30. {
  31. $sMsg = parent::_processPermissionsCheckForViewDataForm ($aContentInfo, $oProfile);
  32. $oPrivacy = BxDolPrivacy::getObjectInstance($this->_oModule->_oConfig->CNF['OBJECT_PRIVACY_VIEW']);
  33. if ($sMsg && $oPrivacy->isPartiallyVisible($aContentInfo[$this->_oModule->_oConfig->CNF['FIELD_ALLOW_VIEW_TO']]))
  34. return '';
  35. return $sMsg;
  36. }
  37. public function onDataAddAfter ($iAccountId, $iContentId)
  38. {
  39. if ($s = parent::onDataAddAfter($iAccountId, $iContentId))
  40. return $s;
  41. if (!($oGroupProfile = BxDolProfile::getInstanceByContentAndType($iContentId, $this->_oModule->_oConfig->getName())))
  42. return '';
  43. $this->makeAuthorAdmin ($oGroupProfile, bx_get('initial_members'));
  44. $this->inviteMembers ($oGroupProfile, bx_get('initial_members'));
  45. return '';
  46. }
  47. public function onDataEditAfter ($iContentId, $aContentInfo, $aTrackTextFieldsChanges, $oProfile, $oForm)
  48. {
  49. if ($s = parent::onDataEditAfter($iContentId, $aContentInfo, $aTrackTextFieldsChanges, $oProfile, $oForm))
  50. return $s;
  51. if (!($oGroupProfile = BxDolProfile::getInstanceByContentAndType($iContentId, $this->_oModule->_oConfig->getName())))
  52. return '';
  53. $this->inviteMembers ($oGroupProfile, bx_get('initial_members'));
  54. return '';
  55. }
  56. protected function redirectAfterEdit($aContentInfo)
  57. {
  58. $CNF = &$this->_oModule->_oConfig->CNF;
  59. $sUrl = '';
  60. if (bx_get('initial_members') && isset($CNF['URL_ENTRY_FANS'])){
  61. $sUrl = $CNF['URL_ENTRY_FANS'] . '&profile_id=' . $aContentInfo['profile_id'];
  62. }
  63. else{
  64. $sUrl = 'page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $aContentInfo[$CNF['FIELD_ID']];
  65. }
  66. bx_alert($this->_oModule->getName(), 'redirect_after_edit', 0, false, array(
  67. 'content' => $aContentInfo,
  68. 'override_result' => &$sUrl,
  69. ));
  70. $this->_redirectAndExit($sUrl);
  71. }
  72. public function onDataDeleteAfter ($iContentId, $aContentInfo, $oProfile)
  73. {
  74. $CNF = &$this->_oModule->_oConfig->CNF;
  75. $oGroupProfile = BxDolProfile::getInstanceByContentAndType($iContentId, $this->_oModule->_oConfig->getName());
  76. if ($oGroupProfile && isset($CNF['TABLE_ADMINS']))
  77. $this->_oModule->_oDb->deleteAdminsByGroupId($oGroupProfile->id());
  78. if (isset($CNF['OBJECT_CONNECTIONS']) && $oGroupProfile && ($oConnection = BxDolConnection::getObjectInstance($CNF['OBJECT_CONNECTIONS'])))
  79. $oConnection->onDeleteInitiatorAndContent($oGroupProfile->id());
  80. if((isset($CNF['OBJECT_PRIVACY_VIEW']) && $oPrivacyView = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_VIEW'])) !== false)
  81. $oPrivacyView->deleteGroupCustomByContentId($iContentId);
  82. if((isset($CNF['OBJECT_PRIVACY_POST']) && $oPrivacyPost = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_POST'])) !== false)
  83. $oPrivacyPost->deleteGroupCustomByContentId($iContentId);
  84. return '';
  85. }
  86. protected function inviteMembers ($oGroupProfile, $aInitialProfiles)
  87. {
  88. $CNF = &$this->_oModule->_oConfig->CNF;
  89. if(empty($CNF['OBJECT_CONNECTIONS']) || !$aInitialProfiles)
  90. return;
  91. $oConnection = BxDolConnection::getObjectInstance($CNF['OBJECT_CONNECTIONS']);
  92. if(!$oConnection)
  93. return;
  94. $iGroupId = $oGroupProfile->id();
  95. if (!is_array($aInitialProfiles))
  96. $aInitialProfiles = [$aInitialProfiles];
  97. // insert invited members, so they will join without confirmation
  98. foreach($aInitialProfiles as $iProfileId) {
  99. $oProfile = BxDolProfile::getInstance($iProfileId);
  100. if(!$oProfile)
  101. continue;
  102. if($oConnection->isConnected($iGroupId, $iProfileId, true) || $oConnection->isConnected($iGroupId, $iProfileId))
  103. continue;
  104. $this->_oModule->serviceAddMutualConnection ($iGroupId, $iProfileId, true);
  105. }
  106. }
  107. /**
  108. * Make author admin if their is in initial invitations list
  109. * @param $oGroupProfile group id
  110. * @param $aInitialProfiles array of initial profile ids
  111. * @return nothing
  112. */
  113. protected function makeAuthorAdmin ($oGroupProfile, $aInitialProfiles)
  114. {
  115. $this->makeAdmin (bx_get_logged_profile_id(), $oGroupProfile, $aInitialProfiles);
  116. }
  117. /**
  118. * Make profile admin if he is in initial invitations list
  119. * @param $iProfileId profile id
  120. * @param $oGroupProfile group id
  121. * @param $aInitialProfiles array of initial profile ids
  122. * @return nothing
  123. */
  124. protected function makeAdmin ($iProfileId, $oGroupProfile, $aInitialProfiles)
  125. {
  126. $CNF = &$this->_oModule->_oConfig->CNF;
  127. if (!isset($CNF['OBJECT_CONNECTIONS']) || !$CNF['OBJECT_CONNECTIONS'] || !is_array($aInitialProfiles) || !in_array($iProfileId, $aInitialProfiles))
  128. return;
  129. if (!($oConnection = BxDolConnection::getObjectInstance($CNF['OBJECT_CONNECTIONS'])))
  130. return;
  131. if (!$oConnection->isConnected($oGroupProfile->id(), (int)$iProfileId))
  132. $oConnection->addConnection($oGroupProfile->id(), (int)$iProfileId);
  133. if (!$oConnection->isConnected((int)$iProfileId, $oGroupProfile->id()))
  134. $oConnection->addConnection((int)$iProfileId, $oGroupProfile->id());
  135. if (!$this->_oModule->_oDb->isAdmin ($oGroupProfile->id(), $iProfileId))
  136. $this->_oModule->_oDb->toAdmins ($oGroupProfile->id(), $iProfileId);
  137. }
  138. }
  139. /** @} */