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

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

 
Посетитель
small user social cms
Сообщений: 20
Здравствуйте друзья, возможно кто то сталкивался с проблемой, во всех версия instantcms, не отправляется оповещения на email от имени "гость" например я создаю блог и комментирую данную запись авторизованным пользователем
Отправка оповещений на email
на email приходит оповещение, что добавлен комментарий к моему посту
Отправка оповещений на email
, а вот если "гость" добавляет комментарий
Отправка оповещений на email
, в данном случаи оповещение не срабатывает, в чем может быть причина?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2965
Так в \components\users\model.php написано же:

Код 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; }
нет ид отправителя - нет оповещения.
Реклама
cms
Посетитель
small user social cms
Сообщений: 20
Ris:
нет ид отправителя - нет оповещения.
А вот например если я подписываюсь на новые комментарии
Отправка оповещений на email
то в данном случаи на emeil приходит оповещение, значит id назначается и гостю тоже, или все же нет?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1581
Нет, id гостю не назначается.Но при подписки на уведомление в компоненте comments id юзера не учитывается.Хотя лично мне не понятно когда работает компонент комментарий при уведомлениях, а когда компонент users.
Редактировалось: 1 раз (Последний: 2 августа 2016 в 15:57)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2965
Lora,
Подписантам рассылаются уведомления при добавлении комента :
Код PHP:
  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'])));
Гэстнейм в этом случае формируется так:

Код PHP:
  1. $comment['guestname'] = cmsCore::request('guestname', 'str', '');
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1581
Это понятно.Я не про то.Вот например код из фронтеда коментов
Код PHP:
  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
Код 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; }
Посетитель
small user social cms
Сообщений: 20
Ris:
Так в \components\users\model.php написано же:
За отправку оповещений отвечает я так понимаю файл components/comments/frontend.php махинации с \components\users\model.php ни к чему не привели к сожалению
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2965
maximal:
За отправку оповещений отвечает я так понимаю файл components/comments/frontend.php
Да, Вы правы.
Просмотрел все еще раз и по идее все должно происходить так:
При ответе гостя на комментарий из введенной формы берется имя, которое он ввел при ответе
Код PHP:
  1. $comment['guestname'] = cmsCore::request('guestname', 'str', '');
это имя записывается в переменную $from_nick
Код PHP:
  1. $from_nick = $inUser->id ? $inUser->nickname : $comment['guestname'];
и потом отправляется сообщение на мыло
Спойлер
Почему не отправляется - непонятно.
Попробуйте явно его формировать при отсутствии. Вот так например переделать формирование $from_nick
Спойлер
Посетитель
small user social cms
Сообщений: 20
Ris:
Попробуйте явно его формировать при отсутствии. Вот так например переделать формирование $from_nick
Не хочет работать зараза такая smile может можно как то сделать что бы автоматически при создании поста автору подписка включалась?
Отправка оповещений на email
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1581
Проблема в следующем.
Код PHP:
  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'] требует отсутствие модерации. Плюс выше есть код
Код PHP:
  1. $author = $inUser->id ?
  2. $model->getTargetAuthor($target['target_table'], $comment['target_id']) :
  3. '';
Нужно поменять на
Код PHP:
  1. $author = ($inUser->id || $comment['guestname']) ?
  2. $model->getTargetAuthor($target['target_table'], $comment['target_id']) :
  3. '';
Посетитель
small user social cms
Сообщений: 20
Благодарю Lora за помощи, все заработала!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.