Отправка оповещений на email

Отправка оповещений на email не срабатывает

#1 2 августа 2016 в 13:58
Здравствуйте друзья, возможно кто то сталкивался с проблемой, во всех версия instantcms, не отправляется оповещения на email от имени "гость" например я создаю блог и комментирую данную запись авторизованным пользователем Иллюстрацияна email приходит оповещение, что добавлен комментарий к моему посту Иллюстрация, а вот если "гость" добавляет комментарий Иллюстрация, в данном случаи оповещение не срабатывает, в чем может быть причина?
#2 2 августа 2016 в 14:13
Так в \components\users\model.php написано же:

  1. public function sendNotificationByEmail($to_id=0, $from_id=0, $msg_id=0) {
  2.  
  3. if(!$from_id || !$to_id || !$msg_id) { return false; }
нет ид отправителя — нет оповещения.
#3 2 августа 2016 в 15:02

нет ид отправителя — нет оповещения.

Ris
А вот например если я подписываюсь на новые комментарии Иллюстрациято в данном случаи на emeil приходит оповещение, значит id назначается и гостю тоже, или все же нет?
#4 2 августа 2016 в 15:55
Нет, id гостю не назначается.Но при подписки на уведомление в компоненте comments id юзера не учитывается.Хотя лично мне не понятно когда работает компонент комментарий при уведомлениях, а когда компонент users.
#5 2 августа 2016 в 16:09
Lora,
Подписантам рассылаются уведомления при добавлении комента :
  1. cmsUser::sendUpdateNotify($comment['target'], $comment['target_id'],
  2. array('link' => $comment['target_link'] . '#c' . $comment_id,
  3. 'title' => stripslashes($comment['target_title']),
  4. 'letter_file' => 'newcomment',
  5. 'author' => ($inUser->id ? $inUser->nickname : $comment['guestname'])));
Гэстнейм в этом случае формируется так:

  1. $comment['guestname'] = cmsCore::request('guestname', 'str', '');
#6 2 августа 2016 в 16:18
Это понятно.Я не про то.Вот например код из фронтеда коментов
  1. //отправляем автору уведомление на e-mail
  2. if ($author && $comment['published']){
  3.  
  4. if ($model->isAuthorNeedMail($author['id']) && $inUser->id != $author['id']){
  5.  
  6. $letter = cmsCore::getLanguageTextFile('newpostcomment');
  7. $letter = str_replace('{sitename}', $inConf->sitename, $letter);
  8. $letter = str_replace('{subj}', $target['subj'], $letter);
  9. $letter = str_replace('{subjtitle}', stripslashes($comment['target_title']), $letter);
  10. $letter = str_replace('{targetlink}', $targetlink, $letter);
  11. $letter = str_replace('{date}', date('d/m/Y H:i:s'), $letter);
  12. $letter = str_replace('{from}', $from_nick, $letter);
  13. $inCore->mailText($author['email'], '', $letter);
  14.  
  15. }
  16.  
  17. }
Почему при уведомлении работает не он, а из \components\users\model.php
  1. public function sendNotificationByEmail($to_id=0, $from_id=0, $msg_id=0) {
  2.  
  3. if(!$from_id || !$to_id || !$msg_id) { return false; }
#7 3 августа 2016 в 07:28

Так в \components\users\model.php написано же:

Ris
За отправку оповещений отвечает я так понимаю файл components/comments/frontend.php махинации с \components\users\model.php ни к чему не привели к сожалению
#8 3 августа 2016 в 09:32

За отправку оповещений отвечает я так понимаю файл components/comments/frontend.php

maximal
Да, Вы правы.
Просмотрел все еще раз и по идее все должно происходить так:
При ответе гостя на комментарий из введенной формы берется имя, которое он ввел при ответе
  1. $comment['guestname'] = cmsCore::request('guestname', 'str', '');
это имя записывается в переменную $from_nick
  1. $from_nick = $inUser->id ? $inUser->nickname : $comment['guestname'];
и потом отправляется сообщение на мыло
  1. //отправляем автору уведомление на e-mail
  2. if ($author && $comment['published']){
  3.  
  4. if ($model->isAuthorNeedMail($author['id']) && $inUser->id != $author['id']){
  5.  
  6. $letter = cmsCore::getLanguageTextFile('newpostcomment');
  7. $letter = str_replace('{sitename}', $inConf->sitename, $letter);
  8. $letter = str_replace('{subj}', $target['subj'], $letter);
  9. $letter = str_replace('{subjtitle}', stripslashes($comment['target_title']), $letter);
  10. $letter = str_replace('{targetlink}', $targetlink, $letter);
  11. $letter = str_replace('{date}', date('d/m/Y H:i:s'), $letter);
  12. $letter = str_replace('{from}', $from_nick, $letter);
  13. $inCore->mailText($author['email'], '', $letter);
  14.  
  15. }
  16.  
  17. }
Почему не отправляется — непонятно.
Попробуйте явно его формировать при отсутствии. Вот так например переделать формирование $from_nick
  1. ////////////////////////////////////////////////////////////////
  2. ///////////////// Операции по уведомлениям /////////////////////
  3.  
  4. $inConf = cmsConfig::getInstance();
  5.  
  6. $from_nick = $inUser->id ? $inUser->nickname : $comment['guestname'];
  7. if (!$from_nick){$from_nick = 'Гость';}
  8.  
#9 3 августа 2016 в 10:22

Попробуйте явно его формировать при отсутствии. Вот так например переделать формирование $from_nick

Ris
Не хочет работать зараза такая smileможет можно как то сделать что бы автоматически при создании поста автору подписка включалась? Иллюстрация
#10 3 августа 2016 в 10:35
Проблема в следующем.
  1. //отправляем автору уведомление на e-mail
  2. if ($author && $comment['published']){
  3.  
  4. if ($model->isAuthorNeedMail($author['id']) && $inUser->id != $author['id']){
  5.  
  6. $letter = cmsCore::getLanguageTextFile('newpostcomment');
  7. $letter = str_replace('{sitename}', $inConf->sitename, $letter);
  8. $letter = str_replace('{subj}', $target['subj'], $letter);
  9. $letter = str_replace('{subjtitle}', stripslashes($comment['target_title']), $letter);
  10. $letter = str_replace('{targetlink}', $targetlink, $letter);
  11. $letter = str_replace('{date}', date('d/m/Y H:i:s'), $letter);
  12. $letter = str_replace('{from}', $from_nick, $letter);
  13. $inCore->mailText($author['email'], '', $letter);
  14.  
  15. }
  16.  
  17. }
У нас нет переменой $author['id'] и переменая $comment['published'] требует отсутствие модерации. Плюс выше есть код
  1. $author = $inUser->id ?
  2. $model->getTargetAuthor($target['target_table'], $comment['target_id']) :
  3. '';
Нужно поменять на
  1. $author = ($inUser->id || $comment['guestname']) ?
  2. $model->getTargetAuthor($target['target_table'], $comment['target_id']) :
  3. '';
#11 3 августа 2016 в 11:24
Благодарю Lora за помощи, все заработала!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.