- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/event_user_view.php
- Класс: CAllSocNetEventUserView
- Вызов: CAllSocNetEventUserView::Entity2UserAdd
static function Entity2UserAdd($entityType, $entityID, $userID, $role)
{
global $APPLICATION, $DB, $arSocNetAllowedEntityTypes;
$CacheRelatedUsers = array();
$entityType = trim($entityType);
if (!in_array($entityType, $arSocNetAllowedEntityTypes))
{
$APPLICATION->ThrowException(GetMessage("SONET_EUV_INCORRECT_ENTITY_TYPE"), "ERROR_INCORRECT_ENTITY_TYPE");
return false;
}
$entityID = intval($entityID);
if ($entityID <= 0)
{
$APPLICATION->ThrowException(GetMessage("SONET_EUV_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
return false;
}
$userID = intval($userID);
if ($userID <= 0)
{
$APPLICATION->ThrowException(GetMessage("SONET_EUV_EMPTY_USER_ID"), "ERROR_EMPTY_USER_ID");
return false;
}
if (is_array($role))
{
if (count($role) <= 0)
{
$APPLICATION->ThrowException(GetMessage("SONET_EUV_EMPTY_ROLE"), "ERROR_EMPTY_ROLE");
return false;
}
}
else
{
$role = trim($role);
if ($role == '')
{
$APPLICATION->ThrowException(GetMessage("SONET_EUV_EMPTY_ROLE"), "ERROR_EMPTY_ROLE");
return false;
}
$role = array($role);
}
if (!CSocNetEventUserView::IsEntityEmpty($entityType, $entityID))
{
$arEvents = array();
$arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
foreach ($arSocNetLogEvents as $event_tmp_id => $arLogEventTmp)
{
if (
!array_key_exists("ENTITIES", $arLogEventTmp)
|| !array_key_exists($entityType, $arLogEventTmp["ENTITIES"])
)
continue;
if (
array_key_exists("NO_SET", $arLogEventTmp)
&& $arLogEventTmp["NO_SET"]
)
continue;
$arEvents[] = $event_tmp_id;
if (
array_key_exists("COMMENT_EVENT", $arLogEventTmp)
&& is_array($arLogEventTmp["COMMENT_EVENT"])
&& array_key_exists("EVENT_ID", $arLogEventTmp["COMMENT_EVENT"])
&& $arLogEventTmp["COMMENT_EVENT"]["EVENT_ID"] <> ''
)
$arEvents[] = $arLogEventTmp["COMMENT_EVENT"]["EVENT_ID"];
}
$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedEntityTypes();
foreach ($arSocNetFeaturesSettings as $feature => $arFeature)
{
if (!array_key_exists("subscribe_events", $arFeature))
{
continue;
}
foreach ($arFeature["subscribe_events"] as $event_id_tmp => $arEventIDTmp)
{
if (
array_key_exists("NO_SET", $arEventIDTmp)
&& $arEventIDTmp["NO_SET"]
)
continue;
if (
!array_key_exists("OPERATION", $arEventIDTmp)
|| $arEventIDTmp["OPERATION"] == ''
)
continue;
$featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $arEventIDTmp["OPERATION"]);
if (in_array($featureOperationPerms, $role))
$arEvents[] = $event_id_tmp;
if (
array_key_exists("COMMENT_EVENT", $arEventIDTmp)
&& is_array($arEventIDTmp["COMMENT_EVENT"])
&& array_key_exists("EVENT_ID", $arEventIDTmp["COMMENT_EVENT"])
&& array_key_exists("OPERATION", $arEventIDTmp["COMMENT_EVENT"])
&& $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"] <> ''
&& $arEventIDTmp["COMMENT_EVENT"]["OPERATION"] <> ''
&& ($arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"] != $event_id_tmp)
)
{
$featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $arEventIDTmp["COMMENT_EVENT"]["OPERATION"]);
if (in_array($featureOperationPerms, $role))
$arEvents[] = $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"];
}
}
}
$arEvents = array_unique($arEvents);
foreach($arEvents as $event)
{
$arFieldsEUV = array(
"ENTITY_TYPE" => SONET_ENTITY_GROUP,
"ENTITY_ID" => $entityID,
"EVENT_ID" => $event,
"USER_ID" => $userID,
"USER_ANONYMOUS" => "N"
);
CSocNetEventUserView::Add($arFieldsEUV);
}
}
elseif($entityType == SONET_ENTITY_GROUP)
CSocNetEventUserView::SetGroup($entityID, true);
elseif($entityType == SONET_ENTITY_USER)
CSocNetEventUserView::SetUser($entityID, false, false, true);
}