本文整理汇总了PHP中ModuleUser_EntityUser::getMail方法的典型用法代码示例。如果您正苦于以下问题:PHP ModuleUser_EntityUser::getMail方法的具体用法?PHP ModuleUser_EntityUser::getMail怎么用?PHP ModuleUser_EntityUser::getMail使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModuleUser_EntityUser
的用法示例。
在下文中一共展示了ModuleUser_EntityUser::getMail方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: SendUserMarkImageNew
/**
* Отправляет пользователю сообщение о добавлении его в друзья
*
* @param ModuleUser_EntityUser $oUserTo
* @param ModuleUser_EntityUser $oUserFrom
* @param string $sText
*/
public function SendUserMarkImageNew(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, $sText)
{
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if (Config::Get('module.notify.delayed')) {
$oNotifyTask = Engine::GetEntity('Notify_Task', array('user_mail' => $oUserTo->getMail(), 'user_login' => $oUserTo->getLogin(), 'notify_text' => $sText, 'notify_subject' => $this->Lang_Get('plugin.lsgallery.lsgallery_marked_subject'), 'date_created' => date("Y-m-d H:i:s"), 'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL));
if (Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
} else {
$this->oMapper->AddTask($oNotifyTask);
}
} else {
/**
* Отправляем мыло
*/
$this->Mail_SetAdress($oUserTo->getMail(), $oUserTo->getLogin());
$this->Mail_SetSubject($this->Lang_Get('plugin.lsgallery.lsgallery_marked_subject'));
$this->Mail_SetBody($sText);
$this->Mail_setHTML();
$this->Mail_Send();
}
}
示例2: Authorization
/**
* Авторизовывает юзера
*
* @param ModuleUser_EntityUser $oUser Объект пользователя
* @param bool $bRemember Запоминать пользователя или нет
* @param string $sKey Ключ авторизации для куков
* @return bool
*/
public function Authorization(ModuleUser_EntityUser $oUser, $bRemember = true, $sKey = null)
{
if (!Config::Get('plugin.blacklist.check_authorization') || $oUser && $oUser->isAdministrator() || $oUser && !$this->PluginBlacklist_ModuleBlacklist_blackMail($oUser->getMail(), $oUser->getLogin())) {
return parent::Authorization($oUser, $bRemember, $sKey);
}
$this->Message_AddErrorSingle($this->Lang_Get(Config::Get('plugin.blacklist.check_ip_exact') ? 'plugin.blacklist.user_in_exact_blacklist' : 'plugin.blacklist.user_in_blacklist'));
return false;
}
示例3: Update
/**
* Обновляет юзера
*
* @param ModuleUser_EntityUser $oUser Объект пользователя
* @return bool
*/
public function Update(ModuleUser_EntityUser $oUser)
{
$sql = "UPDATE " . Config::Get('db.table.user') . "\n SET\n user_password = ? ,\n user_mail = ? ,\n user_skill = ? ,\n user_date_activate = ? ,\n user_date_comment_last = ? ,\n user_rating = ? ,\n user_count_vote = ? ,\n user_activate = ? ,\n user_activate_key = ? ,\n user_profile_name = ? ,\n user_profile_sex = ? ,\n user_profile_country = ? ,\n user_profile_region = ? ,\n user_profile_city = ? ,\n user_profile_birthday = ? ,\n user_profile_about = ? ,\n user_profile_date = ? ,\n user_profile_avatar = ? ,\n user_profile_foto = ? ,\n user_settings_notice_new_topic = ? ,\n user_settings_notice_new_comment = ? ,\n user_settings_notice_new_talk = ? ,\n user_settings_notice_reply_comment = ? ,\n user_settings_notice_new_friend = ? ,\n user_settings_timezone = ?\n WHERE user_id = ?\n ";
if ($this->oDb->query($sql, $oUser->getPassword(), $oUser->getMail(), $oUser->getSkill(), $oUser->getDateActivate(), $oUser->getDateCommentLast(), $oUser->getRating(), $oUser->getCountVote(), $oUser->getActivate(), $oUser->getActivateKey(), $oUser->getProfileName(), $oUser->getProfileSex(), $oUser->getProfileCountry(), $oUser->getProfileRegion(), $oUser->getProfileCity(), $oUser->getProfileBirthday(), $oUser->getProfileAbout(), $oUser->getProfileDate(), $oUser->getProfileAvatar(), $oUser->getProfileFoto(), $oUser->getSettingsNoticeNewTopic(), $oUser->getSettingsNoticeNewComment(), $oUser->getSettingsNoticeNewTalk(), $oUser->getSettingsNoticeReplyComment(), $oUser->getSettingsNoticeNewFriend(), $oUser->getSettingsTimezone(), $oUser->getId())) {
return true;
}
return false;
}
示例4: EventAjaxSubscribeToggle
/**
* Изменение состояния подписки
*/
protected function EventAjaxSubscribeToggle()
{
/**
* Устанавливаем формат Ajax ответа
*/
E::ModuleViewer()->SetResponseAjax('json');
/**
* Получаем емайл подписки и проверяем его на валидность
*/
$sMail = F::GetRequestStr('mail');
if ($this->oUserCurrent) {
$sMail = $this->oUserCurrent->getMail();
}
if (!F::CheckVal($sMail, 'mail')) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('registration_mail_error'), E::ModuleLang()->Get('error'));
return;
}
/**
* Получаем тип объекта подписки
*/
$sTargetType = F::GetRequestStr('target_type');
if (!E::ModuleSubscribe()->IsAllowTargetType($sTargetType)) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
$sTargetId = F::GetRequestStr('target_id') ? F::GetRequestStr('target_id') : null;
$iValue = F::GetRequest('value') ? 1 : 0;
$oSubscribe = null;
/**
* Есть ли доступ к подписке гостям?
*/
if (!$this->oUserCurrent && !E::ModuleSubscribe()->IsAllowTargetForGuest($sTargetType)) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('need_authorization'), E::ModuleLang()->Get('error'));
return;
}
/**
* Проверка объекта подписки
*/
if (!E::ModuleSubscribe()->CheckTarget($sTargetType, $sTargetId, $iValue)) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
/**
* Если подписка еще не существовала, то создаем её
*/
if ($oSubscribe = E::ModuleSubscribe()->AddSubscribeSimple($sTargetType, $sTargetId, $sMail, $this->oUserCurrent ? $this->oUserCurrent->getId() : null)) {
$oSubscribe->setStatus($iValue);
E::ModuleSubscribe()->UpdateSubscribe($oSubscribe);
E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('subscribe_change_ok'), E::ModuleLang()->Get('attention'));
return;
}
E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
示例5: EventAjaxSubscribeToggle
/**
* Изменение состояния подписки
*/
protected function EventAjaxSubscribeToggle()
{
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Получаем емайл подписки и проверяем его на валидность
*/
$sMail = getRequestStr('mail');
if ($this->oUserCurrent) {
$sMail = $this->oUserCurrent->getMail();
}
if (!func_check($sMail, 'mail')) {
$this->Message_AddError($this->Lang_Get('field.email.notices.error'), $this->Lang_Get('common.error.error'));
return;
}
/**
* Получаем тип объекта подписки
*/
$sTargetType = getRequestStr('target_type');
if (!$this->Subscribe_IsAllowTargetType($sTargetType)) {
return $this->EventErrorDebug();
}
$sTargetId = getRequestStr('target_id') ? getRequestStr('target_id') : null;
$iValue = getRequest('value') ? 1 : 0;
$oSubscribe = null;
/**
* Есть ли доступ к подписке гостям?
*/
if (!$this->oUserCurrent and !$this->Subscribe_IsAllowTargetForGuest($sTargetType)) {
$this->Message_AddError($this->Lang_Get('common.error.need_authorization'), $this->Lang_Get('common.error.error'));
return;
}
/**
* Проверка объекта подписки
*/
if (!$this->Subscribe_CheckTarget($sTargetType, $sTargetId, $iValue)) {
return $this->EventErrorDebug();
}
/**
* Если подписка еще не существовала, то создаем её
*/
if ($oSubscribe = $this->Subscribe_AddSubscribeSimple($sTargetType, $sTargetId, $sMail, $this->oUserCurrent ? $this->oUserCurrent->getId() : null)) {
$oSubscribe->setStatus($iValue);
$this->Subscribe_UpdateSubscribe($oSubscribe);
$this->Message_AddNotice($this->Lang_Get('common.success.save'), $this->Lang_Get('common.attention'));
return;
}
return $this->EventErrorDebug();
}
示例6: EventAccount
/**
* Форма смены пароля, емайла
*/
protected function EventAccount()
{
/**
* Устанавливаем title страницы
*/
E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('settings_menu_profile'));
$this->sMenuSubItemSelect = 'account';
/**
* Если нажали кнопку "Сохранить"
*/
if (isPost('submit_account_edit')) {
E::ModuleSecurity()->ValidateSendForm();
$bError = false;
/**
* Проверка мыла
*/
if (F::CheckVal(F::GetRequestStr('mail'), 'mail')) {
if (($oUserMail = E::ModuleUser()->GetUserByMail(F::GetRequestStr('mail'))) && $oUserMail->getId() != $this->oUserCurrent->getId()) {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_profile_mail_error_used'), E::ModuleLang()->Get('error'));
$bError = true;
}
} else {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_profile_mail_error'), E::ModuleLang()->Get('error'));
$bError = true;
}
/**
* Проверка на смену пароля
*/
if ($sPassword = $this->GetPost('password')) {
if (($nMinLen = Config::Get('module.security.password_len')) < 3) {
$nMinLen = 3;
}
if (F::CheckVal($sPassword, 'password', $nMinLen)) {
if ($sPassword == $this->GetPost('password_confirm')) {
if (E::ModuleSecurity()->CheckSalted($this->oUserCurrent->getPassword(), $this->GetPost('password_now'), 'pass')) {
$this->oUserCurrent->setPassword($sPassword, true);
} else {
$bError = true;
E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_profile_password_current_error'), E::ModuleLang()->Get('error'));
}
} else {
$bError = true;
E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_profile_password_confirm_error'), E::ModuleLang()->Get('error'));
}
} else {
$bError = true;
E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_profile_password_new_error', array('num' => $nMinLen)), E::ModuleLang()->Get('error'));
}
}
/**
* Ставим дату последнего изменения
*/
$this->oUserCurrent->setProfileDate(F::Now());
/**
* Запускаем выполнение хуков
*/
E::ModuleHook()->Run('settings_account_save_before', array('oUser' => $this->oUserCurrent, 'bError' => &$bError));
/**
* Сохраняем изменения
*/
if (!$bError) {
if (E::ModuleUser()->Update($this->oUserCurrent)) {
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('settings_account_submit_ok'));
/**
* Подтверждение смены емайла
*/
if (F::GetRequestStr('mail') && F::GetRequestStr('mail') != $this->oUserCurrent->getMail()) {
if ($oChangemail = E::ModuleUser()->MakeUserChangemail($this->oUserCurrent, F::GetRequestStr('mail'))) {
if ($oChangemail->getMailFrom()) {
E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('settings_profile_mail_change_from_notice'));
} else {
E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('settings_profile_mail_change_to_notice'));
}
}
}
E::ModuleHook()->Run('settings_account_save_after', array('oUser' => $this->oUserCurrent));
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
}
}
}
}
示例7: Send
/**
* Универсальный метод отправки уведомлений на email
*
* @param ModuleUser_EntityUser|string $oUserTo Кому отправляем (пользователь или email)
* @param string $sTemplate Шаблон для отправки
* @param string $sSubject Тема письма
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
* @param string|null $sPluginName Плагин из которого происходит отправка
*/
public function Send($oUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null)
{
if ($oUserTo instanceof ModuleUser_EntityUser) {
$sMail = $oUserTo->getMail();
$sName = $oUserTo->getLogin();
} else {
$sMail = $oUserTo;
$sName = '';
}
/**
* Передаём в шаблон переменные
*/
foreach ($aAssign as $k => $v) {
$this->oViewerLocal->Assign($k, $v);
}
/**
* Формируем шаблон
*/
$sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if (Config::Get('module.notify.delayed')) {
$oNotifyTask = Engine::GetEntity('Notify_Task', array('user_mail' => $sMail, 'user_login' => $sName, 'notify_text' => $sBody, 'notify_subject' => $sSubject, 'date_created' => date("Y-m-d H:i:s"), 'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL));
if (Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
} else {
$this->oMapper->AddTask($oNotifyTask);
}
} else {
/**
* Отправляем мыло
*/
$this->Mail_SetAdress($sMail, $sName);
$this->Mail_SetSubject($sSubject);
$this->Mail_SetBody($sBody);
$this->Mail_setHTML();
$this->Mail_Send();
}
}
示例8: SubmitComment
//.........这里部分代码省略.........
return;
}
/**
* Проверям на какой коммент отвечаем
*/
$sParentId = (int) getRequest('reply');
if (!func_check($sParentId, 'id')) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'), $this->Lang_Get('error'));
return;
}
$oCommentParent = null;
if ($sParentId != 0) {
/**
* Проверяем существует ли комментарий на который отвечаем
*/
if (!($oCommentParent = $this->Comment_GetCommentById($sParentId))) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'), $this->Lang_Get('error'));
return;
}
/**
* Проверяем из одного топика ли новый коммент и тот на который отвечаем
*/
if ($oCommentParent->getTargetId() != $oTopic->getId()) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'), $this->Lang_Get('error'));
return;
}
} else {
/**
* Корневой комментарий
*/
$sParentId = null;
}
/**
* Проверка на дублирующий коммент
*/
if ($this->Comment_GetCommentUnique($oTopic->getId(), 'topic', $this->oUserCurrent->getId(), $sParentId, md5($sText))) {
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_spam'), $this->Lang_Get('error'));
return;
}
/**
* Создаём коммент
*/
$oCommentNew = Engine::GetEntity('Comment');
$oCommentNew->setTargetId($oTopic->getId());
$oCommentNew->setTargetType('topic');
$oCommentNew->setTargetParentId($oTopic->getBlog()->getId());
$oCommentNew->setUserId($this->oUserCurrent->getId());
$oCommentNew->setText($sText);
$oCommentNew->setDate(date("Y-m-d H:i:s"));
$oCommentNew->setUserIp(func_getIp());
$oCommentNew->setPid($sParentId);
$oCommentNew->setTextHash(md5($sText));
$oCommentNew->setPublish($oTopic->getPublish());
/**
* Добавляем коммент
*/
$this->Hook_Run('comment_add_before', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
if ($this->Comment_AddComment($oCommentNew)) {
$this->Hook_Run('comment_add_after', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
$this->Viewer_AssignAjax('sCommentId', $oCommentNew->getId());
if ($oTopic->getPublish()) {
/**
* Добавляем коммент в прямой эфир если топик не в черновиках
*/
$oCommentOnline = Engine::GetEntity('Comment_CommentOnline');
$oCommentOnline->setTargetId($oCommentNew->getTargetId());
$oCommentOnline->setTargetType($oCommentNew->getTargetType());
$oCommentOnline->setTargetParentId($oCommentNew->getTargetParentId());
$oCommentOnline->setCommentId($oCommentNew->getId());
$this->Comment_AddCommentOnline($oCommentOnline);
}
/**
* Сохраняем дату последнего коммента для юзера
*/
$this->oUserCurrent->setDateCommentLast(date("Y-m-d H:i:s"));
$this->User_Update($this->oUserCurrent);
/**
* Список емайлов на которые не нужно отправлять уведомление
*/
$aExcludeMail = array($this->oUserCurrent->getMail());
/**
* Отправляем уведомление тому на чей коммент ответили
*/
if ($oCommentParent and $oCommentParent->getUserId() != $oTopic->getUserId() and $oCommentNew->getUserId() != $oCommentParent->getUserId()) {
$oUserAuthorComment = $oCommentParent->getUser();
$aExcludeMail[] = $oUserAuthorComment->getMail();
$this->Notify_SendCommentReplyToAuthorParentComment($oUserAuthorComment, $oTopic, $oCommentNew, $this->oUserCurrent);
}
/**
* Отправка уведомления автору топика
*/
$this->Subscribe_Send('topic_new_comment', $oTopic->getId(), 'notify.comment_new.tpl', $this->Lang_Get('notify_subject_comment_new'), array('oTopic' => $oTopic, 'oComment' => $oCommentNew, 'oUserComment' => $this->oUserCurrent), $aExcludeMail);
/**
* Добавляем событие в ленту
*/
$this->Stream_write($oCommentNew->getUserId(), 'add_comment', $oCommentNew->getId(), $oTopic->getPublish() && $oTopic->getBlog()->getType() != 'close');
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'), $this->Lang_Get('error'));
}
}
示例9: EventAccount
/**
* Форма смены пароля, емайла
*/
protected function EventAccount()
{
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_profile'));
$this->sMenuSubItemSelect = 'account';
/**
* Если нажали кнопку "Сохранить"
*/
if (isPost('submit_account_edit')) {
$this->Security_ValidateSendForm();
$bError = false;
/**
* Проверка мыла
*/
if (func_check(getRequestStr('mail'), 'mail')) {
if ($oUserMail = $this->User_GetUserByMail(getRequestStr('mail')) and $oUserMail->getId() != $this->oUserCurrent->getId()) {
$this->Message_AddError($this->Lang_Get('settings_profile_mail_error_used'), $this->Lang_Get('error'));
$bError = true;
}
} else {
$this->Message_AddError($this->Lang_Get('settings_profile_mail_error'), $this->Lang_Get('error'));
$bError = true;
}
/**
* Проверка на смену пароля
*/
if (getRequestStr('password', '') != '') {
if (func_check(getRequestStr('password'), 'password', 5)) {
if (getRequestStr('password') == getRequestStr('password_confirm')) {
if (func_encrypt(getRequestStr('password_now')) == $this->oUserCurrent->getPassword()) {
$this->oUserCurrent->setPassword(func_encrypt(getRequestStr('password')));
} else {
$bError = true;
$this->Message_AddError($this->Lang_Get('settings_profile_password_current_error'), $this->Lang_Get('error'));
}
} else {
$bError = true;
$this->Message_AddError($this->Lang_Get('settings_profile_password_confirm_error'), $this->Lang_Get('error'));
}
} else {
$bError = true;
$this->Message_AddError($this->Lang_Get('settings_profile_password_new_error'), $this->Lang_Get('error'));
}
}
/**
* Ставим дату последнего изменения
*/
$this->oUserCurrent->setProfileDate(date("Y-m-d H:i:s"));
/**
* Запускаем выполнение хуков
*/
$this->Hook_Run('settings_account_save_before', array('oUser' => $this->oUserCurrent, 'bError' => &$bError));
/**
* Сохраняем изменения
*/
if (!$bError) {
if ($this->User_Update($this->oUserCurrent)) {
$this->Message_AddNoticeSingle($this->Lang_Get('settings_account_submit_ok'));
/**
* Подтверждение смены емайла
*/
if (getRequestStr('mail') and getRequestStr('mail') != $this->oUserCurrent->getMail()) {
if ($oChangemail = $this->User_MakeUserChangemail($this->oUserCurrent, getRequestStr('mail'))) {
if ($oChangemail->getMailFrom()) {
$this->Message_AddNotice($this->Lang_Get('settings_profile_mail_change_from_notice'));
} else {
$this->Message_AddNotice($this->Lang_Get('settings_profile_mail_change_to_notice'));
}
}
}
$this->Hook_Run('settings_account_save_after', array('oUser' => $this->oUserCurrent));
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
}
}
}
}
示例10: SubmitAdd
//.........这里部分代码省略.........
return false;
}
/**
* Определяем в какой блог делаем запись
*/
$iBlogId = $oTopic->getBlogId();
if ($iBlogId == 0) {
$oBlog = $this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId());
} else {
$oBlog = $this->Blog_GetBlogById($iBlogId);
}
/**
* Если блог не определен выдаем предупреждение
*/
if (!$oBlog) {
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_unknown'), $this->Lang_Get('error'));
return false;
}
/**
* Проверяем права на постинг в блог
*/
if (!$this->ACL_IsAllowBlog($oBlog, $this->oUserCurrent)) {
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_noallow'), $this->Lang_Get('error'));
return false;
}
/**
* Проверяем разрешено ли постить топик по времени
*/
if (isPost('submit_topic_publish') and !$this->ACL_CanPostTopicTime($this->oUserCurrent)) {
$this->Message_AddErrorSingle($this->Lang_Get('topic_time_limit'), $this->Lang_Get('error'));
return;
}
/**
* Теперь можно смело добавлять топик к блогу
*/
$oTopic->setBlogId($oBlog->getId());
$oTopic->setText($this->Text_Parser($oTopic->getTextSource()));
$oTopic->setTextShort($oTopic->getText());
$oTopic->setCutText(null);
/**
* Публикуем или сохраняем
*/
if (isset($_REQUEST['submit_topic_publish'])) {
$oTopic->setPublish(1);
$oTopic->setPublishDraft(1);
} else {
$oTopic->setPublish(0);
$oTopic->setPublishDraft(0);
}
/**
* Принудительный вывод на главную
*/
$oTopic->setPublishIndex(0);
if ($this->ACL_IsAllowPublishIndex($this->oUserCurrent)) {
if (getRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
}
}
/**
* Запрет на комментарии к топику
*/
$oTopic->setForbidComment(0);
if (getRequest('topic_forbid_comment')) {
$oTopic->setForbidComment(1);
}
/**
* Запускаем выполнение хуков
*/
$this->Hook_Run('topic_add_before', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
/**
* Добавляем топик
*/
if ($this->Topic_AddTopic($oTopic)) {
$this->Hook_Run('topic_add_after', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
/**
* Получаем топик, чтоб подцепить связанные данные
*/
$oTopic = $this->Topic_GetTopicById($oTopic->getId());
/**
* Обновляем количество топиков в блоге
*/
$this->Blog_RecalculateCountTopicByBlogId($oTopic->getBlogId());
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment', $oTopic->getId(), $this->oUserCurrent->getMail());
//Делаем рассылку спама всем, кто состоит в этом блоге
if ($oTopic->getPublish() == 1 and $oBlog->getType() != 'personal') {
$this->Topic_SendNotifyTopicNew($oBlog, $oTopic, $this->oUserCurrent);
}
/**
* Добавляем событие в ленту
*/
$this->Stream_write($oTopic->getUserId(), 'add_topic', $oTopic->getId(), $oTopic->getPublish() && $oBlog->getType() != 'close');
Router::Location($oTopic->getUrl());
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
return Router::Action('error');
}
}
示例11: submitPostAdd
//.........这里部分代码省略.........
*/
$oPost->setTitle(forum_parse_title(getRequestStr('post_title')));
$oPost->setTopicId($oTopic->getId());
$oPost->setUserIp(func_getIp());
$oPost->setText($this->PluginForum_Forum_TextParse(getRequestStr('post_text')));
$oPost->setTextSource(getRequestStr('post_text'));
$oPost->setTextHash(md5(getRequestStr('post_text')));
$oPost->setDateAdd(date('Y-m-d H:i:s'));
if (!$this->User_IsAuthorization()) {
$oPost->setUserId(0);
$oPost->setGuestName(strip_tags(getRequestStr('guest_name')));
} else {
$oPost->setUserId($this->oUserCurrent->getId());
}
if (getRequestStr('replyto')) {
$oPost->setParentId((int) getRequestStr('replyto'));
}
/**
* Вложения
*/
$sTargetTmp = isset($_COOKIE['ls_fattach_target_tmp']) ? $_COOKIE['ls_fattach_target_tmp'] : 'null';
$aFiles = $this->PluginForum_Forum_GetFileItemsByTargetTmp($sTargetTmp);
/**
* Проверяем поля формы
*/
if (!$this->checkPostFields($oPost)) {
return false;
}
/**
* Вызов хуков
*/
$this->Hook_Run('forum_post_add_before', array('oPost' => $oPost, 'oTopic' => $oTopic, 'oForum' => $oForum));
/**
* Добавляем
*/
if ($this->PluginForum_Forum_AddPost($oPost)) {
$this->Hook_Run('forum_post_add_after', array('oPost' => $oPost, 'oTopic' => $oTopic, 'oForum' => $oForum));
/**
* Привязываем вложения к id поста
* TODO: здесь нужно это делать одним запросом, а не перебором сущностей
*/
if (count($aFiles)) {
foreach ($aFiles as $oFile) {
$oFile->setTargetTmp(null);
$this->PluginForum_Forum_UpdateFile($oFile);
$oPost->files->add($oFile);
}
$oPost->Update();
$this->PluginForum_Forum_UpdatePost($oPost);
}
/**
* Удаляем временную куку
*/
setcookie('ls_fattach_target_tmp', null);
/**
* Обновляем инфу в топике
*/
$oTopic->setLastPostId($oPost->getId());
$oTopic->setLastPostDate($oPost->getDateAdd());
$oTopic->setCountPost((int) $oTopic->getCountPost() + 1);
$this->PluginForum_Forum_SaveTopic($oTopic);
/**
* Обновляем инфу в форуме
*/
$oForum->setLastPostId($oPost->getId());
$oForum->setLastPostDate($oPost->getDateAdd());
$oForum->setCountPost((int) $oForum->getCountPost() + 1);
$this->PluginForum_Forum_SaveForum($oForum);
/**
* Обновляем инфу о пользователе
*/
$this->PluginForum_Forum_increaseUserPosts($this->oUserCurrent);
/**
* Список емайлов на которые не нужно отправлять уведомление
*/
$aExcludeMail = array();
if ($this->oUserCurrent) {
/**
* Исключаем автора поста из списка рассылки
*/
$aExcludeMail[] = $this->oUserCurrent->getMail();
/**
* Добавляем событие в ленту
*/
$this->Stream_write($oPost->getUserId(), 'add_forum_post', $oPost->getId());
}
/**
* Отправка уведомления подписчикам темы
*/
$this->PluginForum_Forum_SendSubscribeNewPost($oTopic->getId(), array('oForum' => $oForum, 'oTopic' => $oTopic, 'oPost' => $oPost, 'oUser' => $this->oUserCurrent), $aExcludeMail);
/**
* Отправка уведомления на отвеченные посты
*/
$this->PluginForum_Forum_SendNotifyReply($oPost, $aExcludeMail);
Router::Location($oPost->getUrlFull());
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
return Router::Action('error');
}
}
示例12: SubmitComment
//.........这里部分代码省略.........
return;
}
$iMin = Config::Val('module.comment.min_length', 2);
$iMax = Config::Val('module.comment.max_length', 0);
if (!F::CheckVal($sText, 'text', $iMin, $iMax)) {
if ($iMax) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_comment_text_len', array('min' => $iMin, 'max' => $iMax)), E::ModuleLang()->Get('error'));
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_comment_text_min', array('min' => $iMin)), E::ModuleLang()->Get('error'));
}
return;
}
// * Проверям на какой коммент отвечаем
if (!$this->isPost('reply')) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
$oCommentParent = null;
$iParentId = intval(F::GetRequest('reply'));
if ($iParentId != 0) {
// * Проверяем существует ли комментарий на который отвечаем
if (!($oCommentParent = E::ModuleComment()->GetCommentById($iParentId))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
// * Проверяем из одного топика ли новый коммент и тот на который отвечаем
if ($oCommentParent->getTargetId() != $oTopic->getId()) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
} else {
// * Корневой комментарий
$iParentId = null;
}
// * Проверка на дублирующий коммент
if (E::ModuleComment()->GetCommentUnique($oTopic->getId(), 'topic', $this->oUserCurrent->getId(), $iParentId, md5($sText))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_comment_spam'), E::ModuleLang()->Get('error'));
return;
}
// * Создаём коммент
/** @var ModuleComment_EntityComment $oCommentNew */
$oCommentNew = E::GetEntity('Comment');
$oCommentNew->setTargetId($oTopic->getId());
$oCommentNew->setTargetType('topic');
$oCommentNew->setTargetParentId($oTopic->getBlog()->getId());
$oCommentNew->setUserId($this->oUserCurrent->getId());
$oCommentNew->setText($sText);
$oCommentNew->setDate(F::Now());
$oCommentNew->setUserIp(F::GetUserIp());
$oCommentNew->setPid($iParentId);
$oCommentNew->setTextHash(md5($sText));
$oCommentNew->setPublish($oTopic->getPublish());
// * Добавляем коммент
E::ModuleHook()->Run('comment_add_before', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
if (E::ModuleComment()->AddComment($oCommentNew)) {
E::ModuleHook()->Run('comment_add_after', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
E::ModuleViewer()->AssignAjax('sCommentId', $oCommentNew->getId());
if ($oTopic->getPublish()) {
// * Добавляем коммент в прямой эфир если топик не в черновиках
/** @var ModuleComment_EntityCommentOnline $oCommentOnline */
$oCommentOnline = E::GetEntity('Comment_CommentOnline');
$oCommentOnline->setTargetId($oCommentNew->getTargetId());
$oCommentOnline->setTargetType($oCommentNew->getTargetType());
$oCommentOnline->setTargetParentId($oCommentNew->getTargetParentId());
$oCommentOnline->setCommentId($oCommentNew->getId());
E::ModuleComment()->AddCommentOnline($oCommentOnline);
}
// * Список емайлов на которые не нужно отправлять уведомление
$aExcludeMail = array($this->oUserCurrent->getMail());
// * Отправляем уведомление тому на чей коммент ответили
if ($oCommentParent && $oCommentParent->getUserId() != $oTopic->getUserId() && $oCommentNew->getUserId() != $oCommentParent->getUserId()) {
$oUserAuthorComment = $oCommentParent->getUser();
$aExcludeMail[] = $oUserAuthorComment->getMail();
E::ModuleNotify()->SendCommentReplyToAuthorParentComment($oUserAuthorComment, $oTopic, $oCommentNew, $this->oUserCurrent);
}
// issue 131 (https://github.com/altocms/altocms/issues/131)
// Не работает настройка уведомлений о комментариях к своим топикам
// Уберём автора топика из рассылки
/** @var ModuleTopic_EntityTopic $oTopic */
$aExcludeMail[] = $oTopic->getUser()->getMail();
// Отправим ему сообщение через отдельный метод, который проверяет эту настройку
/** @var ModuleComment_EntityComment $oCommentNew */
E::ModuleNotify()->SendCommentNewToAuthorTopic($oTopic->getUser(), $oTopic, $oCommentNew, $this->oUserCurrent);
// * Отправка уведомления всем, кто подписан на топик кроме автора
E::ModuleSubscribe()->Send('topic_new_comment', $oTopic->getId(), 'comment_new.tpl', E::ModuleLang()->Get('notify_subject_comment_new'), array('oTopic' => $oTopic, 'oComment' => $oCommentNew, 'oUserComment' => $this->oUserCurrent), $aExcludeMail);
// * Подписываем автора коммента на обновления в трекере
$oTrack = E::ModuleSubscribe()->AddTrackSimple('topic_new_comment', $oTopic->getId(), $this->oUserCurrent->getId());
if ($oTrack) {
//если пользователь не отписался от обновлений топика
if (!$oTrack->getStatus()) {
$oTrack->setStatus(1);
E::ModuleSubscribe()->UpdateTrack($oTrack);
}
}
// * Добавляем событие в ленту
E::ModuleStream()->Write($oCommentNew->getUserId(), 'add_comment', $oCommentNew->getId(), $oTopic->getPublish() && !$oTopic->getBlog()->IsPrivate());
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
}
}
示例13: Send
/**
* Универсальный метод отправки уведомлений на email
*
* @param ModuleUser_EntityUser|string $xUserTo Кому отправляем (пользователь или email)
* @param string $sTemplate Шаблон для отправки
* @param string $sSubject Тема письма
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
* @param string|null $sPluginName Плагин из которого происходит отправка
* @param bool $bForceSend Отправлять сразу, даже при опции module.notify.delayed = true
*
* @return bool
*/
public function Send($xUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null, $bForceSend = false)
{
if ($xUserTo instanceof ModuleUser_EntityUser) {
$sMail = $xUserTo->getMail();
$sName = $xUserTo->getLogin();
} else {
$sMail = $xUserTo;
$sName = '';
}
/**
* Передаём в шаблон переменные
*/
foreach ($aAssign as $sVarName => $sValue) {
$this->oViewerLocal->Assign($sVarName, $sValue);
}
/**
* Формируем шаблон
*/
$sTemplate = $this->sPrefix . $sTemplate;
$sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if (Config::Get('module.notify.delayed') && !$bForceSend) {
$oNotifyTask = E::GetEntity('Notify_Task', array('user_mail' => $sMail, 'user_login' => $sName, 'notify_text' => $sBody, 'notify_subject' => $sSubject, 'date_created' => F::Now(), 'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL));
if (Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
$bResult = true;
} else {
$bResult = $this->oMapper->AddTask($oNotifyTask);
}
} else {
// * Отправляем e-mail
E::ModuleMail()->SetAdress($sMail, $sName);
E::ModuleMail()->SetSubject($sSubject);
E::ModuleMail()->SetBody($sBody);
E::ModuleMail()->SetHTML();
$bResult = E::ModuleMail()->Send();
}
return $bResult;
}
示例14: SubmitAdd
//.........这里部分代码省略.........
return false;
}
// * Теперь можно смело добавлять топик к блогу
$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->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', 0);
$oTopic->setPhotosetCount($aPhotoSetData['count']);
if ($aPhotoSetData['cover']) {
$oTopic->setPhotosetMainPhotoId($aPhotoSetData['cover']);
}
// * Публикуем или сохраняем
if (isset($_REQUEST['submit_topic_publish'])) {
$oTopic->setPublish(1);
$oTopic->setPublishDraft(1);
$oTopic->setDateShow(F::Now());
} else {
$oTopic->setPublish(0);
$oTopic->setPublishDraft(0);
}
// * Принудительный вывод на главную
$oTopic->setPublishIndex(0);
if (E::ModuleACL()->IsAllowPublishIndex($this->oUserCurrent)) {
if (F::GetRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
}
}
// * Запрет на комментарии к топику
$oTopic->setForbidComment(F::GetRequest('topic_forbid_comment', 0));
// Разрешение/запрет индексации контента топика изначально - как у блога
if ($oBlogType = $oBlog->GetBlogType()) {
// Если тип блога определен, то берем из типа блога...
$oTopic->setTopicIndexIgnore($oBlogType->GetIndexIgnore());
} else {
// ...если нет, то индексацию разрешаем
$oTopic->setTopicIndexIgnore(false);
}
$oTopic->setShowPhotoset(F::GetRequest('topic_show_photoset', 0));
// * Запускаем выполнение хуков
E::ModuleHook()->Run('topic_add_before', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
// * Добавляем топик
if ($this->_addTopic($oTopic)) {
E::ModuleHook()->Run('topic_add_after', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
// * Получаем топик, чтоб подцепить связанные данные
$oTopic = E::ModuleTopic()->GetTopicById($oTopic->getId());
// * Обновляем количество топиков в блоге
E::ModuleBlog()->RecalculateCountTopicByBlogId($oTopic->getBlogId());
// * Добавляем автора топика в подписчики на новые комментарии к этому топику
E::ModuleSubscribe()->AddSubscribeSimple('topic_new_comment', $oTopic->getId(), $this->oUserCurrent->getMail(), $this->oUserCurrent->getId());
// * Подписываем автора топика на обновления в трекере
if ($oTrack = E::ModuleSubscribe()->AddTrackSimple('topic_new_comment', $oTopic->getId(), $this->oUserCurrent->getId())) {
// Если пользователь не отписался от обновлений топика
if (!$oTrack->getStatus()) {
$oTrack->setStatus(1);
E::ModuleSubscribe()->UpdateTrack($oTrack);
}
}
// * Делаем рассылку всем, кто состоит в этом блоге
if ($oTopic->getPublish() == 1 && $oBlog->getType() != 'personal') {
E::ModuleTopic()->SendNotifyTopicNew($oBlog, $oTopic, $this->oUserCurrent);
}
/**
* Привязываем фото к ID топика
*/
if (isset($aPhotos) && count($aPhotos)) {
E::ModuleTopic()->AttachTmpPhotoToTopic($oTopic);
}
// * Удаляем временную куку
E::ModuleSession()->DelCookie('ls_photoset_target_tmp');
// Обработаем фотосет
if ($this->oContentType->isAllow('photoset') && ($sTargetTmp = E::ModuleSession()->GetCookie(ModuleUploader::COOKIE_TARGET_TMP))) {
// Уберем у ресурса флаг временного размещения и удалим из куки target_tmp
E::ModuleSession()->DelCookie(ModuleUploader::COOKIE_TARGET_TMP);
}
// * Добавляем событие в ленту
E::ModuleStream()->Write($oTopic->getUserId(), 'add_topic', $oTopic->getId(), $oTopic->getPublish() && (!$oBlog->getBlogType() || !$oBlog->getBlogType()->IsPrivate()));
R::Location($oTopic->getUrl());
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
F::SysWarning('System Error');
return R::Action('error');
}
}
示例15: SubmitComment
/**
* Обработка добавление комментария к топику
*
*/
protected function SubmitComment()
{
$oTopic = $this->Topic_GetTopicById(getRequestStr('comment_target_id'));
$sText = getRequestStr('comment_text');
$sParentId = (int) getRequest('reply');
$oCommentParent = null;
if (!$sParentId) {
/**
* Корневой комментарий
*/
$sParentId = null;
} else {
/**
* Родительский комментарий
*/
$oCommentParent = $this->Comment_GetCommentById($sParentId);
}
/**
* Проверка на соответсвие комментария требованиям безопасности
*/
if (!$this->CheckComment($oTopic, $sText)) {
return;
}
/**
* Проверка на соответсвие комментария родительскому коментарию
*/
if (!$this->CheckParentComment($oTopic, $sText, $oCommentParent)) {
return;
}
/**
* Создаём коммент
*/
$oCommentNew = Engine::GetEntity('Comment');
$oCommentNew->setTargetId($oTopic->getId());
$oCommentNew->setTargetType('topic');
$oCommentNew->setTargetParentId($oTopic->getBlog()->getId());
$oCommentNew->setUserId($this->oUserCurrent->getId());
$oCommentNew->setText($this->Text_Parser($sText));
$oCommentNew->setTextSource($sText);
$oCommentNew->setDate(date("Y-m-d H:i:s"));
$oCommentNew->setUserIp(func_getIp());
$oCommentNew->setPid($sParentId);
$oCommentNew->setTextHash(md5($sText));
$oCommentNew->setPublish($oTopic->getPublish());
/**
* Добавляем коммент
*/
$this->Hook_Run('comment_add_before', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
if ($this->Comment_AddComment($oCommentNew)) {
$this->Hook_Run('comment_add_after', array('oCommentNew' => $oCommentNew, 'oCommentParent' => $oCommentParent, 'oTopic' => $oTopic));
$this->Viewer_AssignAjax('sCommentId', $oCommentNew->getId());
if ($oTopic->getPublish()) {
/**
* Добавляем коммент в прямой эфир если топик не в черновиках
*/
$oCommentOnline = Engine::GetEntity('Comment_CommentOnline');
$oCommentOnline->setTargetId($oCommentNew->getTargetId());
$oCommentOnline->setTargetType($oCommentNew->getTargetType());
$oCommentOnline->setTargetParentId($oCommentNew->getTargetParentId());
$oCommentOnline->setCommentId($oCommentNew->getId());
$this->Comment_AddCommentOnline($oCommentOnline);
}
/**
* Сохраняем дату последнего коммента для юзера
*/
$this->oUserCurrent->setDateCommentLast(date("Y-m-d H:i:s"));
$this->User_Update($this->oUserCurrent);
/**
* Фиксируем ID у media файлов комментария
*/
$this->Media_ReplaceTargetTmpById('comment', $oCommentNew->getId());
/**
* Список емайлов на которые не нужно отправлять уведомление
*/
$aExcludeMail = array($this->oUserCurrent->getMail());
/**
* Отправляем уведомление тому на чей коммент ответили
*/
if ($oCommentParent and $oCommentParent->getUserId() != $oTopic->getUserId() and $oCommentNew->getUserId() != $oCommentParent->getUserId()) {
$oUserAuthorComment = $oCommentParent->getUser();
$aExcludeMail[] = $oUserAuthorComment->getMail();
$this->Topic_SendNotifyCommentReplyToAuthorParentComment($oUserAuthorComment, $oTopic, $oCommentNew, $this->oUserCurrent);
}
/**
* Отправка уведомления автору топика
*/
$this->Subscribe_Send('topic_new_comment', $oTopic->getId(), 'comment_new.tpl', $this->Lang_Get('emails.comment_new.subject'), array('oTopic' => $oTopic, 'oComment' => $oCommentNew, 'oUserComment' => $this->oUserCurrent), $aExcludeMail);
/**
* Добавляем событие в ленту
*/
$this->Stream_write($oCommentNew->getUserId(), 'add_comment', $oCommentNew->getId(), $oTopic->getPublish() && $oTopic->getBlog()->getType() != 'close');
} else {
$this->Message_AddErrorSingle($this->Lang_Get('common.error.system.base'), $this->Lang_Get('common.error.error'));
}
}