7 public static function SetUser($entityID, $feature =
false, $permX =
false, $bSetFeatures =
false)
11 $CacheRelatedUsers =
array();
13 $entityID = intval($entityID);
16 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_EMPTY_ENTITY_ID"),
"ERROR_EMPTY_ENTITY_ID");
21 $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
23 foreach ($arSocNetLogEvents as $event_tmp_id => $arLogEventTmp)
26 !array_key_exists(
"ENTITIES", $arLogEventTmp)
32 array_key_exists(
"NO_SET", $arLogEventTmp)
33 && $arLogEventTmp[
"NO_SET"]
43 $event_id[$arLogEventTmp[
"ENTITIES"][
SONET_ENTITY_USER][
"OPERATION"]] = $event_tmp_id;
46 array_key_exists(
"COMMENT_EVENT", $arLogEventTmp)
47 && is_array($arLogEventTmp[
"COMMENT_EVENT"])
48 && array_key_exists(
"OPERATION", $arLogEventTmp[
"COMMENT_EVENT"])
49 && array_key_exists(
"EVENT_ID", $arLogEventTmp[
"COMMENT_EVENT"])
50 && $arLogEventTmp[
"COMMENT_EVENT"][
"OPERATION"] <>
''
51 && $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
52 && $arLogEventTmp[
"ENTITIES"][
SONET_ENTITY_USER][
"OPERATION"] != $arLogEventTmp[
"COMMENT_EVENT"][
"OPERATION"]
54 $event_id[$arLogEventTmp[
"COMMENT_EVENT"][
"OPERATION"]] = $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
57 if ($feature && !array_key_exists($feature, $event_id))
60 if ($feature && !is_array($feature))
61 $event_id =
array($feature => $event_id[$feature]);
63 foreach ($event_id as $op =>
$event)
67 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_ERROR_DELETE"),
"ERROR_DELETE");
76 $event_comment = $arCommentEvent[
"EVENT_ID"];
77 if (!in_array($event_comment, $event_id))
78 $ar_event_tmp[] = $event_comment;
81 foreach($ar_event_tmp as $event_tmp)
83 if ($feature && $permX)
96 $arRelatedUsers =
array();
101 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
103 while ($arFriends = $dbFriends->Fetch())
105 $friendID = (($entityID == $arFriends[
"FIRST_USER_ID"]) ? $arFriends[
"SECOND_USER_ID"] : $arFriends[
"FIRST_USER_ID"]);
106 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID);
110 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
112 while ($arFriends = $dbFriends->Fetch())
114 $friendID = (($entityID == $arFriends[
"FIRST_USER_ID"]) ? $arFriends[
"SECOND_USER_ID"] : $arFriends[
"FIRST_USER_ID"]);
115 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID);
118 while ($arFriends2 = $dbFriends2->Fetch())
120 $friendID2 = (($friendID == $arFriends2[
"FIRST_USER_ID"]) ? $arFriends2[
"SECOND_USER_ID"] : $arFriends2[
"FIRST_USER_ID"]);
121 if ($friendID2 != $entityID)
122 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID2,
"user_im_id" => $friendID);
127 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
130 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => 0);
133 $arRelatedUsers =
false;
137 if (!empty($arRelatedUsers))
138 $arRelatedUsers = array_unique($arRelatedUsers);
142 if($arRelatedUsers && is_array($arRelatedUsers))
144 foreach($arRelatedUsers as $arRelatedUserID)
148 "ENTITY_ID" => $arRelatedUserID[
"entity_id"],
149 "EVENT_ID" => $event_tmp,
150 "USER_ID" => $arRelatedUserID[
"user_id"],
151 "USER_ANONYMOUS" =>
"N"
154 if (array_key_exists(
"user_im_id", $arRelatedUserID))
155 $arFields[
"USER_IM_ID"] = $arRelatedUserID[
"user_im_id"];
170 elseif($arRelatedUsers ===
false)
174 "ENTITY_ID" => $entityID,
175 "EVENT_ID" => $event_tmp,
177 "USER_ANONYMOUS" =>
"Y"
196 $arActiveFeatures = array_keys(CSocNetFeatures::GetActiveFeaturesNames(
SONET_ENTITY_USER, $entityID));
197 foreach ($arActiveFeatures as $feature)
206 public static function SetGroup($entityID, $bSetFeatures =
false)
210 $entityID = intval($entityID);
213 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_EMPTY_ENTITY_ID"),
"ERROR_EMPTY_ENTITY_ID");
217 $arGroup = CSocNetGroup::GetByID($entityID);
220 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_NO_ENTITY"),
"SONET_EUV_NO_ENTITY");
224 $arLogEvent =
array();
225 $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
227 foreach ($arSocNetLogEvents as $event_tmp_id => $arLogEventTmp)
230 !array_key_exists(
"ENTITIES", $arLogEventTmp)
236 array_key_exists(
"NO_SET", $arLogEventTmp)
237 && $arLogEventTmp[
"NO_SET"]
241 $arLogEvent[] = $event_tmp_id;
244 array_key_exists(
"COMMENT_EVENT", $arLogEventTmp)
245 && is_array($arLogEventTmp[
"COMMENT_EVENT"])
246 && array_key_exists(
"EVENT_ID", $arLogEventTmp[
"COMMENT_EVENT"])
247 && $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
249 $arLogEvent[] = $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
251 $arLogEvent = array_unique($arLogEvent);
253 foreach ($arLogEvent as $event_tmp_id)
257 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_ERROR_DELETE"),
"ERROR_DELETE");
265 "GROUP_ID" => $entityID,
275 foreach ($arLogEvent as $event_tmp_id)
279 "ENTITY_ID" => $entityID,
280 "EVENT_ID" => $event_tmp_id,
282 "USER_ANONYMOUS" =>
"N"
300 $arActiveFeatures = array_keys(CSocNetFeatures::GetActiveFeaturesNames(
SONET_ENTITY_GROUP, $entityID));
301 foreach ($arActiveFeatures as $feature)
310 public static function SetFeature($entityType, $entityID, $feature, $op =
false, $permX =
false, $bCheckEmpty =
false)
315 $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc();
317 $CacheRelatedUsers =
array();
319 $entityType = trim($entityType);
322 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_INCORRECT_ENTITY_TYPE"),
"ERROR_INCORRECT_ENTITY_TYPE");
326 $entityID = intval($entityID);
329 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_EMPTY_ENTITY_ID"),
"ERROR_EMPTY_ENTITY_ID");
346 array_key_exists(
"NO_SET", $arEventIDTmp)
347 && $arEventIDTmp[
"NO_SET"]
352 !array_key_exists(
"ENTITIES", $arEventIDTmp)
353 || !array_key_exists($entityType, $arEventIDTmp[
"ENTITIES"])
357 $event_id[$arEventIDTmp[
"OPERATION"]][] = $event_id_tmp;
360 array_key_exists(
"COMMENT_EVENT", $arEventIDTmp)
361 && is_array($arEventIDTmp[
"COMMENT_EVENT"])
362 && array_key_exists(
"OPERATION", $arEventIDTmp[
"COMMENT_EVENT"])
363 && $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"] <>
''
365 $event_id[$arEventIDTmp[
"OPERATION"]][] = $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
367 if (is_array($event_id[$arEventIDTmp[
"OPERATION"]]))
368 $event_id[$arEventIDTmp[
"OPERATION"]] = array_unique($event_id[$arEventIDTmp[
"OPERATION"]]);
382 array_key_exists(
"NO_SET", $arEventIDTmp)
383 && $arEventIDTmp[
"NO_SET"]
388 !array_key_exists(
"ENTITIES", $arEventIDTmp)
389 || !array_key_exists($entityType, $arEventIDTmp[
"ENTITIES"])
394 !array_key_exists(
"OPERATION", $arEventIDTmp)
395 || $arEventIDTmp[
"OPERATION"] ==
''
399 $arOpTmp[] = $arEventIDTmp[
"OPERATION"];
402 array_key_exists(
"COMMENT_EVENT", $arEventIDTmp)
403 && is_array($arEventIDTmp[
"COMMENT_EVENT"])
404 && array_key_exists(
"OPERATION", $arEventIDTmp[
"COMMENT_EVENT"])
405 && $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"] <>
''
407 $arOpTmp[] = $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"];
410 if (is_array($arOpTmp))
411 $arOpTmp = array_unique($arOpTmp);
413 if (in_array($op, $arOpTmp))
417 if ($arEventIDTmp[
"OPERATION"] == $op)
418 $event_id[$op][] = $event_id_tmp;
421 array_key_exists(
"COMMENT_EVENT", $arEventIDTmp)
422 && is_array($arEventIDTmp[
"COMMENT_EVENT"])
423 && array_key_exists(
"OPERATION", $arEventIDTmp[
"COMMENT_EVENT"])
424 && $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"] == $op
426 $event_id[$op][] = $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
428 if (is_array($event_id[$op]))
429 $event_id[$op] = array_unique($event_id[$op]);
437 intval($entityID) > 0
438 && array_key_exists($entityType, $arSocNetAllowedSubscribeEntityTypesDesc)
439 && array_key_exists(
"CLASS_DESC_GET", $arSocNetAllowedSubscribeEntityTypesDesc[$entityType])
440 && array_key_exists(
"METHOD_DESC_GET", $arSocNetAllowedSubscribeEntityTypesDesc[$entityType])
442 $arEntityTmp = call_user_func(
444 $arSocNetAllowedSubscribeEntityTypesDesc[$entityType][
"CLASS_DESC_GET"],
445 $arSocNetAllowedSubscribeEntityTypesDesc[$entityType][
"METHOD_DESC_GET"]
450 foreach ($event_id as $op => $arEvent)
452 $arRelatedUsers =
array();
454 if (is_array($arEvent))
456 foreach($arEvent as
$event)
460 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_ERROR_DELETE"),
"ERROR_DELETE");
464 if (!$feature || !$permX)
465 $perm = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $op);
472 && $arEntityTmp[
"VISIBLE"] ==
"N"
479 if (
$perm < $perm_profile)
480 $perm = $perm_profile;
484 array_key_exists($entityType, $CacheRelatedUsers)
485 && array_key_exists($entityID, $CacheRelatedUsers[$entityType])
486 && array_key_exists(
$perm, $CacheRelatedUsers[$entityType][$entityID])
488 $arRelatedUsers = $CacheRelatedUsers[$entityType][$entityID][
$perm];
496 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
498 while ($arFriends = $dbFriends->Fetch())
500 $friendID = (($entityID == $arFriends[
"FIRST_USER_ID"]) ? $arFriends[
"SECOND_USER_ID"] : $arFriends[
"FIRST_USER_ID"]);
501 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID);
505 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
507 while ($arFriends = $dbFriends->Fetch())
509 $friendID = (($entityID == $arFriends[
"FIRST_USER_ID"]) ? $arFriends[
"SECOND_USER_ID"] : $arFriends[
"FIRST_USER_ID"]);
510 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID);
513 while ($arFriends2 = $dbFriends2->Fetch())
515 $friendID2 = (($friendID == $arFriends2[
"FIRST_USER_ID"]) ? $arFriends2[
"SECOND_USER_ID"] : $arFriends2[
"FIRST_USER_ID"]);
516 if ($friendID2 != $entityID)
517 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $friendID2,
"user_im_id" => $friendID);
522 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => $entityID);
525 $arRelatedUsers[] =
array(
"entity_id" => $entityID,
"user_id" => 0);
528 $arRelatedUsers =
false;
531 if (!empty($arRelatedUsers))
532 $arRelatedUsers = array_unique($arRelatedUsers);
544 "GROUP_ID" => $entityID,
553 $arRelatedUsers[] =
$arResult[
"USER_ID"];
559 "GROUP_ID" => $entityID,
568 $arRelatedUsers[] =
$arResult[
"USER_ID"];
574 "GROUP_ID" => $entityID,
583 $arRelatedUsers[] =
$arResult[
"USER_ID"];
586 $arRelatedUsers[] = 0;
589 $arRelatedUsers =
false;
593 if ($arRelatedUsers && is_array($arRelatedUsers) && in_array(0, $arRelatedUsers))
594 $arRelatedUsers =
array(0);
595 elseif ($arRelatedUsers && is_array($arRelatedUsers))
596 $arRelatedUsers = array_unique($arRelatedUsers);
602 if($arRelatedUsers && is_array($arRelatedUsers))
604 foreach($arRelatedUsers as $relatedUserID)
606 if (is_array($relatedUserID))
609 "ENTITY_TYPE" => $entityType,
610 "ENTITY_ID" => $relatedUserID[
"entity_id"],
612 "USER_ID" => $relatedUserID[
"user_id"],
613 "USER_ANONYMOUS" =>
"N"
616 if (array_key_exists(
"user_im_id", $relatedUserID))
617 $arFields[
"USER_IM_ID"] = $relatedUserID[
"user_im_id"];
634 "ENTITY_TYPE" => $entityType,
635 "ENTITY_ID" => $entityID,
637 "USER_ID" => $relatedUserID,
638 "USER_ANONYMOUS" =>
"N"
657 "ENTITY_TYPE" => $entityType,
658 "ENTITY_ID" => $entityID,
661 "USER_ANONYMOUS" =>
"Y"
691 $CacheRelatedUsers =
array();
693 $entityType = trim($entityType);
696 $APPLICATION->ThrowException(
GetMessage(
"SONET_EUV_INCORRECT_ENTITY_TYPE"),
"ERROR_INCORRECT_ENTITY_TYPE");
700 $entityID = intval($entityID);
707 $userID = intval($userID);
716 if (
count($role) <= 0)
730 $role =
array($role);
736 $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
738 foreach ($arSocNetLogEvents as $event_tmp_id => $arLogEventTmp)
741 !array_key_exists(
"ENTITIES", $arLogEventTmp)
742 || !array_key_exists($entityType, $arLogEventTmp[
"ENTITIES"])
747 array_key_exists(
"NO_SET", $arLogEventTmp)
748 && $arLogEventTmp[
"NO_SET"]
752 $arEvents[] = $event_tmp_id;
755 array_key_exists(
"COMMENT_EVENT", $arLogEventTmp)
756 && is_array($arLogEventTmp[
"COMMENT_EVENT"])
757 && array_key_exists(
"EVENT_ID", $arLogEventTmp[
"COMMENT_EVENT"])
758 && $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
760 $arEvents[] = $arLogEventTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
766 if (!array_key_exists(
"subscribe_events", $arFeature))
771 foreach ($arFeature[
"subscribe_events"] as $event_id_tmp => $arEventIDTmp)
774 array_key_exists(
"NO_SET", $arEventIDTmp)
775 && $arEventIDTmp[
"NO_SET"]
780 !array_key_exists(
"OPERATION", $arEventIDTmp)
781 || $arEventIDTmp[
"OPERATION"] ==
''
785 $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $arEventIDTmp[
"OPERATION"]);
786 if (in_array($featureOperationPerms, $role))
787 $arEvents[] = $event_id_tmp;
790 array_key_exists(
"COMMENT_EVENT", $arEventIDTmp)
791 && is_array($arEventIDTmp[
"COMMENT_EVENT"])
792 && array_key_exists(
"EVENT_ID", $arEventIDTmp[
"COMMENT_EVENT"])
793 && array_key_exists(
"OPERATION", $arEventIDTmp[
"COMMENT_EVENT"])
794 && $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
795 && $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"] <>
''
796 && ($arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"] != $event_id_tmp)
799 $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $arEventIDTmp[
"COMMENT_EVENT"][
"OPERATION"]);
800 if (in_array($featureOperationPerms, $role))
801 $arEvents[] = $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
805 $arEvents = array_unique($arEvents);
807 foreach($arEvents as
$event)
809 $arFieldsEUV =
array(
811 "ENTITY_ID" => $entityID,
813 "USER_ID" => $userID,
814 "USER_ANONYMOUS" =>
"N"
873 public static function Delete($entityType, $entityID, $feature =
false,
$event =
false)
877 $arSocNetAllowedSubscribeEntityTypes = CSocNetAllowed::GetAllowedEntityTypes();
879 $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
881 $entityType = trim($entityType);
883 if (!in_array($entityType, CSocNetAllowed::GetAllowedEntityTypes()))
885 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_INCORRECT_ENTITY_TYPE"),
"ERROR_INCORRECT_ENTITY_TYPE");
889 $entityID = intval($entityID);
892 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SONET_EUV_EMPTY_ENTITY_ID"),
"ERROR_EMPTY_ENTITY_ID");
896 $strWhere =
" WHERE ENTITY_TYPE = '".$entityType.
"' AND ENTITY_ID = ".$entityID;
900 $strWhere .=
" AND EVENT_ID = '".$event.
"'";
907 array_key_exists($feature, $arSocNetLogEvents)
908 && array_key_exists(
"ENTITIES", $arSocNetLogEvents[$feature])
909 && array_key_exists($entityType, $arSocNetLogEvents[$feature][
"ENTITIES"])
919 if (array_key_exists($feature, $arSocNetLogEvents))
921 $event_id[] = $feature;
924 array_key_exists(
"COMMENT_EVENT", $arSocNetLogEvents[$feature])
925 && is_array($arSocNetLogEvents[$feature][
"COMMENT_EVENT"])
926 && array_key_exists(
"EVENT_ID", $arSocNetLogEvents[$feature][
"COMMENT_EVENT"])
927 && $arSocNetLogEvents[$feature][
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
929 $event_id[] = $arSocNetLogEvents[$feature][
"COMMENT_EVENT"][
"EVENT_ID"];
941 array_key_exists(
"NO_SET", $arEventIDTmp)
942 && $arEventIDTmp[
"NO_SET"]
948 $event_id[] = $event_id_tmp;
951 array_key_exists(
"COMMENT_EVENT", $arEventIDTmp)
952 && is_array($arEventIDTmp[
"COMMENT_EVENT"])
953 && array_key_exists(
"EVENT_ID", $arEventIDTmp[
"COMMENT_EVENT"])
954 && $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"] <>
''
956 $event_id[] = $arEventIDTmp[
"COMMENT_EVENT"][
"EVENT_ID"];
959 $event_id = array_unique($event_id);
961 $strWhere .=
" AND (";
963 foreach ($event_id as $ev)
967 $strWhere .=
"EVENT_ID = '".$ev.
"'";
974 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_event_user_view".$strWhere,
true);