/** * Показывает инфу профиля * */ protected function EventWhois() { /** * Получаем логин из УРЛа */ $sUserLogin = $this->sCurrentEvent; /** * Проверяем есть ли такой юзер */ if (!($this->oUserProfile = $this->User_GetUserByLogin($sUserLogin))) { return parent::EventNotFound(); } /** * Получаем список друзей */ $aUsersFriend = $this->User_GetUsersFriend($this->oUserProfile->getId()); if (Config::Get('general.reg.invite')) { /** * Получаем список тех кого пригласил юзер */ $aUsersInvite = $this->User_GetUsersInvite($this->oUserProfile->getId()); $this->Viewer_Assign('aUsersInvite', $aUsersInvite); /** * Получаем того юзера, кто пригласил текущего */ $oUserInviteFrom = $this->User_GetUserInviteFrom($this->oUserProfile->getId()); $this->Viewer_Assign('oUserInviteFrom', $oUserInviteFrom); } /** * Получаем список юзеров блога */ $aBlogUsers = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_USER); $aBlogModerators = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_MODERATOR); $aBlogAdministrators = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR); /** * Получаем список блогов которые создал юзер */ $aBlogsOwner = $this->Blog_GetBlogsByOwnerId($this->oUserProfile->getId()); /** * Вызов хуков */ $this->Hook_Run('profile_whois_show', array("oUserProfile" => $this->oUserProfile)); /** * Загружаем переменные в шаблон */ $this->Viewer_Assign('aBlogUsers', $aBlogUsers); $this->Viewer_Assign('aBlogModerators', $aBlogModerators); $this->Viewer_Assign('aBlogAdministrators', $aBlogAdministrators); $this->Viewer_Assign('aBlogsOwner', $aBlogsOwner); $this->Viewer_Assign('aUsersFriend', $aUsersFriend); $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_profile') . ' ' . $this->oUserProfile->getLogin()); $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_profile_whois')); /** * Устанавливаем шаблон вывода */ $this->SetTemplateAction('whois'); }
/** * Выполняет отправку приглашения в блог * (по внутренней почте и на email) * * @param ModuleBlog_EntityBlog $oBlog * @param ModuleUser_EntityUser $oUser */ protected function SendBlogInvite($oBlog, $oUser) { $sTitle = $this->Lang_Get('blog_user_invite_title', array('blog_title' => $oBlog->getTitle())); require_once Config::Get('path.root.engine') . '/lib/external/XXTEA/encrypt.php'; $sCode = $oBlog->getId() . '_' . $oUser->getId(); $sCode = rawurlencode(base64_encode(xxtea_encrypt($sCode, Config::Get('module.blog.encrypt')))); $aPath = array('accept' => Router::GetPath('blog') . 'invite/accept/?code=' . $sCode, 'reject' => Router::GetPath('blog') . 'invite/reject/?code=' . $sCode); $sText = $this->Lang_Get('blog_user_invite_text', array('login' => $this->oUserCurrent->getLogin(), 'accept_path' => $aPath['accept'], 'reject_path' => $aPath['reject'], 'blog_title' => $oBlog->getTitle())); $oTalk = $this->Talk_SendTalk($sTitle, $sText, $this->oUserCurrent, array($oUser), false, false); /** * Отправляем пользователю заявку */ $this->Notify_SendBlogUserInvite($oUser, $this->oUserCurrent, $oBlog, Router::GetPath('talk') . 'read/' . $oTalk->getId() . '/'); /** * Удаляем отправляющего юзера из переписки */ $this->Talk_DeleteTalkUserByArray($oTalk->getId(), $this->oUserCurrent->getId()); }
/** * Выводит список комментариев которые написал юзер * */ protected function EventComments() { /** * Получаем логин из УРЛа */ $sUserLogin = $this->sCurrentEvent; /** * Проверяем есть ли такой юзер */ if (!($this->oUserProfile = $this->User_GetUserByLogin($sUserLogin))) { return parent::EventNotFound(); } /** * Передан ли номер страницы */ $iPage = $this->GetParamEventMatch(1, 2) ? $this->GetParamEventMatch(1, 2) : 1; /** * Получаем список комментов */ $aResult = $this->Comment_GetCommentsByUserId($this->oUserProfile->getId(), 'topic', $iPage, Config::Get('module.comment.per_page')); $aComments = $aResult['collection']; /** * Формируем постраничность */ $aPaging = $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.comment.per_page'), 4, Router::GetPath('my') . $this->oUserProfile->getLogin() . '/comment'); /** * Загружаем переменные в шаблон */ $this->Viewer_Assign('aPaging', $aPaging); $this->Viewer_Assign('aComments', $aComments); $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_publication') . ' ' . $this->oUserProfile->getLogin()); $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_publication_comment')); /** * Устанавливаем шаблон вывода */ $this->SetTemplateAction('comment'); }
/** * Добавление нового участника разговора (ajax) * * @return null */ public function AjaxAddTalkUser() { $this->Viewer_SetResponseAjax(); $sUsers = getRequest('users', null, 'post'); $idTalk = getRequest('idTalk', null, 'post'); // Если пользователь не авторизирован, возвращаем ошибку if (!$this->User_IsAuthorization()) { $this->Message_AddErrorSingle($this->Lang_Get('need_authorization'), $this->Lang_Get('error')); return; } // Если разговор не найден, или пользователь не является его автором (или админом), // возвращаем ошибку if (!($oTalk = $this->Talk_GetTalkById($idTalk)) || $oTalk->getUserId() != $this->oUserCurrent->getId() && !$this->oUserCurrent->isAdministrator()) { $this->Message_AddErrorSingle($this->Lang_Get('talk_not_found'), $this->Lang_Get('error')); return; } // Получаем список всех участников разговора $aTalkUsers = $oTalk->getTalkUsers(); $aUsers = explode(',', $sUsers); // Получаем список пользователей, которые не принимают письма $aUserInBlacklist = $this->Talk_GetBlacklistByTargetId($this->oUserCurrent->getId()); // Обрабатываем добавление по каждому переданному логину пользователя foreach ($aUsers as $sUser) { $sUser = trim($sUser); if ($sUser == '') { continue; } // Попытка добавить себя if (strtolower($sUser) == strtolower($this->oUserCurrent->getLogin())) { $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('talk_speaker_add_self')); continue; } if (($oUser = $this->User_GetUserByLogin($sUser)) && $oUser->getActivate() == 1) { if (!in_array($oUser->getId(), $aUserInBlacklist)) { if (array_key_exists($oUser->getId(), $aTalkUsers)) { switch ($aTalkUsers[$oUser->getId()]->getUserActive()) { // Если пользователь ранее был удален админом разговора, // то добавляем его снова case ModuleTalk::TALK_USER_DELETE_BY_AUTHOR: if ($this->Talk_AddTalkUser(Engine::GetEntity('Talk_TalkUser', array('talk_id' => $idTalk, 'user_id' => $oUser->getId(), 'date_last' => null, 'talk_user_active' => ModuleTalk::TALK_USER_ACTIVE)))) { $this->Notify_SendTalkNew($oUser, $this->oUserCurrent, $oTalk); $aResult[] = array('bStateError' => false, 'sMsgTitle' => $this->Lang_Get('attention'), 'sMsg' => $this->Lang_Get('talk_speaker_add_ok', array('login', $sUser)), 'sUserId' => $oUser->getId(), 'sUserLogin' => $oUser->getLogin(), 'sUserLink' => $oUser->getUserWebPath()); $bState = true; } else { $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('system_error')); } break; // Если пользователь является активным участником разговора, // возвращаем ошибку // Если пользователь является активным участником разговора, // возвращаем ошибку case ModuleTalk::TALK_USER_ACTIVE: $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('talk_speaker_user_already_exist', array('login' => $sUser))); break; // Если пользователь удалил себя из разговора самостоятельно, // то блокируем повторное добавление // Если пользователь удалил себя из разговора самостоятельно, // то блокируем повторное добавление case ModuleTalk::TALK_USER_DELETE_BY_SELF: $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('talk_speaker_delete_by_self', array('login' => $sUser))); break; default: $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('system_error')); } } elseif ($this->Talk_AddTalkUser(Engine::GetEntity('Talk_TalkUser', array('talk_id' => $idTalk, 'user_id' => $oUser->getId(), 'date_last' => null, 'talk_user_active' => ModuleTalk::TALK_USER_ACTIVE)))) { $this->Notify_SendTalkNew($oUser, $this->oUserCurrent, $oTalk); $aResult[] = array('bStateError' => false, 'sMsgTitle' => $this->Lang_Get('attention'), 'sMsg' => $this->Lang_Get('talk_speaker_add_ok', array('login', $sUser)), 'sUserId' => $oUser->getId(), 'sUserLogin' => $oUser->getLogin(), 'sUserLink' => $oUser->getUserWebPath()); $bState = true; } else { $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('system_error')); } } else { // Добавляем пользователь не принимает сообщения $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('talk_user_in_blacklist', array('login' => $sUser))); } } else { // Пользователь не найден в базе данных или не активен $aResult[] = array('bStateError' => true, 'sMsgTitle' => $this->Lang_Get('error'), 'sMsg' => $this->Lang_Get('user_not_found', array('login' => $sUser))); } } // Передаем во вьевер массив результатов обработки по каждому пользователю $this->Viewer_AssignAjax('aUsers', $aResult); }