/** * Вывод топиков из определенного блога * */ protected function EventShowBlog() { $sPeriod = 1; // по дефолту 1 день if (in_array(getRequestStr('period'), array(1, 7, 30, 'all'))) { $sPeriod = getRequestStr('period'); } $sBlogUrl = $this->sCurrentEvent; $sShowType = 'newall'; if (!in_array($sShowType, array('discussed', 'top'))) { $sPeriod = 'all'; } /** * Проверяем есть ли блог с таким УРЛ */ if (!($oBlog = $this->Blog_GetBlogByUrl($sBlogUrl))) { return parent::EventNotFound(); } /** * Определяем права на отображение закрытого блога */ if (($oBlog->getType() == 'close' or $oBlog->getType() == 'invite') and (!$this->oUserCurrent or !in_array($oBlog->getId(), $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)))) { $bCloseBlog = true; } else { $bCloseBlog = false; } /** * Меню */ $this->sMenuSubItemSelect = $sShowType == 'newall' ? 'new' : $sShowType; $this->sMenuSubBlogUrl = $oBlog->getUrlFull(); /** * Передан ли номер страницы */ $iPage = $this->GetParamEventMatch($sShowType == 'good' ? 0 : 1, 2) ? $this->GetParamEventMatch($sShowType == 'good' ? 0 : 1, 2) : 1; if ($iPage == 1 and !getRequest('period') and in_array($sShowType, array('discussed', 'top'))) { $this->Viewer_SetHtmlCanonical($oBlog->getUrlFull() . $sShowType . '/'); } if (!$bCloseBlog) { /** * Получаем список топиков */ $aResult = $this->Topic_GetTopicsByBlog($oBlog, $iPage, Config::Get('module.topic.per_page'), $sShowType, $sPeriod == 'all' ? null : $sPeriod * 60 * 60 * 24); /** * Если нет топиков за 1 день, то показываем за неделю (7) */ if (in_array($sShowType, array('discussed', 'top')) and !$aResult['count'] and $iPage == 1 and !getRequest('period')) { $sPeriod = 7; $aResult = $this->Topic_GetTopicsByBlog($oBlog, $iPage, Config::Get('module.topic.per_page'), $sShowType, $sPeriod == 'all' ? null : $sPeriod * 60 * 60 * 24); } $aTopics = $aResult['collection']; /** * Формируем постраничность */ $aPaging = $sShowType == 'good' ? $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), Config::Get('pagination.pages.count'), rtrim($oBlog->getUrlFull(), '/')) : $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), Config::Get('pagination.pages.count'), $oBlog->getUrlFull() . $sShowType, array('period' => $sPeriod)); /** * Получаем число новых топиков в текущем блоге */ $this->iCountTopicsBlogNew = $this->Topic_GetCountTopicsByBlogNew($oBlog); $this->Viewer_Assign('aPaging', $aPaging); $this->Viewer_Assign('aTopics', $aTopics); if (in_array($sShowType, array('discussed', 'top'))) { $this->Viewer_Assign('sPeriodSelectCurrent', $sPeriod); $this->Viewer_Assign('sPeriodSelectRoot', $oBlog->getUrlFull() . $sShowType . '/'); } } /** * Выставляем SEO данные */ $sTextSeo = strip_tags($oBlog->getDescription()); $this->Viewer_SetHtmlDescription(func_text_words($sTextSeo, Config::Get('seo.description_words_count'))); /** * Получаем список юзеров блога */ $aBlogUsersResult = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_USER, 1, Config::Get('module.blog.users_per_page')); $aBlogUsers = $aBlogUsersResult['collection']; $aBlogModeratorsResult = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_MODERATOR); $aBlogModerators = $aBlogModeratorsResult['collection']; $aBlogAdministratorsResult = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR); $aBlogAdministrators = $aBlogAdministratorsResult['collection']; /** * Для админов проекта получаем список блогов и передаем их во вьювер */ if ($this->oUserCurrent and $this->oUserCurrent->isAdministrator()) { $aBlogs = $this->Blog_GetBlogs(); unset($aBlogs[$oBlog->getId()]); $this->Viewer_Assign('aBlogs', $aBlogs); } /** * Вызов хуков */ $this->Hook_Run('blog_collective_show', array('oBlog' => $oBlog, 'sShowType' => $sShowType)); /** * Загружаем переменные в шаблон */ $this->Viewer_Assign('aBlogUsers', $aBlogUsers); $this->Viewer_Assign('aBlogModerators', $aBlogModerators); $this->Viewer_Assign('aBlogAdministrators', $aBlogAdministrators); $this->Viewer_Assign('iCountBlogUsers', $aBlogUsersResult['count']); $this->Viewer_Assign('iCountBlogModerators', $aBlogModeratorsResult['count']); $this->Viewer_Assign('iCountBlogAdministrators', $aBlogAdministratorsResult['count'] + 1); $this->Viewer_Assign('oBlog', $oBlog); $this->Viewer_Assign('bCloseBlog', $bCloseBlog); /** * Устанавливаем title страницы */ $this->Viewer_AddHtmlTitle($oBlog->getTitle()); $this->Viewer_SetHtmlRssAlternate(Router::GetPath('rss') . 'blog/' . $oBlog->getUrl() . '/', $oBlog->getTitle()); /** * Устанавливаем шаблон вывода */ $this->SetTemplateAction('blog'); }
protected function EventShowBlog() { $sBlogUrl = $this->sCurrentEvent; $sShowType = in_array($this->GetParamEventMatch(0, 0), array('bad', 'new')) ? $this->GetParamEventMatch(0, 0) : 'good'; /** * Проверяем есть ли блог с таким УРЛ */ if (!($oBlog = $this->Blog_GetBlogByUrl($sBlogUrl))) { return parent::EventNotFound(); } /** * Определяем права на отображение закрытого блога */ if ($oBlog->getType() == 'close' and (!$this->oUserCurrent or !in_array($oBlog->getId(), $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)))) { $bCloseBlog = true; } else { $bCloseBlog = false; } /** * Меню */ $this->sMenuSubItemSelect = $sShowType; $this->sMenuSubBlogUrl = $oBlog->getUrlFull(); /** * Передан ли номер страницы */ $iPage = $this->GetParamEventMatch($sShowType == 'good' ? 0 : 1, 2) ? $this->GetParamEventMatch($sShowType == 'good' ? 0 : 1, 2) : 1; if (!$bCloseBlog) { /** * Получаем список топиков */ $aResult = $this->Topic_GetTopicsByBlog($oBlog, $iPage, Config::Get('module.topic.per_page'), $sShowType); $aTopics = $aResult['collection']; /** * Формируем постраничность */ $aPaging = $sShowType == 'good' ? $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), 4, rtrim($oBlog->getUrlFull(), '/')) : $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), 4, $oBlog->getUrlFull() . $sShowType); /** * Получаем число новых топиков в текущем блоге */ $this->iCountTopicsBlogNew = $this->Topic_GetCountTopicsByBlogNew($oBlog); $this->Viewer_Assign('aPaging', $aPaging); $this->Viewer_Assign('aTopics', $aTopics); } /** * Выставляем SEO данные */ $sTextSeo = preg_replace("/<.*>/Ui", ' ', $oBlog->getDescription()); $this->Viewer_SetHtmlDescription(func_text_words($sTextSeo, 20)); /** * Получаем список юзеров блога */ $aBlogUsers = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_USER); $aBlogModerators = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_MODERATOR); $aBlogAdministrators = $this->Blog_GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR); /** * Для админов проекта получаем список блогов и передаем их во вьювер */ if ($this->oUserCurrent and $this->oUserCurrent->isAdministrator()) { $aBlogs = $this->Blog_GetBlogs(); unset($aBlogs[$oBlog->getId()]); $this->Viewer_Assign('aBlogs', $aBlogs); } /** * Вызов хуков */ $this->Hook_Run('blog_collective_show', array('oBlog' => $oBlog, 'sShowType' => $sShowType)); /** * Загружаем переменные в шаблон */ $this->Viewer_Assign('aBlogUsers', $aBlogUsers); $this->Viewer_Assign('aBlogModerators', $aBlogModerators); $this->Viewer_Assign('aBlogAdministrators', $aBlogAdministrators); $this->Viewer_Assign('iCountBlogUsers', count($aBlogUsers)); $this->Viewer_Assign('iCountBlogModerators', count($aBlogModerators)); $this->Viewer_Assign('iCountBlogAdministrators', count($aBlogAdministrators) + 1); $this->Viewer_Assign('oBlog', $oBlog); $this->Viewer_Assign('bCloseBlog', $bCloseBlog); $this->Viewer_AddHtmlTitle($oBlog->getTitle()); $this->Viewer_SetHtmlRssAlternate(Router::GetPath('rss') . 'blog/' . $oBlog->getUrl() . '/', $oBlog->getTitle()); /** * Устанавливаем шаблон вывода */ $this->SetTemplateAction('blog'); }
/** * Вывод топиков из определенного блога * */ protected function EventShowBlog() { $sShowType = $this->GetParamEventMatch(0, 0); if ($sShowType != 'draft') { return parent::EventShowBlog(); } if (!E::IsAdmin()) { return parent::EventNotFound(); } $sBlogUrl = $this->sCurrentEvent; /** * Проверяем есть ли блог с таким УРЛ */ if (!($oBlog = E::ModuleBlog()->GetBlogByUrl($sBlogUrl))) { return parent::EventNotFound(); } /** * Определяем права на отображение закрытого блога */ if ($oBlog->getType() == 'close' and (!$this->oUserCurrent or !in_array($oBlog->getId(), E::ModuleBlog()->GetAccessibleBlogsByUser($this->oUserCurrent)))) { $bCloseBlog = true; } else { $bCloseBlog = false; } /** * Меню */ $this->sMenuSubItemSelect = $sShowType; $this->sMenuSubBlogUrl = $oBlog->getUrlFull(); /** * Передан ли номер страницы */ $iPage = $this->GetParamEventMatch(1, 2) ? $this->GetParamEventMatch(1, 2) : 1; if (!$bCloseBlog) { /** * Получаем список топиков */ $aResult = E::ModuleTopic()->GetTopicsByBlog($oBlog, $iPage, Config::Get('module.topic.per_page'), $sShowType, null); $aTopics = $aResult['collection']; /** * Формируем постраничность */ $aPaging = E::ModuleViewer()->MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), Config::Get('pagination.pages.count'), $oBlog->getUrlFull() . $sShowType, array()); /** * Получаем число новых топиков в текущем блоге */ $this->iCountTopicsBlogNew = E::ModuleTopic()->GetCountTopicsByBlogNew($oBlog); E::ModuleViewer()->Assign('aPaging', $aPaging); E::ModuleViewer()->Assign('aTopics', $aTopics); } /** * Выставляем SEO данные */ $sTextSeo = strip_tags($oBlog->getDescription()); E::ModuleViewer()->SetHtmlDescription(func_text_words($sTextSeo, Config::Get('seo.description_words_count'))); /** * Получаем список юзеров блога */ $aBlogUsersResult = E::ModuleBlog()->GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_USER, 1, Config::Get('module.blog.users_per_page')); $aBlogUsers = $aBlogUsersResult['collection']; $aBlogModeratorsResult = E::ModuleBlog()->GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_MODERATOR); $aBlogModerators = $aBlogModeratorsResult['collection']; $aBlogAdministratorsResult = E::ModuleBlog()->GetBlogUsersByBlogId($oBlog->getId(), ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR); $aBlogAdministrators = $aBlogAdministratorsResult['collection']; /** * Для админов проекта получаем список блогов и передаем их во вьювер */ if ($this->oUserCurrent and $this->oUserCurrent->isAdministrator()) { $aBlogs = E::ModuleBlog()->GetBlogs(); unset($aBlogs[$oBlog->getId()]); E::ModuleViewer()->Assign('aBlogs', $aBlogs); } /** * Вызов хуков */ E::ModuleHook()->Run('blog_collective_show', array('oBlog' => $oBlog, 'sShowType' => $sShowType)); /** * Загружаем переменные в шаблон */ E::ModuleViewer()->Assign('aBlogUsers', $aBlogUsers); E::ModuleViewer()->Assign('aBlogModerators', $aBlogModerators); E::ModuleViewer()->Assign('aBlogAdministrators', $aBlogAdministrators); E::ModuleViewer()->Assign('iCountBlogUsers', $aBlogUsersResult['count']); E::ModuleViewer()->Assign('iCountBlogModerators', $aBlogModeratorsResult['count']); E::ModuleViewer()->Assign('iCountBlogAdministrators', $aBlogAdministratorsResult['count'] + 1); E::ModuleViewer()->Assign('oBlog', $oBlog); E::ModuleViewer()->Assign('bCloseBlog', $bCloseBlog); /** * Устанавливаем title страницы */ E::ModuleViewer()->AddHtmlTitle($oBlog->getTitle()); E::ModuleViewer()->SetHtmlRssAlternate(Router::GetPath('rss') . 'blog/' . $oBlog->getUrl() . '/', $oBlog->getTitle()); /** * Устанавливаем шаблон вывода */ $this->SetTemplateAction('blog'); }