本文整理汇总了PHP中E::ModuleStream方法的典型用法代码示例。如果您正苦于以下问题:PHP E::ModuleStream方法的具体用法?PHP E::ModuleStream怎么用?PHP E::ModuleStream使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类E
的用法示例。
在下文中一共展示了E::ModuleStream方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Exec
/**
* Запуск обработки
*/
public function Exec()
{
/**
* пользователь авторизован?
*/
if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
// * Получаем и прогружаем необходимые переменные в шаблон
$aTypesList = E::ModuleStream()->GetTypesList($oUserCurrent->getId());
E::ModuleViewer()->Assign('aStreamTypesList', $aTypesList ? $aTypesList : array());
}
}
示例2: Exec
/**
* Запуск обработки
*/
public function Exec()
{
// * пользователь авторизован?
if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
// * Получаем и прогружаем необходимые переменные в шаблон
$aUserSubscribes = E::ModuleStream()->GetUserSubscribes($oUserCurrent->getId());
E::ModuleViewer()->Assign('aStreamSubscribedUsers', $aUserSubscribes ? $aUserSubscribes : array());
// issue#449, список друзей пользователя не передавался в шаблон
$aStreamFriends = E::ModuleUser()->GetUsersFriend($oUserCurrent->getId());
E::ModuleViewer()->Assign('aStreamFriends', $aStreamFriends['collection']);
}
}
示例3: Exec
/**
* Запуск обработки
*/
public function Exec()
{
// * пользователь авторизован?
if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
// * Получаем и прогружаем необходимые переменные в шаблон
$aTypesList = E::ModuleStream()->GetTypesList($oUserCurrent->getId());
$aUserSubscribes = E::ModuleStream()->GetUserSubscribes($oUserCurrent->getId());
$aFriends = E::ModuleUser()->GetUsersFriend($oUserCurrent->getId());
E::ModuleViewer()->Assign('aStreamTypesList', $aTypesList);
E::ModuleViewer()->Assign('aStreamSubscribedUsers', $aUserSubscribes);
E::ModuleViewer()->Assign('aStreamFriends', $aFriends['collection']);
}
}
示例4: isFollow
/**
* Проверяет подписан ли текущий пользователь на этого
*
* @return bool
*/
public function isFollow()
{
if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
return E::ModuleStream()->IsSubscribe($oUserCurrent->getId(), $this->getId());
}
return false;
}
示例5: EventAjaxUserAdd
public function EventAjaxUserAdd()
{
E::ModuleViewer()->SetResponseAjax('json');
if ($this->IsPost()) {
Config::Set('module.user.captcha_use_registration', false);
$oUser = E::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
// * Заполняем поля (данные)
$oUser->setLogin($this->GetPost('user_login'));
$oUser->setMail($this->GetPost('user_mail'));
$oUser->setPassword($this->GetPost('user_password'));
$oUser->setPasswordConfirm($this->GetPost('user_password'));
$oUser->setDateRegister(F::Now());
$oUser->setIpRegister('');
$oUser->setActivate(1);
if ($oUser->_Validate()) {
E::ModuleHook()->Run('registration_validate_after', array('oUser' => $oUser));
$oUser->setPassword($oUser->getPassword(), true);
if (E::ModuleUser()->Add($oUser)) {
E::ModuleHook()->Run('registration_after', array('oUser' => $oUser));
// Подписываем пользователя на дефолтные события в ленте активности
E::ModuleStream()->SwitchUserEventDefaultTypes($oUser->getId());
if ($this->IsPost('user_setadmin')) {
E::ModuleAdmin()->SetAdministrator($oUser->GetId());
}
}
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('registration_ok'));
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('error'));
E::ModuleViewer()->AssignAjax('aErrors', $oUser->_getValidateErrors());
}
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
}
}
示例6: EventCommentDelete
/**
* Удаление/восстановление комментария
*
*/
protected function EventCommentDelete()
{
// * Комментарий существует?
$idComment = F::GetRequestStr('idComment', null, 'post');
if (!($oComment = E::ModuleComment()->GetCommentById($idComment))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
// * Есть права на удаление комментария?
if (!$oComment->isDeletable()) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('not_access'), E::ModuleLang()->Get('error'));
return;
}
// * Устанавливаем пометку о том, что комментарий удален
$oComment->setDelete(($oComment->getDelete() + 1) % 2);
E::ModuleHook()->Run('comment_delete_before', array('oComment' => $oComment));
if (!E::ModuleComment()->UpdateCommentStatus($oComment)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
E::ModuleHook()->Run('comment_delete_after', array('oComment' => $oComment));
// * Формируем текст ответа
if ($bState = (bool) $oComment->getDelete()) {
$sMsg = E::ModuleLang()->Get('comment_delete_ok');
$sTextToggle = E::ModuleLang()->Get('comment_repair');
} else {
$sMsg = E::ModuleLang()->Get('comment_repair_ok');
$sTextToggle = E::ModuleLang()->Get('comment_delete');
}
// * Обновление события в ленте активности
E::ModuleStream()->Write($oComment->getUserId(), 'add_comment', $oComment->getId(), !$oComment->getDelete());
// * Показываем сообщение и передаем переменные в ajax ответ
E::ModuleMessage()->AddNoticeSingle($sMsg, E::ModuleLang()->Get('attention'));
E::ModuleViewer()->AssignAjax('bState', $bState);
E::ModuleViewer()->AssignAjax('sTextToggle', $sTextToggle);
}
示例7: EventAjaxRegistration
/**
* Обработка Ajax регистрации
*/
protected function EventAjaxRegistration()
{
// * Устанавливаем формат Ajax ответа
E::ModuleViewer()->SetResponseAjax('json');
E::ModuleSecurity()->ValidateSendForm();
// * Создаем объект пользователя и устанавливаем сценарий валидации
/** @var ModuleUser_EntityUser $oUser */
$oUser = E::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
// * Заполняем поля (данные)
$oUser->setLogin($this->GetPost('login'));
$oUser->setMail($this->GetPost('mail'));
$oUser->setPassword($this->GetPost('password'));
$oUser->setPasswordConfirm($this->GetPost('password_confirm'));
$oUser->setCaptcha($this->GetPost('captcha'));
$oUser->setDateRegister(F::Now());
$oUser->setIpRegister(F::GetUserIp());
// * Если используется активация, то генерим код активации
if (Config::Get('general.reg.activation')) {
$oUser->setActivate(0);
$oUser->setActivationKey(F::RandomStr());
} else {
$oUser->setActivate(1);
$oUser->setActivationKey(null);
}
E::ModuleHook()->Run('registration_validate_before', array('oUser' => $oUser));
// * Запускаем валидацию
if ($oUser->_Validate()) {
// Сбросим капчу // issue#342.
E::ModuleSession()->Drop(E::ModuleCaptcha()->GetKeyName());
E::ModuleHook()->Run('registration_validate_after', array('oUser' => $oUser));
$oUser->setPassword($oUser->getPassword(), true);
if ($this->_addUser($oUser)) {
E::ModuleHook()->Run('registration_after', array('oUser' => $oUser));
// * Подписываем пользователя на дефолтные события в ленте активности
E::ModuleStream()->SwitchUserEventDefaultTypes($oUser->getId());
// * Если юзер зарегистрировался по приглашению то обновляем инвайт
if (Config::Get('general.reg.invite') && ($oInvite = E::ModuleUser()->GetInviteByCode($this->GetInviteRegister()))) {
$oInvite->setUserToId($oUser->getId());
$oInvite->setDateUsed(F::Now());
$oInvite->setUsed(1);
E::ModuleUser()->UpdateInvite($oInvite);
}
// * Если стоит регистрация с активацией то проводим её
if (Config::Get('general.reg.activation')) {
// * Отправляем на мыло письмо о подтверждении регистрации
E::ModuleNotify()->SendRegistrationActivate($oUser, F::GetRequestStr('password'));
E::ModuleViewer()->AssignAjax('sUrlRedirect', R::GetPath('registration') . 'confirm/');
} else {
E::ModuleNotify()->SendRegistration($oUser, F::GetRequestStr('password'));
$oUser = E::ModuleUser()->GetUserById($oUser->getId());
// * Сразу авторизуем
E::ModuleUser()->Authorization($oUser, false);
$this->DropInviteRegister();
// * Определяем URL для редиректа после авторизации
$sUrl = Config::Get('module.user.redirect_after_registration');
if (F::GetRequestStr('return-path')) {
$sUrl = F::GetRequestStr('return-path');
}
E::ModuleViewer()->AssignAjax('sUrlRedirect', $sUrl ? $sUrl : Config::Get('path.root.url'));
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('registration_ok'));
}
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
return;
}
} else {
// * Получаем ошибки
E::ModuleViewer()->AssignAjax('aErrors', $oUser->_getValidateErrors());
}
}
示例8: AjaxBlogJoin
/**
* Подключение/отключение к блогу
*
*/
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) {
//.........这里部分代码省略.........
示例9: SubmitEdit
//.........这里部分代码省略.........
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_create_blog_error_unknown'), E::ModuleLang()->Get('error'));
return false;
}
// * Проверяем права на постинг в блог
if (!E::ModuleACL()->IsAllowBlog($oBlog, $this->oUserCurrent)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_create_blog_error_noallow'), E::ModuleLang()->Get('error'));
return false;
}
// * Проверяем разрешено ли постить топик по времени
if (isPost('submit_topic_publish') && !$oTopic->getPublishDraft() && !E::ModuleACL()->CanPostTopicTime($this->oUserCurrent)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_time_limit'), E::ModuleLang()->Get('error'));
return;
}
$oTopic->setBlogId($oBlog->getId());
// * Получаемый и устанавливаем разрезанный текст по тегу <cut>
list($sTextShort, $sTextNew, $sTextCut) = E::ModuleText()->Cut($oTopic->getTextSource());
$oTopic->setCutText($sTextCut);
$oTopic->setText(E::ModuleText()->Parser($sTextNew));
// Получаем ссылки, полученные при парсинге текста
$oTopic->setTextLinks(E::ModuleText()->GetLinks());
$oTopic->setTextShort(E::ModuleText()->Parser($sTextShort));
// * Изменяем вопрос/ответы, только если еще никто не голосовал
if ($this->oContentType->isAllow('poll') && F::GetRequestStr('topic_field_question') && F::GetRequest('topic_field_answers', array()) && $oTopic->getQuestionCountVote() == 0) {
$oTopic->setQuestionTitle(strip_tags(F::GetRequestStr('topic_field_question')));
$oTopic->clearQuestionAnswer();
$aAnswers = F::GetRequest('topic_field_answers', array());
foreach ($aAnswers as $sAnswer) {
$sAnswer = trim((string) $sAnswer);
if ($sAnswer) {
$oTopic->addQuestionAnswer($sAnswer);
}
}
}
$aPhotoSetData = E::ModuleMresource()->GetPhotosetData('photoset', $oTopic->getId());
$oTopic->setPhotosetCount($aPhotoSetData['count']);
$oTopic->setPhotosetMainPhotoId($aPhotoSetData['cover']);
// * Publish or save as a draft
$bSendNotify = false;
if (isset($_REQUEST['submit_topic_publish'])) {
// If the topic has not been published then sets date of show (publication date)
if (!$oTopic->getPublish() && !$oTopic->getDateShow()) {
$oTopic->setDateShow(F::Now());
}
$oTopic->setPublish(1);
if ($oTopic->getPublishDraft() == 0) {
$oTopic->setPublishDraft(1);
$oTopic->setDateAdd(F::Now());
$bSendNotify = true;
}
} else {
$oTopic->setPublish(0);
}
// * Принудительный вывод на главную
if (E::ModuleACL()->IsAllowPublishIndex($this->oUserCurrent)) {
if (F::GetRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
} else {
$oTopic->setPublishIndex(0);
}
}
// * Запрет на комментарии к топику
$oTopic->setForbidComment(F::GetRequest('topic_forbid_comment', 0));
// Если запрет на индексацию не устанавливался вручную, то задаем, как у блога
$oBlogType = $oBlog->GetBlogType();
if ($oBlogType && !$oTopic->getIndexIgnoreLock()) {
$oTopic->setTopicIndexIgnore($oBlogType->GetIndexIgnore());
} else {
$oTopic->setTopicIndexIgnore(false);
}
$oTopic->setShowPhotoset(F::GetRequest('topic_show_photoset', 0));
E::ModuleHook()->Run('topic_edit_before', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
// * Сохраняем топик
if ($this->_updateTopic($oTopic)) {
E::ModuleHook()->Run('topic_edit_after', array('oTopic' => $oTopic, 'oBlog' => $oBlog, 'bSendNotify' => &$bSendNotify));
// * Обновляем данные в комментариях, если топик был перенесен в новый блог
if ($iBlogIdOld != $oTopic->getBlogId()) {
E::ModuleComment()->UpdateTargetParentByTargetId($oTopic->getBlogId(), 'topic', $oTopic->getId());
E::ModuleComment()->UpdateTargetParentByTargetIdOnline($oTopic->getBlogId(), 'topic', $oTopic->getId());
}
// * Обновляем количество топиков в блоге
if ($iBlogIdOld != $oTopic->getBlogId()) {
E::ModuleBlog()->RecalculateCountTopicByBlogId($iBlogIdOld);
}
E::ModuleBlog()->RecalculateCountTopicByBlogId($oTopic->getBlogId());
// * Добавляем событие в ленту
E::ModuleStream()->Write($oTopic->getUserId(), 'add_topic', $oTopic->getId(), $oTopic->getPublish() && (!$oBlogType || !$oBlog->getBlogType()->IsPrivate()));
// * Рассылаем о новом топике подписчикам блога
if ($bSendNotify) {
E::ModuleTopic()->SendNotifyTopicNew($oBlog, $oTopic, $oTopic->getUser());
}
if (!$oTopic->getPublish() && !$this->oUserCurrent->isAdministrator() && !$this->oUserCurrent->isModerator() && $this->oUserCurrent->getId() != $oTopic->getUserId()) {
R::Location($oBlog->getUrlFull());
}
R::Location($oTopic->getUrl());
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
F::SysWarning('System Error');
return R::Action('error');
}
}
示例10: EventUnsubscribe
/**
* Отписка от пользователя
*
*/
protected function EventUnsubscribe()
{
/**
* Устанавливаем формат Ajax ответа
*/
E::ModuleViewer()->SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Пользователь с таким ID существует?
*/
if (!E::ModuleUser()->GetUserById(F::GetRequestStr('id'))) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
}
/**
* Отписываем
*/
E::ModuleStream()->UnsubscribeUser($this->oUserCurrent->getId(), F::GetRequestStr('id'));
E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('stream_subscribes_updated'), E::ModuleLang()->Get('attention'));
}
示例11: SubmitAddFriend
/**
* Обработка добавления в друзья
*
* @param ModuleUser_EntityUser $oUser
* @param string $sUserText
* @param ModuleUser_EntityUser $oFriend
*
* @return bool
*/
protected function SubmitAddFriend($oUser, $sUserText, $oFriend = null)
{
/**
* Ограничения на добавления в друзья, т.к. приглашение отправляется в личку, то и ограничиваем по ней
*/
if (!E::ModuleACL()->CanSendTalkTime($this->oUserCurrent)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('user_friend_add_time_limit'), E::ModuleLang()->Get('error'));
return false;
}
/**
* Обрабатываем текст заявки
*/
$sUserText = E::ModuleText()->Parse($sUserText);
/**
* Создаем связь с другом
*/
/** @var ModuleUser_EntityFriend $oFriendNew */
$oFriendNew = E::GetEntity('User_Friend');
$oFriendNew->setUserTo($oUser->getId());
$oFriendNew->setUserFrom($this->oUserCurrent->getId());
// Добавляем заявку в друзья
$oFriendNew->setStatusFrom(ModuleUser::USER_FRIEND_OFFER);
$oFriendNew->setStatusTo(ModuleUser::USER_FRIEND_NULL);
$bStateError = $oFriend ? !E::ModuleUser()->UpdateFriend($oFriendNew) : !E::ModuleUser()->AddFriend($oFriendNew);
if (!$bStateError) {
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('user_friend_offer_send'), E::ModuleLang()->Get('attention'));
$sTitle = E::ModuleLang()->Get('user_friend_offer_title', array('login' => $this->oUserCurrent->getLogin(), 'friend' => $oUser->getLogin()));
F::IncludeLib('XXTEA/encrypt.php');
$sCode = $this->oUserCurrent->getId() . '_' . $oUser->getId();
$sCode = rawurlencode(base64_encode(xxtea_encrypt($sCode, Config::Get('module.talk.encrypt'))));
$aPath = array('accept' => R::GetPath('profile') . 'friendoffer/accept/?code=' . $sCode, 'reject' => R::GetPath('profile') . 'friendoffer/reject/?code=' . $sCode);
$sText = E::ModuleLang()->Get('user_friend_offer_text', array('login' => $this->oUserCurrent->getLogin(), 'accept_path' => $aPath['accept'], 'reject_path' => $aPath['reject'], 'user_text' => $sUserText));
$oTalk = E::ModuleTalk()->SendTalk($sTitle, $sText, $this->oUserCurrent, array($oUser), false, false);
/**
* Отправляем пользователю заявку
*/
E::ModuleNotify()->SendUserFriendNew($oUser, $this->oUserCurrent, $sUserText, R::GetPath('talk') . 'read/' . $oTalk->getId() . '/');
/**
* Удаляем отправляющего юзера из переписки
*/
E::ModuleTalk()->DeleteTalkUserByArray($oTalk->getId(), $this->oUserCurrent->getId());
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
}
/**
* Подписываем запрашивающего дружбу на
*/
E::ModuleStream()->SubscribeUser($this->oUserCurrent->getId(), $oUser->getId());
$oViewerLocal = $this->GetViewerLocal();
$oViewerLocal->Assign('oUserFriend', $oFriendNew);
E::ModuleViewer()->AssignAjax('sToggleText', $oViewerLocal->Fetch('actions/profile/action.profile.friend_item.tpl'));
}