• Модуль: 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;
}