* */ /** * Экшен обработки УРЛа вида /comments/ * * @package application.actions * @since 1.0 */ class ActionComments extends Action { /** * Текущий юзер * * @var ModuleUser_EntityUser|null */ protected $oUserCurrent = null; /** * Главное меню * * @var string */ protected $sMenuHeadItemSelect = 'blog'; /** * Инициализация */ public function Init() { $this->oUserCurrent = $this->User_GetUserCurrent(); } /** * Регистрация евентов */ protected function RegisterEvent() { $this->AddEventPreg('/^\d+$/i', 'EventShowComment'); } /********************************************************************************** ************************ РЕАЛИЗАЦИЯ ЭКШЕНА *************************************** ********************************************************************************** */ /** * Обрабатывает ссылку на конкретный комментарий, определят к какому топику он относится и перенаправляет на него * Актуально при использовании постраничности комментариев */ protected function EventShowComment() { $iCommentId = $this->sCurrentEvent; /** * Проверяем к чему относится комментарий */ if (!($oComment = $this->Comment_GetCommentById($iCommentId))) { return parent::EventNotFound(); } if ($oComment->getTargetType() != 'topic' or !($oTopic = $oComment->getTarget())) { return parent::EventNotFound(); } /** * Определяем необходимую страницу для отображения комментария */ if (!Config::Get('module.comment.use_nested') or !Config::Get('module.comment.nested_per_page')) { Router::Location($oTopic->getUrl() . '#comment' . $oComment->getId()); } $iPage = $this->Comment_GetPageCommentByTargetId($oComment->getTargetId(), $oComment->getTargetType(), $oComment); if ($iPage == 1) { Router::Location($oTopic->getUrl() . '#comment' . $oComment->getId()); } else { Router::Location($oTopic->getUrl() . "?cmtpage={$iPage}#comment" . $oComment->getId()); } exit(); } /** * Выполняется при завершении работы экшена * */ public function EventShutdown() { /** * Загружаем в шаблон необходимые переменные */ $this->Viewer_Assign('sMenuHeadItemSelect', $this->sMenuHeadItemSelect); } }