Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/components/bitrix/forum.topic.read/ |
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/components/bitrix/forum.topic.read/class.php |
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); use Bitrix\Main\Localization\Loc; use Bitrix\Main\Config; use Bitrix\Main; use Bitrix\Forum; Loc::loadMessages(__FILE__); final class ForumTopicRead extends CBitrixComponent { /** @var Main\ErrorCollection */ protected $errorCollection; public function __construct($component = null) { parent::__construct($component); Main\Loader::includeModule("forum"); $this->errorCollection = new Main\ErrorCollection(); } protected function checkRequiredParams() { if (!Main\Loader::includeModule("forum")) { throw new Main\NotSupportedException(Loc::getMessage("F_NO_MODULE")); } $mid = intval($this->arParams["MID"]); $tid = intval($this->arParams["TID"]); $fid = intval($this->arParams["FID"]); if ($mid > 0 && ($res = Forum\MessageTable::getById($mid)->fetch())) { $topic = Forum\Topic::getById($res["TOPIC_ID"]); } else { $mid = 0; $topic = Forum\Topic::getById($tid); } if ($topic["STATE"] == Forum\Topic::STATE_LINK) { $topic = Forum\Topic::getById($topic["TOPIC_ID"]); } if (!($topic instanceof forum\Topic)) { throw new Main\ObjectNotFoundException('Topic is not found.'); } if ($tid != $topic->getId() || $fid != $topic->getForumId()) { $url = $mid > 0 ? $this->arParams["URL_TEMPLATES_MESSAGE"] : $this->arParams["~URL_TEMPLATES_READ"]; $url = CComponentEngine::MakePathFromTemplate($url, [ "FID" => $topic->getForumId(), "TITLE_SEO" => $topic["TITLE_SEO"], "TID" => $topic->getId(), "MID" => $mid > 0 ? $mid : "s" ] ); LocalRedirect($url, false, "301 Moved Permanently"); } } public function executeComponent() { try { $this->checkRequiredParams(); return $this->__includeComponent(); } catch (Main\ObjectNotFoundException $e) { CHTTP::SetStatus("404 Not Found"); ShowError($e->getMessage()); } catch (Main\ArgumentNullException $e) { CHTTP::SetStatus("404 Not Found"); ShowError($e->getMessage()); } catch(Exception $e) { $exceptionHandling = Config\Configuration::getValue("exception_handling"); if($exceptionHandling["debug"]) { throw $e; } else { ShowError($e->getMessage()); } } } }