Esempio n. 1
0
 /**
  * Вывод топиков из определенного блога
  *
  */
 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');
 }
Esempio n. 2
0
 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');
 }