[Неактуально] Информирование пользователей об окончании срока публикации.

923

Пост неактуален. Весь функционал уже есть в версии 2.12.2

Небольшой хук, срабатывающий по хрону раз в день. Время и частоту срабатывания можно настроить.

[Неактуально] Информирование пользователей об окончании срока публикации.

Пользователям приходят уведомления такого вида:

Спойлер
На почту приходят такие письма:

Спойлер
Быстро проверить работоспособность компонента можно так:

Спойлер
Компонент доработан. Работает теперь на версиях начиная с 2.9.0

Скачать компонент уведомлений
Комментарии в ленте активности
Комментарии (48)
Александр 14 апреля 2019 в 17:18 +1
Как всегда то что доктор прописал, спасибо Ris.
Rainbow 14 апреля 2019 в 18:14 0
Отлично!
Но есть вопрос...

Если контент добавлен от Гостя (например в Расширенной доске объявлений), отправлять сообщение не надо (нет почты)...
Предусмотрено ли это в компоненте?
Ris 14 апреля 2019 в 18:19 0
Rainbow:
Если контент добавлен от Гостя (например в Расширенной доске объявлений), отправлять сообщение не надо (нет почты)... Предусмотрено ли это в компоненте?
Обладаю ли я даром телепатии? Нет, не обладаю.
Расширенной доской тоже не обладаю.
Rainbow 14 апреля 2019 в 18:46 0

Обладаю ли я даром телепатии? Нет, не обладаю.
Расширенной доской тоже не обладаю.

cry smile

Ris Там (наверное и в других подобных дополнениях, если они есть, реализация похожая) пользователь "Гость" назначается админом.

То есть гости на сайте публикуют объявления от одного и того же пользователя в системе.
Как вариант можно сделать в настройках поле исключенных из рассылки адресов (множество адресов через запятую)...

Однако это уже сами смотрите)
А то скажите, сделал бесплатно, еще и не нравится)...
Ris 14 апреля 2019 в 18:58 0
Ну просто будут приходить админу письма счастья. Ничего страшного.
Будет, что почитать...
Rainbow 14 апреля 2019 в 19:05 0
Админу не будут... пользователь "Гость" с фейковым адресом.

Ris 14 апреля 2019 в 19:10 0
Ну и уйдут письма по фейковому адресу. Сбоя в работе хука от этого не будет.
Или боитесь, что сетевая карта на сервере перегреется?
Rainbow 14 апреля 2019 в 19:26 0
Или боитесь, что сетевая карта на сервере перегреется?

Если письмо не доставлено, будут приходить письма админу почтового сервера о недоставке...
Тем более у кого то настроена отправка через SMTP например mail.ru, значит точно будут уведомления о недоставке.

Если объявлений от Гостя на сайте много... писем будет много facepalm
Впрочем как уже писал, на Ваше усмотрение...
Ris 14 апреля 2019 в 20:04 0
А у этого гостя есть user_id ? Из вашей картинки непонятно.
Можно сделать опцию "не отправлять таким-то номерам".
Rainbow 14 апреля 2019 в 20:41 0
А у этого гостя есть user_id ?

Есть. На картинке-3 в БД, в объявлениях в поле user_id проставлен его.
Должно работать...
Rainbow 14 апреля 2019 в 20:43 0
ЗЫ: В объявлениях от "Гостя" в поле user_id стоит его id
Ris 14 апреля 2019 в 20:48 +2
id гостя? Сурово!
Попробую сделать завтра опцию не отсылать пользователям с таким-то айди.
Rainbow 14 апреля 2019 в 21:10 0
id гостя? Сурово!

)) ... ну, Вы поняли....)) id пользователя от которого публикуют гости...
Ris 14 апреля 2019 в 22:02 +1
Сделал настройку для неоповещаемых юзеров.
Файл перезалил.
Rainbow 15 апреля 2019 в 07:53 0
Ris, спасибо большое, очень хороший компонент получился.
Ris 14 апреля 2019 в 18:36 +1
Добавил проверку на наличие user_id.
Файл перезалил.
Dorimen 14 апреля 2019 в 18:32 0
А для объявлений тоже работает?
Ris 14 апреля 2019 в 18:36 0
Да.
Capitan 14 апреля 2019 в 19:46 0
Вау! Супер! Как раз для моей доски объявлений
@denmois 14 апреля 2019 в 20:50 +1
Всевышний услышал наши молитвы!!!)
Ris, не знаю как Вас благодарить.. в вашем профиле нет реквизитов для благодарностей
Ris 14 апреля 2019 в 20:52 0
Тут есть:
https://addons.instantcms.ru/users/575
Но сначала всё протестируйте!
@denmois 15 апреля 2019 в 00:07 0
На 2.10 должно работать?
Админка компонента работает, настройки сохраняются, но задание в хроне "Информирование пользователей" не добавляется.
Ris 15 апреля 2019 в 00:44 0
Добавьте тогда задание самостоятельно.
Главное, чтобы компонент был info и название хука info.
Остальное - на ваше усмотрение.
А я пока посмотрю, почему не добавляется.
Ris 15 апреля 2019 в 00:53 0
Обновил. Попробуйте скачать и установить еще раз.
@denmois 15 апреля 2019 в 09:10 +1
При переходе по ссылке на скачивание -> 404
Ris 15 апреля 2019 в 09:32 0
Причем я проверял после загрузки файла, что он скачивается. Что-то странное с этим сервером.
Перезалил, попробуйте еще раз.
Fuze 15 апреля 2019 в 13:57 +6
Внесу подобное в очередной релиз, спасибо что сподвигли своим решением.

Немного замечаний, если позволите.

Лучше выбрать из базы сразу то, что нужно:

Код PHP:
  1. $items = $this->model->filterEqual('is_pub', 1)->
  2. filterIsNull('is_deleted')->
  3. filterNotNull('date_pub_end')->
  4. filter('i.date_pub_end <= DATE_ADD(NOW(), INTERVAL '.$this->options['days'].' DAY)')->
  5. get($this->model->table_prefix.$ctype['name']);
  6.  
  7. if(!$items){
  8. continue;
  9. }
  10.  
  11. // тут уже рассылаем
  12.  
Свойство
Код PHP:
  1. protected $useOptions = true;
Достаточно прописать в самом контроллере, т.е. в файле frontend.php, в экшенах оно не нужно.

Хуки для CRON прописывать в манифесте не нужно.

Урлы вот так

Код PHP:
  1. href_to($ct['name'].'/'.$item['slug'].'.html')
писать не нужно, поскольку в этом случае не сработает ремап. Лучше делать вот так:

Код PHP:
  1. href_to($ct['name'], $item['slug'].'.html')
Это
Код PHP:
  1. 'action' => cmsCore::getModel('messages')->deleteNotice($this->id)
Никогда не выполнится, поскольку свойства id у вас нет. Но даже если допустить, что оно есть, то тут же сразу удалиться нотис из базы с указанным id. Тут нужно указывать название действия, например close.
@denmois 15 апреля 2019 в 14:05 0
Fuze, спасибо!
Если не сложно, итоговый архив для непросвещенных zst
Александр Витальевич 15 апреля 2019 в 14:40 0
Fuze, спасибо! Тоже присоединяюсь
Ris 15 апреля 2019 в 14:47 0
Fuze, спасибо!
Сейчас доработаю с учетом...
Dorimen 15 апреля 2019 в 14:48 0
И инструкцию, пожалуйста, напишите как обновить для тех, кто уже установил )
Ris 15 апреля 2019 в 14:58 0
напишите как обновить
Просто заново установить. Старое само потрется.
Ris 15 апреля 2019 в 15:52 0
Доработал с учетом поправок, предложенных Fuse.
Теперь можно устанавливать и на вашу 2.10.0
Архив перезалил, скачивайте.
Александр Витальевич 15 апреля 2019 в 14:34 0
Ris как всегда просто красава!
@denmois 15 апреля 2019 в 16:07 0
Ris, вы уже обновили?
Проверил, работает. Но задание в хрон сам добавлял.
Вечерком скину благодарность)
Ris 15 апреля 2019 в 16:11 0
Странно. я даже на 2.9 проверял - добавляется.
Сейчас еще раз всё проверю.
@denmois 15 апреля 2019 в 16:12 0
ааа, только сейчас обновили. а я старую тестил)
@denmois 15 апреля 2019 в 16:30 0
Переустановил новую версию - все Гуд!!!
И задание само добавляется (только все равно нужно прописать время предыдущего запуска), и сообщение о том, что компонент установлен успешно (раньше была ошибка 503)
Запускать задание в хроне снова не буду, т.к. сайт не тестовый.. но думаю все должно работать
Polzovinst 15 апреля 2019 в 20:42 0
Очень хорошая штука! А есть возможность скинуть недоработанную версию, которая идёт на 2.6.0 ?
Ris 15 апреля 2019 в 21:15 0
Есть недоработанная версия, которая идет на 2.12.1
Для 2.6.0 придется опять дорабатывать.
И почему не обновитесь?
Polzovinst 15 апреля 2019 в 22:00 0
Для определённого сайта этот момент не рассматриваю.
При обновлении баги появлялись.
Это всё долго.
Да и некоторые компоненты установлены, которые не обновляются.
Ris 15 апреля 2019 в 22:21 0
Имея сайт с необновляемыми дополнениями, я однажды понял, что просто не имею возможности устанавливать дополнения на свой сайт.
То есть были дополнения для 1.10.7 и 2.7.0, а у меня был сайт на 1.9 без возможности обновления.
С тех пор я в такие ситуации стараюсь не попадать.
@denmois 16 апреля 2019 в 10:52 0
Некоторые вопросы по компоненту:
1. Ситуация
Имеем: (За сколько дней до окончания публикации уведомлять пользователей:3;
Дата окончания публикации 17.04.2019
Время выполнения задачи рассылки 10.00)
На выходе: приходит письмо в 9.59 (пунктуально) "Публикация Вашего материала "Продам Джетту" будет прекращена через 13 часов 59 минут."
То есть в течении всего периода (в моем случае трое суток) будут поступать письма?
2. Если поставить значение За сколько дней до окончания публикации уведомлять пользователей:1; (чтобы письмо приходило 1 раз)
Не получится ситуации что оно вообще не прийдет? Т.е во вторые сутки до окончания публикации будет более 24 часов, за одни уже менее 24. Как работает логика компонента?
Ris 16 апреля 2019 в 14:02 0
То есть в течении всего периода (в моем случае трое суток) будут поступать письма?
Да, каждый день при срабатывании хука по хрону будут приходить письма.
Т.е во вторые сутки до окончания публикации будет более 24 часов, за одни уже менее 24. Как работает логика компонента?
Раз в сутки всем, публикация чьих материалов закончится менее чем через сутки придет письмо.
Вариант что совсем не придет возможен, если срок публикации материала менее суток (ну например, объявление оплачено и вывешено на полдня).
Можете настроить периодичность оповещения. Например выставить период срабатывания не 1440, а 720 минут (полсуток).
MrDinesh 17 апреля 2019 в 07:45 0
В данный момент на версии 2.12.1 полёт нормальный?
Ris 17 апреля 2019 в 07:58 0
Да
MrDinesh 17 апреля 2019 в 11:28 0
Спасибо:)
Игорь ФИН 26 апреля 2019 в 01:13 0
Спасибо, если долго ждать то оно случится.