/** * Запуск обработки */ 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); } }
/** * Вызывается по строке "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; }
/** * При завершенни модуля загружаем в шалон объект текущего юзера * */ 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)); } }
/** * Подключение/отключение к блогу * */ 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; } }
/** * Отписка от блога или пользователя * */ 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')); }