/**
  * Запуск обработки
  */
 public function Exec()
 {
     /**
      * Пользователь авторизован?
      */
     if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
         /**
          * Получаем необходимые переменные и передаем в шаблон
          */
         $aUserSubscribes = E::ModuleUserfeed()->GetUserSubscribes($oUserCurrent->getId());
         $aFriends = E::ModuleUser()->GetUsersFriend($oUserCurrent->getId());
         E::ModuleViewer()->Assign('aUserfeedSubscribedUsers', $aUserSubscribes['users']);
         E::ModuleViewer()->Assign('aUserfeedFriends', $aFriends['collection']);
     }
 }
 public function Exec()
 {
     // For authorized users only
     if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
         $aUserSubscribes = E::ModuleUserfeed()->GetUserSubscribes($oUserCurrent->getId());
         // Get ID list of blogs to which you subscribe
         $aBlogsId = E::ModuleBlog()->GetBlogUsersByUserId($oUserCurrent->getId(), array(ModuleBlog::BLOG_USER_ROLE_USER, ModuleBlog::BLOG_USER_ROLE_MODERATOR, ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR), true);
         // Get ID list of blogs where the user is the owner
         $aBlogsOwnerId = E::ModuleBlog()->GetBlogsByOwnerId($oUserCurrent->getId(), true);
         $aBlogsId = array_merge($aBlogsId, $aBlogsOwnerId);
         $aBlogs = E::ModuleBlog()->GetBlogsAdditionalData($aBlogsId, array('owner' => array()), array('blog_title' => 'asc'));
         /**
          * Выводим в шаблон
          */
         E::ModuleViewer()->Assign('aUserfeedSubscribedBlogs', $aUserSubscribes['blogs']);
         E::ModuleViewer()->Assign('aUserfeedBlogs', $aBlogs);
     }
 }
 /**
  * Запуск обработки
  */
 public function Exec()
 {
     /**
      * Пользователь авторизован?
      */
     if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
         $aUserSubscribes = E::ModuleUserfeed()->GetUserSubscribes($oUserCurrent->getId());
         /**
          * Получаем список ID блогов, в которых состоит пользователь
          */
         $aBlogsId = E::ModuleBlog()->GetBlogUsersByUserId($oUserCurrent->getId(), array(ModuleBlog::BLOG_USER_ROLE_USER, ModuleBlog::BLOG_USER_ROLE_MODERATOR, ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR), true);
         /**
          * Получаем список ID блогов, которые создал пользователь
          */
         $aBlogsOwnerId = E::ModuleBlog()->GetBlogsByOwnerId($oUserCurrent->getId(), true);
         $aBlogsId = array_merge($aBlogsId, $aBlogsOwnerId);
         $aBlogs = E::ModuleBlog()->GetBlogsAdditionalData($aBlogsId, array('owner' => array()), array('blog_title' => 'asc'));
         /**
          * Выводим в шаблон
          */
         E::ModuleViewer()->Assign('aUserfeedSubscribedBlogs', $aUserSubscribes['blogs']);
         E::ModuleViewer()->Assign('aUserfeedBlogs', $aBlogs);
     }
 }
Example #4
0
 /**
  * Вызывается по строке "count_track"
  * @param string $sIcon
  * @return bool
  */
 public function CountTrack($sIcon = '')
 {
     if (!E::IsUser()) {
         return '';
     }
     $sKeyString = 'menu_count_track_' . E::User()->getId() . '_' . $sIcon;
     if (FALSE === ($xData = E::ModuleCache()->GetTmp($sKeyString))) {
         $sCount = E::ModuleUserfeed()->GetCountTrackNew(E::User()->getId());
         $xData = $sIcon . ($sCount ? '+' . $sCount : '0');
         E::ModuleCache()->SetTmp($xData, $sKeyString);
     }
     return $xData;
 }
Example #5
0
 /**
  * При завершенни модуля загружаем в шалон объект текущего юзера
  *
  */
 public function Shutdown()
 {
     if ($this->oUserCurrent) {
         E::ModuleViewer()->Assign('iUserCurrentCountTrack', E::ModuleUserfeed()->GetCountTrackNew($this->oUserCurrent->getId()));
         E::ModuleViewer()->Assign('iUserCurrentCountTalkNew', E::ModuleTalk()->GetCountTalkNew($this->oUserCurrent->getId()));
         E::ModuleViewer()->Assign('iUserCurrentCountTopicDraft', E::ModuleTopic()->GetCountDraftTopicsByUserId($this->oUserCurrent->getId()));
     }
     E::ModuleViewer()->Assign('oUserCurrent', $this->oUserCurrent);
     E::ModuleViewer()->Assign('aContentTypes', E::ModuleTopic()->GetContentTypes(array('content_active' => 1)));
     if ($this->oUserCurrent) {
         E::ModuleViewer()->Assign('aAllowedContentTypes', E::ModuleTopic()->GetAllowContentTypeByUserId($this->oUserCurrent));
     }
 }
Example #6
0
 /**
  * Подключение/отключение к блогу
  *
  */
 protected function AjaxBlogJoin()
 {
     //  Устанавливаем формат Ajax ответа
     E::ModuleViewer()->SetResponseAjax('json');
     //  Пользователь авторизован?
     if (!$this->oUserCurrent) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('need_authorization'), E::ModuleLang()->Get('error'));
         return;
     }
     //  Блог существует?
     $nBlogId = intval(F::GetRequestStr('idBlog', null, 'post'));
     if (!$nBlogId || !($oBlog = E::ModuleBlog()->GetBlogById($nBlogId))) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
         return;
     }
     $this->oCurrentBlog = $oBlog;
     // Type of the blog
     $oBlogType = $oBlog->getBlogType();
     // Current status of user in the blog
     /** @var ModuleBlog_EntityBlogUser $oBlogUser */
     $oBlogUser = E::ModuleBlog()->GetBlogUserByBlogIdAndUserId($oBlog->getId(), $this->oUserCurrent->getId());
     if (!$oBlogUser || $oBlogUser->getUserRole() < ModuleBlog::BLOG_USER_ROLE_GUEST && (!$oBlogType || $oBlogType->IsPrivate())) {
         // * Проверяем тип блога на возможность свободного вступления или вступления по запросу
         if ($oBlogType && !$oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE) && !$oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_REQUEST)) {
             E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_join_error_invite'), E::ModuleLang()->Get('error'));
             return;
         }
         if ($oBlog->getOwnerId() != $this->oUserCurrent->getId()) {
             // Subscribe user to the blog
             if ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE)) {
                 $bResult = false;
                 if ($oBlogUser) {
                     $oBlogUser->setUserRole(ModuleBlog::BLOG_USER_ROLE_USER);
                     $bResult = E::ModuleBlog()->UpdateRelationBlogUser($oBlogUser);
                 } elseif ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE)) {
                     // User can free subscribe to blog
                     /** @var ModuleBlog_EntityBlogUser $oBlogUserNew */
                     $oBlogUserNew = E::GetEntity('Blog_BlogUser');
                     $oBlogUserNew->setBlogId($oBlog->getId());
                     $oBlogUserNew->setUserId($this->oUserCurrent->getId());
                     $oBlogUserNew->setUserRole(ModuleBlog::BLOG_USER_ROLE_USER);
                     $bResult = E::ModuleBlog()->AddRelationBlogUser($oBlogUserNew);
                 }
                 if ($bResult) {
                     E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_ok'), E::ModuleLang()->Get('attention'));
                     E::ModuleViewer()->AssignAjax('bState', true);
                     //  Увеличиваем число читателей блога
                     $oBlog->setCountUser($oBlog->getCountUser() + 1);
                     E::ModuleBlog()->UpdateBlog($oBlog);
                     E::ModuleViewer()->AssignAjax('iCountUser', $oBlog->getCountUser());
                     //  Добавляем событие в ленту
                     E::ModuleStream()->Write($this->oUserCurrent->getId(), 'join_blog', $oBlog->getId());
                     //  Добавляем подписку на этот блог в ленту пользователя
                     E::ModuleUserfeed()->SubscribeUser($this->oUserCurrent->getId(), ModuleUserfeed::SUBSCRIBE_TYPE_BLOG, $oBlog->getId());
                 } else {
                     $sMsg = $oBlogType->IsPrivate() ? E::ModuleLang()->Get('blog_join_error_invite') : E::ModuleLang()->Get('system_error');
                     E::ModuleMessage()->AddErrorSingle($sMsg, E::ModuleLang()->Get('error'));
                     return;
                 }
             }
             // Подписываем по запросу
             if ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_REQUEST)) {
                 // Подписка уже была запрошена, но результатов пока нет
                 if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_WISHES) {
                     E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_request_already'), E::ModuleLang()->Get('attention'));
                     E::ModuleViewer()->AssignAjax('bState', true);
                     return;
                 }
                 if ($oBlogUser) {
                     if (!in_array($oBlogUser->getUserRole(), array(ModuleBlog::BLOG_USER_ROLE_REJECT, ModuleBlog::BLOG_USER_ROLE_WISHES))) {
                         $sMessage = E::ModuleLang()->Get('blog_user_status_is') . ' "' . E::ModuleBlog()->GetBlogUserRoleName($oBlogUser->getUserRole()) . '"';
                         E::ModuleMessage()->AddNoticeSingle($sMessage, E::ModuleLang()->Get('attention'));
                         E::ModuleViewer()->AssignAjax('bState', true);
                         return;
                     } else {
                         $oBlogUser->setUserRole(ModuleBlog::BLOG_USER_ROLE_WISHES);
                         $bResult = E::ModuleBlog()->UpdateRelationBlogUser($oBlogUser);
                     }
                 } else {
                     // Подписки ещё не было - оформим ее
                     /** @var ModuleBlog_EntityBlogUser $oBlogUserNew */
                     $oBlogUserNew = E::GetEntity('Blog_BlogUser');
                     $oBlogUserNew->setBlogId($oBlog->getId());
                     $oBlogUserNew->setUserId($this->oUserCurrent->getId());
                     $oBlogUserNew->setUserRole(ModuleBlog::BLOG_USER_ROLE_WISHES);
                     $bResult = E::ModuleBlog()->AddRelationBlogUser($oBlogUserNew);
                 }
                 if ($bResult) {
                     // Отправим сообщение модераторам и администраторам блога о том, что
                     // этот пользоватлеь захотел присоединиться к нашему блогу
                     $aBlogUsersResult = E::ModuleBlog()->GetBlogUsersByBlogId($oBlog->getId(), array(ModuleBlog::BLOG_USER_ROLE_MODERATOR, ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR), null);
                     if ($aBlogUsersResult) {
                         /** @var ModuleUser_EntityUser[] $aBlogModerators */
                         $aBlogModerators = array();
                         /** @var ModuleBlog_EntityBlogUser $oCurrentBlogUser */
                         foreach ($aBlogUsersResult['collection'] as $oCurrentBlogUser) {
                             $aBlogModerators[] = $oCurrentBlogUser->getUser();
                         }
                         // Добавим владельца блога к списку
                         $aBlogModerators = array_merge($aBlogModerators, array($oBlog->getOwner()));
                         $this->SendBlogRequest($oBlog, $aBlogModerators, $this->oUserCurrent);
                     }
                     E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_request_send'), E::ModuleLang()->Get('attention'));
                     E::ModuleViewer()->AssignAjax('bState', true);
                     return;
                 }
             }
         } else {
             E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_join_error_self'), E::ModuleLang()->Get('attention'));
             return;
         }
     }
     if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_MEMBER) {
         // Unsubscribe user from the blog
         if (E::ModuleBlog()->DeleteRelationBlogUser($oBlogUser)) {
             E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_leave_ok'), E::ModuleLang()->Get('attention'));
             E::ModuleViewer()->AssignAjax('bState', false);
             //  Уменьшаем число читателей блога
             $oBlog->setCountUser($oBlog->getCountUser() - 1);
             E::ModuleBlog()->UpdateBlog($oBlog);
             E::ModuleViewer()->AssignAjax('iCountUser', $oBlog->getCountUser());
             //  Удаляем подписку на этот блог в ленте пользователя
             E::ModuleUserfeed()->UnsubscribeUser($this->oUserCurrent->getId(), ModuleUserfeed::SUBSCRIBE_TYPE_BLOG, $oBlog->getId());
             return;
         } else {
             E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
             return;
         }
     }
     if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_NOTMEMBER) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_user_request_no_accept'), E::ModuleLang()->Get('error'));
         return;
     }
     if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_BAN) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_leave_error_banned'), E::ModuleLang()->Get('error'));
         return;
     }
     if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_BAN_FOR_COMMENT) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_leave_error_banned'), E::ModuleLang()->Get('error'));
         return;
     }
     if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_WISHES) {
         E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_request_leave'), E::ModuleLang()->Get('attention'));
         E::ModuleViewer()->AssignAjax('bState', true);
         return;
     }
 }
Example #7
0
 /**
  * Отписка от блога или пользователя
  *
  */
 protected function EventUnsubscribe()
 {
     // * Устанавливаем формат Ajax ответа
     E::ModuleViewer()->SetResponseAjax('json');
     if (!F::GetRequest('id')) {
         E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
         return;
     }
     $sType = F::GetRequestStr('type');
     $iType = null;
     // * Определяем от чего отписываемся
     switch ($sType) {
         case 'blogs':
         case 'blog':
             $iType = ModuleUserfeed::SUBSCRIBE_TYPE_BLOG;
             break;
         case 'users':
         case 'user':
             $iType = ModuleUserfeed::SUBSCRIBE_TYPE_USER;
             break;
         default:
             E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
             return;
     }
     // * Отписываем пользователя
     E::ModuleUserfeed()->UnsubscribeUser($this->oUserCurrent->getId(), $iType, F::GetRequestStr('id'));
     E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('userfeed_subscribes_updated'), E::ModuleLang()->Get('attention'));
 }