- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
- Класс: CSocNetLogComponent
- Вызов: CSocNetLogComponent::getCommentRights
static function getCommentRights($arParams)
{
global $USER;
$arResult = array(
"COMMENT_RIGHTS_EDIT" => "N",
"COMMENT_RIGHTS_DELETE" => "N"
);
$logEventId = (
isset($arParams["EVENT_ID"])
&& $arParams["EVENT_ID"] <> ''
? $arParams["EVENT_ID"]
: false
);
$logSourceId = (
isset($arParams["SOURCE_ID"])
&& (int)$arParams["SOURCE_ID"] > 0
? (int)$arParams["SOURCE_ID"]
: false
);
$bCheckAdminSession = (
!isset($arParams["CHECK_ADMIN_SESSION"])
|| $arParams["CHECK_ADMIN_SESSION"] !== "N"
);
$arCommentEventMeta = CSocNetLogTools::FindLogCommentEventByLogEventID($logEventId);
$bHasEditCallback = (
is_array($arCommentEventMeta)
&& isset($arCommentEventMeta["UPDATE_CALLBACK"])
&& (
$arCommentEventMeta["UPDATE_CALLBACK"] === "NO_SOURCE"
|| is_callable($arCommentEventMeta["UPDATE_CALLBACK"])
)
);
$bHasDeleteCallback = (
is_array($arCommentEventMeta)
&& isset($arCommentEventMeta["DELETE_CALLBACK"])
&& (
$arCommentEventMeta["DELETE_CALLBACK"] === "NO_SOURCE"
|| is_callable($arCommentEventMeta["DELETE_CALLBACK"])
)
);
if (
$bHasEditCallback
|| $bHasDeleteCallback
)
{
$arEventMeta = CSocNetLogTools::FindLogEventByID($logEventId);
if (
!empty($arEventMeta)
&& !empty($arEventMeta["COMMENT_EVENT"])
&& !empty($arEventMeta["COMMENT_EVENT"]["METHOD_CANEDIT"])
)
{
$res = call_user_func($arEventMeta["COMMENT_EVENT"]["METHOD_CANEDIT"], array(
"LOG_SOURCE_ID" => $logSourceId,
"USER_ID" => (int)$arParams["USER_ID"]
));
if ($res)
{
$arResult["COMMENT_RIGHTS_EDIT"] = ($bHasEditCallback ? "ALL" : "N");
$arResult["COMMENT_RIGHTS_DELETE"] = ($bHasDeleteCallback ? "ALL" : "N");
}
else
{
if (!empty($arEventMeta["COMMENT_EVENT"]["METHOD_CANEDITOWN"]))
{
$res = call_user_func($arEventMeta["COMMENT_EVENT"]["METHOD_CANEDITOWN"], array(
"LOG_SOURCE_ID" => $logSourceId,
"USER_ID" => (int)$arParams["USER_ID"]
));
if ($res)
{
$arResult["COMMENT_RIGHTS_EDIT"] = ($bHasEditCallback ? "OWN" : "N");
$arResult["COMMENT_RIGHTS_DELETE"] = ($bHasDeleteCallback ? "OWN" : "N");
}
}
elseif ($USER->IsAuthorized())
{
$arResult["COMMENT_RIGHTS_EDIT"] = ($bHasEditCallback ? "OWN" : "N");
$arResult["COMMENT_RIGHTS_DELETE"] = ($bHasDeleteCallback ? "OWN" : "N");
}
}
}
elseif (CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, $bCheckAdminSession))
{
$arResult["COMMENT_RIGHTS_EDIT"] = ($bHasEditCallback ? "ALL" : "N");
$arResult["COMMENT_RIGHTS_DELETE"] = ($bHasDeleteCallback ? "ALL" : "N");
}
elseif ($USER->IsAuthorized())
{
$arResult["COMMENT_RIGHTS_EDIT"] = ($bHasEditCallback ? "OWN" : "N");
$arResult["COMMENT_RIGHTS_DELETE"] = ($bHasDeleteCallback ? "OWN" : "N");
}
}
return $arResult;
}