- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/message.php
- Класс: CAllForumMessage
- Вызов: CAllForumMessage::CanUserUpdateMessage
static function CanUserUpdateMessage($MID, $arUserGroups, $iUserID = 0, $ExternalPermission = false)
{
$MID = intval($MID);
$arMessage = CForumMessage::GetByIDEx($MID, array("GET_FORUM_INFO" => "Y", "GET_TOPIC_INFO" => "Y", "FILTER" => "N"));
$arTopic = $arMessage["TOPIC_INFO"];
$arForum = $arMessage["FORUM_INFO"];
if ($arMessage)
{
if (!CForumUser::IsLocked($iUserID)):
$strPerms = ($ExternalPermission == false ? CForumNew::GetUserPermission($arTopic["FORUM_ID"], $arUserGroups) : $ExternalPermission);
else:
$strPerms = CForumNew::GetPermissionUserDefault($arTopic["FORUM_ID"], $arUserGroups);
endif;
if ($strPerms >= "Y")
return true;
if ($strPerms < "I" || $arForum["ACTIVE"] !="Y")
return false;
elseif ($strPerms >= "U")
return true;
if ($arTopic["STATE"] != "Y")
return false;
$iUserID = intval($iUserID);
if ($iUserID <= 0 || intval($arMessage["AUTHOR_ID"]) != $iUserID)
return false;
if (COption::GetOptionString("forum", "USER_EDIT_OWN_POST", "Y") == "Y")
return true;
$iCnt = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID"=>$arTopic["ID"], ">ID"=>$MID), True);
if (intval($iCnt) <= 0)
return true;
}
return false;
}