- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/topic.php
- Класс: CAllForumTopic
- Вызов: CAllForumTopic::CanUserUpdateTopic
static function CanUserUpdateTopic($TID, $arUserGroups, $iUserID = 0, $ExternalPermission = false)
{
$TID = intval($TID);
$iUserID = intval($iUserID);
$arTopic = CForumTopic::GetByID($TID);
if ($arTopic)
{
if ($ExternalPermission === false && CForumUser::IsAdmin($arUserGroups)):
return true;
endif;
if (!CForumUser::IsLocked($iUserID)):
$strPerms = ($ExternalPermission == false ? CForumNew::GetUserPermission($arTopic["FORUM_ID"], $arUserGroups) : $ExternalPermission);
else:
$strPerms = CForumNew::GetPermissionUserDefault($arTopic["FORUM_ID"]);
endif;
if ($strPerms >= "Y")
return true;
elseif ($strPerms < "M" || ($strPerms < "Q" && ($arTopic["APPROVED"] != "Y" || $arTopic["STATE"] != "Y")))
return false;
$arForum = CForumNew::GetByID($arTopic["FORUM_ID"]);
if ($arForum["ACTIVE"] != "Y")
return false;
elseif ($strPerms >= "U")
return true;
$db_res = CForumMessage::GetList(array("ID"=>"ASC"), array("TOPIC_ID"=>$TID, "FORUM_ID"=>$arTopic["FORUM_ID"]), False, 2);
$iCnt = 0; $iOwner = 0;
if (!($db_res && $res = $db_res->Fetch()))
return false;
else
{
$iCnt++; $iOwner = intval($res["AUTHOR_ID"]);
if ($res = $db_res->Fetch())
return false;
}
if ($iOwner <= 0 || $iUserID <= 0 || $iOwner != $iUserID)
return false;
return true;
}
return false;
}