• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/message.php
  • Класс: CAllForumMessage
  • Вызов: CAllForumMessage::GetMessagePage
static function GetMessagePage($ID, $messagePerPage, $arUserGroups, $TID = 0, $addParams = [])
{
	$ID = intval($ID);
	$TID = intval($TID);
	$messagePerPage = intval($messagePerPage);

	if ($messagePerPage <= 0 || $ID <= 0)
		return 0;

	$addParams = (is_array($addParams) ? $addParams : []);

	$permission = BitrixForumPermission::CAN_READ;
	if (!empty($addParams["PERMISSION_EXTERNAL"]))
	{
		$permission = $addParams["PERMISSION_EXTERNAL"];
	}
	else if ($message = CForumMessage::GetByID($ID, array("FILTER" => "N")))
	{
		$permission = CForumNew::GetUserPermission($message["FORUM_ID"], $arUserGroups);
	}
	else if ($TID > 0 && ($topic = BitrixForumTopic::getById($TID)))
	{
		$permission = CForumNew::GetUserPermission($topic["FORUM_ID"], $arUserGroups);
	}

	$filter = (is_array($addParams["FILTER"]) ? $addParams["FILTER"] : []);
	if ($permission < "Q")
	{
		$filter["APPROVED"] = "Y";
	}
	if ($TID > 0)
	{
		$filter["TOPIC_ID"] = $TID;
	}

	$order = ($addParams["ORDER_DIRECTION"] == "DESC" ? "DESC" : "ASC");
	if ($order == "DESC")
	{
		$filter[">ID"] = $ID;
	}
	else
	{
		$filter[" $order), $filter, true)) / $messagePerPage);
	return ++$iCnt;
}