Example #1
0
 /**
  * Получает отношения юзера к блогам(состоит в блоге или нет)
  *
  * @param int $sUserId	ID пользователя
  * @param int|null $iRole	Роль пользователя в блоге
  * @param bool $bReturnIdOnly	Возвращать только ID блогов или полные объекты
  * @return array
  */
 public function GetBlogUsersByUserId($sUserId, $iRole = null, $bReturnIdOnly = false)
 {
     $aFilter = array('user_id' => $sUserId);
     if ($iRole !== null) {
         $aFilter['user_role'] = $iRole;
     }
     $s = serialize($aFilter);
     if (false === ($data = $this->Cache_Get("blog_relation_user_by_filter_{$s}"))) {
         $data = $this->oMapperBlog->GetBlogUsers($aFilter);
         $this->Cache_Set($data, "blog_relation_user_by_filter_{$s}", array("blog_update", "blog_relation_change_{$sUserId}"), 60 * 60 * 24 * 3);
     }
     /**
      * Достаем дополнительные данные, для этого формируем список блогов и делаем мульти-запрос
      */
     $aBlogId = array();
     if ($data) {
         foreach ($data as $oBlogUser) {
             $aBlogId[] = $oBlogUser->getBlogId();
         }
         /**
          * Если указано возвращать полные объекты
          */
         if (!$bReturnIdOnly) {
             $aUsers = $this->User_GetUsersAdditionalData($sUserId);
             $aBlogs = $this->Blog_GetBlogsAdditionalData($aBlogId);
             foreach ($data as $oBlogUser) {
                 if (isset($aUsers[$oBlogUser->getUserId()])) {
                     $oBlogUser->setUser($aUsers[$oBlogUser->getUserId()]);
                 } else {
                     $oBlogUser->setUser(null);
                 }
                 if (isset($aBlogs[$oBlogUser->getBlogId()])) {
                     $oBlogUser->setBlog($aBlogs[$oBlogUser->getBlogId()]);
                 } else {
                     $oBlogUser->setBlog(null);
                 }
             }
         }
     }
     return $bReturnIdOnly ? $aBlogId : $data;
 }
Example #2
0
 /**
  * Получает отношения юзера к блогам (подписан на блог или нет)
  *
  * @param int       $iUserId          ID пользователя
  * @param int|int[] $xRole            Роль пользователя в блоге
  * @param bool      $bReturnIdOnly    Возвращать только ID блогов или полные объекты
  *
  * @return int[]|ModuleBlog_EntityBlogUser[]
  */
 public function GetBlogUsersByUserId($iUserId, $xRole = null, $bReturnIdOnly = false)
 {
     $aFilter = array('user_id' => $iUserId);
     if ($xRole !== null) {
         $aFilter['user_role'] = $xRole;
     }
     $sCacheKey = 'blog_relation_user_by_filter_' . serialize($aFilter);
     if (false === ($aBlogUserRels = E::ModuleCache()->Get($sCacheKey))) {
         $aBlogUserRels = $this->oMapper->GetBlogUsers($aFilter);
         E::ModuleCache()->Set($aBlogUserRels, $sCacheKey, array('blog_update', "blog_relation_change_{$iUserId}"), 60 * 60 * 24 * 3);
     }
     //  Достаем дополнительные данные, для этого формируем список блогов и делаем мульти-запрос
     $aBlogId = array();
     $aResult = array();
     if ($aBlogUserRels) {
         foreach ($aBlogUserRels as $oBlogUser) {
             $aBlogId[] = $oBlogUser->getBlogId();
         }
         //  Если указано возвращать полные объекты
         if (!$bReturnIdOnly) {
             $aUsers = E::ModuleUser()->GetUsersAdditionalData($iUserId);
             $aBlogs = E::ModuleBlog()->GetBlogsAdditionalData($aBlogId);
             foreach ($aBlogUserRels as $oBlogUser) {
                 if (isset($aUsers[$oBlogUser->getUserId()])) {
                     $oBlogUser->setUser($aUsers[$oBlogUser->getUserId()]);
                 } else {
                     $oBlogUser->setUser(null);
                 }
                 if (isset($aBlogs[$oBlogUser->getBlogId()])) {
                     $oBlogUser->setBlog($aBlogs[$oBlogUser->getBlogId()]);
                 } else {
                     $oBlogUser->setBlog(null);
                 }
                 $aResult[$oBlogUser->getBlogId()] = $oBlogUser;
             }
         }
     }
     return $bReturnIdOnly ? $aBlogId : $aResult;
 }