Beispiel #1
0
 /**
  * Список опубликованых топиков в открытых блогах (с кешированием)
  *
  * @param int $iPage
  *
  * @return array
  */
 public function getTopicsForSitemap($iPage = 0)
 {
     $sCacheKey = "sitemap_topics_{$iPage}_" . C::Get('plugin.sitemap.items_per_page');
     if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
         $aFilter = $this->GetNamedFilter('sitemap');
         $aTopics = E::ModuleTopic()->GetTopicsByFilter($aFilter, $iPage, C::Get('plugin.sitemap.items_per_page'), array('blog' => array('owner' => array())));
         $aData = array();
         $iIndex = 0;
         $aPriority = F::Array_Str2Array(C::Get('plugin.sitemap.type.topics.priority'));
         $nPriority = sizeof($aPriority) ? reset($aPriority) : null;
         $aChangeFreq = F::Array_Str2Array(C::Get('plugin.sitemap.type.topics.changefreq'));
         $sChangeFreq = sizeof($aChangeFreq) ? reset($aChangeFreq) : null;
         /** @var ModuleTopic_EntityTopic $oTopic */
         foreach ($aTopics['collection'] as $oTopic) {
             if ($aPriority) {
                 if (isset($aPriority[$iIndex])) {
                     $nPriority = $aPriority[$iIndex];
                 }
             }
             if ($aChangeFreq) {
                 if (isset($aChangeFreq[$iIndex])) {
                     $sChangeFreq = $aChangeFreq[$iIndex];
                 }
             }
             $aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oTopic->getLink(), $oTopic->getDateLastMod(), $sChangeFreq, $nPriority);
             $iIndex += 1;
         }
         // тег 'blog_update' т.к. при редактировании блога его тип может измениться
         // с открытого на закрытый или наоборот
         E::ModuleCache()->Set($aData, $sCacheKey, array('topic_new', 'topic_update', 'blog_update'), C::Get('plugin.sitemap.type.topics.cache_lifetime'));
     }
     return $aData;
 }
Beispiel #2
0
 /**
  * Список коллективных блогов (с кешированием)
  *
  * @param integer $iPage
  *
  * @return array
  */
 public function GetBlogsForSitemap($iPage = 1)
 {
     $sCacheKey = "sitemap_blogs_{$iPage}_" . C::Get('plugin.sitemap.items_per_page');
     if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
         $aFilter = array('include_type' => $this->GetOpenBlogTypes());
         $aBlogs = E::ModuleBlog()->GetBlogsByFilter($aFilter, $iPage, C::Get('plugin.sitemap.items_per_page'), array('owner' => array()));
         $aData = array();
         /** @var ModuleBlog_EntityBlog $oBlog */
         foreach ($aBlogs['collection'] as $oBlog) {
             // TODO временем последнего изменения блога должно быть время его обновления (публикация последнего топика),
             $aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oBlog->getLink(), null, C::Get('plugin.sitemap.type.blogs.changefreq'), C::Get('plugin.sitemap.type.blogs.priority'));
             // @todo страницы блога разбиты на подстраницы. значит нужно генерировать
             // ссылки на каждую из подстраниц
             // т.е. тянуть количество топиков блога
         }
         E::ModuleCache()->Set($aData, $sCacheKey, array('blog_new'), C::Get('plugin.sitemap.type.blogs.cache_lifetime'));
     }
     return $aData;
 }
Beispiel #3
0
 /**
  * Список пользователей (с кешированием)
  *
  * @param integer $iPage
  *
  * @return array
  */
 public function getUsersForSitemap($iPage)
 {
     $iPerPage = C::Get('plugin.sitemap.users_per_page');
     $sCacheKey = "sitemap_users_{$iPage}_{$iPerPage}";
     if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
         $aFilter = array('activate' => 1);
         $aUsers = E::ModuleUser()->GetUsersByFilter($aFilter, array(), $iPage, $iPerPage);
         $aData = array();
         /** @var ModuleUser_EntityUser $oUser */
         foreach ($aUsers['collection'] as $oUser) {
             // профиль пользователя
             $aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getProfileUrl(), $oUser->getDateLastMod(), C::Get('plugin.sitemap.type.users.profile.changefreq'), C::Get('plugin.sitemap.type.users.profile.priority'));
             // публикации пользователя
             $aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getUserTopicsLink(), null, C::Get('plugin.sitemap.type.users.my.changefreq'), C::Get('plugin.sitemap.type.users.my.priority'));
             // комментарии пользователя
             $aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getUserCommentsLink(), $oUser->getDateCommentLast(), C::Get('plugin.sitemap.type.users.comments.changefreq'), C::Get('plugin.sitemap.type.users.comments.priority'));
             E::ModuleCache()->Set($aData, $sCacheKey, array('user_new', 'user_update'), C::Get('plugin.sitemap.type.users.cache_lifetime'));
         }
     }
     return $aData;
 }
Beispiel #4
0
 protected function _getSitemapLastmod($sType, $iPage)
 {
     if ($iPage < 1) {
         $iPage = 1;
     }
     return E::ModuleSitemap()->GetLastMod($sType, $iPage);
 }