Example #1
0
 /**
  * Получаем массив идентификаторов блогов, которые являются закрытыми для пользователя
  *
  * @param  ModuleUser_EntityUser|null $oUser	Пользователь
  * @return array
  */
 public function GetInaccessibleBlogsByUser($oUser = null)
 {
     if ($oUser && $oUser->isAdministrator()) {
         return array();
     }
     $sUserId = $oUser ? $oUser->getId() : 'quest';
     if (false === ($aCloseBlogs = $this->Cache_Get("blog_inaccessible_user_{$sUserId}"))) {
         $aCloseBlogs = array_merge($this->oMapperBlog->GetHalfcloseBlogs(), $this->oMapperBlog->GetCloseBlogs());
         if ($oUser) {
             /**
              * Получаем массив идентификаторов блогов,
              * которые являются откытыми для данного пользователя
              */
             $aOpenBlogs = $this->GetBlogUsersByUserId($oUser->getId(), null, true);
             /**
              * Получаем закрытые блоги, где пользователь является автором
              */
             $aOwnerBlogs = $this->GetBlogsByFilter(array('type' => 'close', 'user_owner_id' => $oUser->getId()), array(), 1, 100, array());
             $aOwnerBlogs = array_keys($aOwnerBlogs['collection']);
             $aCloseBlogs = array_diff($aCloseBlogs, $aOpenBlogs, $aOwnerBlogs);
         }
         /**
          * Сохраняем в кеш
          */
         if ($oUser) {
             $this->Cache_Set($aCloseBlogs, "blog_inaccessible_user_{$sUserId}", array('blog_new', 'blog_update', "blog_relation_change_{$oUser->getId()}"), 60 * 60 * 24);
         } else {
             $this->Cache_Set($aCloseBlogs, "blog_inaccessible_user_{$sUserId}", array('blog_new', 'blog_update'), 60 * 60 * 24 * 3);
         }
     }
     return $aCloseBlogs;
 }