Уведомления об ответе на ваш комментарий на сайте.

Instantcms2.2.0 Рассылка уведомлений об ответе на комментарий.

#16 16 ноября 2015 в 00:56
Колян,

Можно вот так сделать


  1. public function notifyParent($comment, $parent_comment){
  2.  
  3. if ($comment['user_id'] && ($comment['user_id'] == $parent_comment['user_id'])) { return; }
  4.  
  5. $messenger = cmsCore::getController('messages');
  6.  
  7. $page_url = href_to($comment['target_url']) . "#comment_{$comment['id']}";
  8. $page_url_mail = href_to_abs($comment['target_url']) . "#comment_{$comment['id']}";
  9. $notice = array(
  10.  
  11. 'content' => sprintf (LANG_COMMENTS_REPLY, mb_substr($parent_comment['content'], 0, 30),
  12. $comment['user_nickname'], mb_substr($comment['content'], 0, 30 )),
  13. 'actions' => array(
  14. 'view' => array(
  15. 'title' => LANG_SHOW,
  16. 'href' => href_to( $page_url )
  17. ),));
  18.  
  19. if (!$is_guest_parent){
  20. $messenger->addRecipient($parent_comment['user_id']);
  21. $messenger->sendNoticePM($notice,'comments_reply');
  22. }
  23.  
  24. if ($is_guest_parent){
  25. $letter_data['nickname'] = $parent_comment['author_name'];
  26. $to = array('name' => $parent_comment['author_name'], 'email' => $parent_comment['author_email']);
  27. $letter = array('name' => 'comments_reply');
  28. $messenger->sendEmail($to, $letter, $notice);
  29. }
  30. $letter_data = array(
  31. 'page_url' => $page_url_mail,
  32. 'page_title' => $comment['target_title'],
  33. 'author_url' => $is_guest_comment ? $page_url : href_to_abs('users', $comment['user_id']),
  34. 'author_nickname' => $is_guest_comment ? $comment['author_name'] : $comment['user_nickname'],
  35. 'comment' => $comment['content'],
  36. 'original' => $parent_comment['content'],
  37. );
  38.  
  39. if (!$is_guest_parent){
  40. $messenger->addRecipient($parent_comment['user_id']);
  41. $messenger->sendNoticeEmail('comments_reply', $letter_data);
  42. }
  43.  
  44. if ($is_guest_parent){
  45. $letter_data['nickname'] = $parent_comment['author_name'];
  46. $to = array('name' => $parent_comment['author_name'], 'email' => $parent_comment['author_email']);
  47. $letter = array('name' => 'comments_reply');
  48. $messenger->sendEmail($to, $letter, $letter_data);
  49. }
  50.  
  51. }
  52.  
  53.  
Но тогда уведомления летят и в личку и на почту вне зависимости от настроек профиля.
Надо дальше разбираться…
#17 16 ноября 2015 в 01:14
Если делать полноценный хак, надо учитывать на сайте юзер или нет. На мой взгляд чтоб не замарачиваться с этим необходимо просто убрать вариант отправки "на мыло и на сайте" в настройках уведомлений, чтоб небыло этого варианта, и тогда всё по правде получится, Полноценный хак😊
#18 16 ноября 2015 в 11:44
Поддерживаю.
#19 16 ноября 2015 в 12:31
Тогда уж делать не "полноценный хак", а полноценное дополнение, которое можно переустановить при обновлении системы.
В первой ветке можно было сделать плагин. А как это должно по идее выглядеть во второй ветке? Кто знает?
Компонент "Уведомления" писать что ли?
#20 17 ноября 2015 в 22:32
В общем сделал как просили. В профиле надо выставить "по емейл и на сайте".
Уведомления в личку отправляются вне зависимости на сайте юзер или нет. Если юзера нет на сайте — дублируется на почту.


  1. public function notifyParent($comment, $parent_comment){
  2.  
  3. if ($comment['user_id'] && ($comment['user_id'] == $parent_comment['user_id'])) { return; }
  4.  
  5. $messenger = cmsCore::getController('messages');
  6.  
  7. $is_guest_parent = !$parent_comment['user_id'] && $parent_comment['author_email'];
  8. $is_guest_comment = !$comment['user_id'];
  9.  
  10. $page_url = href_to_abs($comment['target_url']) . "#comment_{$comment['id']}";
  11. $page_url_pm = href_to($comment['target_url']) . "#comment_{$comment['id']}";
  12.  
  13. /*Сообщение для отправки в личку*/
  14. $notice = array(
  15. 'content' => sprintf (LANG_COMMENTS_REPLY, mb_substr($parent_comment['content'], 0, 30),
  16. $comment['user_nickname'], mb_substr($comment['content'], 0, 30 )),
  17. 'options' => array(
  18. 'is_closeable' => true),
  19. 'actions' => array(
  20. 'view' => array(
  21. 'title' => LANG_SHOW,
  22. 'href' => href_to( $page_url_pm )
  23. ),));
  24.  
  25. /*Сообщение для отправки на почту*/
  26. $letter_data = array(
  27. 'page_url' => $page_url,
  28. 'page_title' => $comment['target_title'],
  29. 'author_url' => $is_guest_comment ? $page_url : href_to_abs('users', $comment['user_id']),
  30. 'author_nickname' => $is_guest_comment ? $comment['author_name'] : $comment['user_nickname'],
  31. 'comment' => $comment['content'],
  32. 'original' => $parent_comment['content'],
  33. );
  34. /*Отправляем сообщение об ответе*/
  35. if (!$is_guest_parent){
  36. $messenger->addRecipient($parent_comment['user_id']);
  37. $parent_user = $parent_comment['user'];
  38. $messenger->sendNoticePM($notice,'comments_reply');
  39. /*Если пользователь не в онлайне - отправляем ему на почту*/
  40. if (!$parent_user['is_online']) {
  41. $messenger->sendNoticeEmail('comments_reply', $letter_data);}
  42. }
  43.  
  44. if ($is_guest_parent){
  45. $letter_data['nickname'] = $parent_comment['author_name'];
  46. $to = array('name' => $parent_comment['author_name'], 'email' => $parent_comment['author_email']);
  47. $letter = array('name' => 'comments_reply');
  48. $messenger->sendEmail($to, $letter, $letter_data);
  49. }
  50.  
  51. }
Готовые файлы во вложении. Распаковать в корень сайта.

Если кто хочет, чтобы в офлайне уведомления в личку не отправлялись, тогда саму отправку переделайте так:


  1. /*Отправляем сообщение об ответе*/
  2. if (!$is_guest_parent){
  3. $messenger->addRecipient($parent_comment['user_id']);
  4. $parent_user = $parent_comment['user'];
  5. /*Если пользователь не в онлайне - отправляем ему на почту*/
  6. if (!$parent_user['is_online']) {
  7. $messenger->sendNoticeEmail('comments_reply', $letter_data);}
  8. /*Если в онлайне - в личку*/
  9. else {
  10. $messenger->sendNoticePM($notice,'comments_reply');}
  11. }
  12.  
instantcms.ru/users/files/download5574.html
#21 18 ноября 2015 в 22:54


В общем сделал как просили. В профиле надо выставить "по емейл и на сайте".
Уведомления в личку отправляются вне зависимости на сайте юзер или нет. Если юзера нет на сайте — дублируется на почту.


  1. public function notifyParent($comment, $parent_comment){
  2.  
  3. if ($comment['user_id'] && ($comment['user_id'] == $parent_comment['user_id'])) { return; }
  4.  
  5. $messenger = cmsCore::getController('messages');
  6.  
  7. $is_guest_parent = !$parent_comment['user_id'] && $parent_comment['author_email'];
  8. $is_guest_comment = !$comment['user_id'];
  9.  
  10. $page_url = href_to_abs($comment['target_url']) . "#comment_{$comment['id']}";
  11. $page_url_pm = href_to($comment['target_url']) . "#comment_{$comment['id']}";
  12.  
  13. /*Сообщение для отправки в личку*/
  14. $notice = array(
  15. 'content' => sprintf (LANG_COMMENTS_REPLY, mb_substr($parent_comment['content'], 0, 30),
  16. $comment['user_nickname'], mb_substr($comment['content'], 0, 30 )),
  17. 'options' => array(
  18. 'is_closeable' => true),
  19. 'actions' => array(
  20. 'view' => array(
  21. 'title' => LANG_SHOW,
  22. 'href' => href_to( $page_url_pm )
  23. ),));
  24.  
  25. /*Сообщение для отправки на почту*/
  26. $letter_data = array(
  27. 'page_url' => $page_url,
  28. 'page_title' => $comment['target_title'],
  29. 'author_url' => $is_guest_comment ? $page_url : href_to_abs('users', $comment['user_id']),
  30. 'author_nickname' => $is_guest_comment ? $comment['author_name'] : $comment['user_nickname'],
  31. 'comment' => $comment['content'],
  32. 'original' => $parent_comment['content'],
  33. );
  34. /*Отправляем сообщение об ответе*/
  35. if (!$is_guest_parent){
  36. $messenger->addRecipient($parent_comment['user_id']);
  37. $parent_user = $parent_comment['user'];
  38. $messenger->sendNoticePM($notice,'comments_reply');
  39. /*Если пользователь не в онлайне - отправляем ему на почту*/
  40. if (!$parent_user['is_online']) {
  41. $messenger->sendNoticeEmail('comments_reply', $letter_data);}
  42. }
  43.  
  44. if ($is_guest_parent){
  45. $letter_data['nickname'] = $parent_comment['author_name'];
  46. $to = array('name' => $parent_comment['author_name'], 'email' => $parent_comment['author_email']);
  47. $letter = array('name' => 'comments_reply');
  48. $messenger->sendEmail($to, $letter, $letter_data);
  49. }
  50.  
  51. }
Готовые файлы во вложении. Распаковать в корень сайта.

Если кто хочет, чтобы в офлайне уведомления в личку не отправлялись, тогда саму отправку переделайте так:


  1. /*Отправляем сообщение об ответе*/
  2. if (!$is_guest_parent){
  3. $messenger->addRecipient($parent_comment['user_id']);
  4. $parent_user = $parent_comment['user'];
  5. /*Если пользователь не в онлайне - отправляем ему на почту*/
  6. if (!$parent_user['is_online']) {
  7. $messenger->sendNoticeEmail('comments_reply', $letter_data);}
  8. /*Если в онлайне - в личку*/
  9. else {
  10. $messenger->sendNoticePM($notice,'comments_reply');}
  11. }
  12.  
instantcms.ru/users/files/download5574.html

HiAndy
Дайте свой ЯД кошель, пасибок отправлю. И если не трудно зарегайтесь у нас, нам необходимо собрать команду кодеров, проект у нас огромный, я точно знаю как наладить систему с тем чтоб мы не думали как зарабатывать деньги всем кодерам кто к нам присоединиться.
#22 18 ноября 2015 в 22:56
Ещё вопрос, а если выберут уведомлять на сайте, только на сайте будут уведомляться? Полноценный хак получился?
#23 18 ноября 2015 в 23:08

И если не трудно зарегайтесь у нас, нам необходимо собрать команду кодеров,

Колян

Я ж не кодер, я инженегр. Человек, который решает технические проблемы.
Понадобился группе людей сайт, перебрал кучу CMS, остановился на инстанте. Пятый год сайт работает.
Понадобилось уведомление в личку — потыркался, сделал.

А изучить теорию всё никак руки не доходят...

Ещё вопрос, а если выберут уведомлять на сайте, только на сайте будут уведомляться?

Колян

Нет, вроде не работает. Не проверял.
Но можно сделать выбор из "на почту и на сайте" и "не уведомлять"
'options' => array('both', '')
#24 18 ноября 2015 в 23:49

Я ж не кодер, я инженегр. Человек, который решает технические проблемы.

Я только вчера понял что не верно выстроил систему назвав группу владельцев КиберКомпаса Системными инженерами, сегодняже переименую её в Социальных инженеров, Создам новую группу Системных инженеров, создателя группы Системных инженеров включю в руководители группы Социальных инженеров, Доход от проекта делится поровну между всеми кто состоит в группе владельцев.КиберКомпаса=Социальных инженеров т.е. получится что тот кто управляет профилем создателя группы Системных инженеров Сможет в равных долях распределить часть средств между Руководителями Системными инженерами и кодерами Участниками группы системных инженеров.

#25 13 января 2017 в 09:08
Уже в третью или четвертую ветку пишу😥Ответа не нашел. Близкие по смыслу темы перепробовал — не спасает… Не приходят от слова ВООБЩЕ уведомления о модерации комментариев — ни от гостей, ни от пользователей… Ни на сайт, ни на почту… Все остальные уведомления — сообщения, модерация типов контента и даже ответы на комментарии — приходят как часы… Опция "Модерация комментариев" в группах Администраторы и Модераторы включена, в профиле получать уведомления на сайте и по email — тоже… Пробовал сделать как в этой ветке написано — никаких изменений. Приходит все, кроме модерации комментариев😥Файлы системы перезаливал, с дефолтного шаблона в новый шаблоны комментов перенес… Вероятно, где-то просто ступил и что-то не то включил или выключил, но вообще не понимаю, в чем может быть затык и куда копать…
#26 13 января 2017 в 09:25

Пробовал сделать как в этой ветке написано — никаких изменений.

@LagordenSudak
В этой ветке написано, как сделать уведомление в личку пользователю об ответе на комментарий пользователя.
Про модерацию тут ни слова.
Может Вы как-то неправильно представляете себе процесс модерации комментариев?
#27 13 января 2017 в 09:30

Может Вы как-то неправильно представляете себе процесс модерации комментариев?

Ris
Я просто пишу уже везде, где более-менее связано с моей темой, так как ответа не нашел😊Может, кто сталкивался. Новую тему создать — кармы еще просто не хватает :)
Суть в том, что сначала приходили оповещения о новых комментариях, которые нужно проверить модератору, а теперь перестали. Я уже три бубна сломал :(
#28 13 января 2017 в 13:32

Суть в том, что сначала приходили оповещения о новых комментариях, которые нужно проверить модератору, а теперь перестали.

@LagordenSudak
Вспоминайте и сравнивайте какие изменения вносили что оповещения перестали приходить.
#29 13 января 2017 в 13:40

Вспоминайте и сравнивайте

Val
Да вот пытаюсь… Но ничего не могу найти. Остальные-то уведомления нормально приходят… Буду дальше ковырять, видимо никто, кроме меня, так не портачил😊Пробовал даже на дефолтном шаблоне — та же история… В общем, мистика какая-то :)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.