8 public static function Add($LOG_ID, $GROUP_CODE, $bShare =
false, $followSet =
true)
12 static $logDataCache =
array();
14 if (is_array($GROUP_CODE))
17 self::$state[(int)$LOG_ID][
'current'] = $GROUP_CODE;
19 foreach($GROUP_CODE as $GROUP_CODE_TMP)
24 self::unsubscribeExcludedUsers((
int)$LOG_ID);
25 unset(self::$state[(
int)$LOG_ID]);
31 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetLogRightsAdd");
32 while ($arEvent = $db_events->Fetch())
40 if (!isset($logDataCache[$LOG_ID]))
46 'select' =>
array(
'LOG_UPDATE')
48 if ($logEntry =
$res->fetch())
50 $logDataCache[$LOG_ID] = $logEntry;
56 "GROUP_CODE" => $GROUP_CODE,
60 !empty($logDataCache[$LOG_ID])
61 && !empty($logDataCache[$LOG_ID][
'LOG_UPDATE'])
62 && ($logDataCache[$LOG_ID][
'LOG_UPDATE'] instanceof \
Bitrix\Main\Type\DateTime)
65 $fields[
'LOG_UPDATE'] = $logDataCache[$LOG_ID][
'LOG_UPDATE']->toString();
68 $NEW_RIGHT_ID =
$DB->add(
78 if (preg_match(
'/^U(\d+)$/', $GROUP_CODE,
$matches))
88 'followDate' =>
'CURRENT'
94 && preg_match(
'/^SG(\d+)$/', $GROUP_CODE,
$matches)
98 $arUserIDToCheck =
array();
100 $rsGroupMembers = CSocNetUserToGroup::GetList(
104 "USER_ACTIVE" =>
"Y",
112 while ($arGroupMembers = $rsGroupMembers->Fetch())
114 $arUserIDToCheck[] = $arGroupMembers[
"USER_ID"];
117 if (!empty($arUserIDToCheck))
119 $arUserIDFollowDefault =
array(
123 $arUserIDAlreadySaved =
array();
124 $default_follow_type = COption::GetOptionString(
"socialnetwork",
"follow_default_type",
"Y");
126 $rsFollow = CSocNetLogFollow::GetList(
128 "USER_ID" => $arUserIDToCheck,
131 array(
"USER_ID",
"TYPE")
133 while($arFollow = $rsFollow->Fetch())
135 $arUserIDFollowDefault[$arFollow[
"TYPE"]][] = $arFollow[
"USER_ID"];
138 $rsFollow = CSocNetLogFollow::GetList(
140 "USER_ID" => $arUserIDToCheck,
141 "CODE" =>
"L".$LOG_ID
145 while($arFollow = $rsFollow->Fetch())
147 $arUserIDAlreadySaved[] = $arFollow[
"USER_ID"];
150 foreach($arUserIDToCheck as $iUserID)
154 !in_array($iUserID, $arUserIDAlreadySaved)
157 $default_follow_type ==
"N"
158 && !in_array($iUserID, $arUserIDFollowDefault[
"Y"])
161 $default_follow_type ==
"Y"
162 && in_array($iUserID, $arUserIDFollowDefault[
"N"])
167 CSocNetLogFollow::Add(
171 ConvertTimeStamp(time() + CTimeZone::GetOffset(),
"FULL",
SITE_ID)
179 if(defined(
"BX_COMP_MANAGED_CACHE"))
183 if (\
Bitrix\Main\Loader::includeModule(
'landing'))
188 return $NEW_RIGHT_ID;
195 $RIGHT_ID = intval($RIGHT_ID);
197 if (is_array($GROUP_CODE))
199 foreach($GROUP_CODE as $GROUP_CODE_TMP)
208 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetLogRightsUpdate");
209 while ($arEvent = $db_events->Fetch())
217 $strUpdate =
$DB->PrepareUpdate(
"b_sonet_log_right",
array(
218 "GROUP_CODE" => $GROUP_CODE
220 $DB->Query(
"UPDATE b_sonet_log_right SET ".$strUpdate.
" WHERE ID = ".$RIGHT_ID);
320 public static function SetForSonet($logID, $entity_type, $entity_id, $feature, $operation, $bNew =
false)
326 if ($arRights = $rsRights->Fetch())
335 $perm = CSocNetFeaturesPerms::GetOperationPerm($entity_type, $entity_id, $feature, $operation);
338 $extranet_site_id =
false;
339 if (CModule::IncludeModule(
"extranet") && $extranet_site_id = CExtranet::GetExtranetSiteID())
341 $arLogSites =
array();
343 while($arLogSite = $rsLogSite->Fetch())
345 $arLogSites[] = $arLogSite[
"LID"];
348 if (in_array($extranet_site_id, $arLogSites))
354 if ($bExtranet && $extranet_site_id)
366 $arCode =
array(
"SA");
370 $dbUsersInGroup = CSocNetUserToGroup::GetList(
373 "USER_ID" => $arLog[
"USER_ID"],
375 "GROUP_SITE_ID" => $extranet_site_id,
376 "GROUP_ACTIVE" =>
"Y"
380 array(
"ID",
"GROUP_ID")
382 while ($arUsersInGroup = $dbUsersInGroup->Fetch())
386 $arCode = array_merge(