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

+23
2.12K

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

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

Иллюстрация

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

Иллюстрация
На почту приходят такие письма:

Иллюстрация
Быстро проверить работоспособность компонента можно так:

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

Скачать компонент уведомлений
+1
Александр Александр 5 лет назад #
Как всегда то что доктор прописал, спасибо Ris.
0
RSN RSN 5 лет назад #
Отлично!
Но есть вопрос...

Если контент добавлен от Гостя (например в Расширенной доске объявлений), отправлять сообщение не надо (нет почты)...
Предусмотрено ли это в компоненте?
+1
Ris Ris 5 лет назад #
Rainbow:
Если контент добавлен от Гостя (например в Расширенной доске объявлений), отправлять сообщение не надо (нет почты)... Предусмотрено ли это в компоненте?
Обладаю ли я даром телепатии? Нет, не обладаю.
Расширенной доской тоже не обладаю.
0
RSN RSN 5 лет назад #

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

cry smile

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

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

Однако это уже сами смотрите)
А то скажите, сделал бесплатно, еще и не нравится)...
+1
Ris Ris 5 лет назад #
Ну просто будут приходить админу письма счастья. Ничего страшного.
Будет, что почитать...
0
RSN RSN 5 лет назад #
Админу не будут... пользователь "Гость" с фейковым адресом.

+1
Ris Ris 5 лет назад #
Ну и уйдут письма по фейковому адресу. Сбоя в работе хука от этого не будет.
Или боитесь, что сетевая карта на сервере перегреется?
0
RSN RSN 5 лет назад #
Или боитесь, что сетевая карта на сервере перегреется?

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

Если объявлений от Гостя на сайте много... писем будет много facepalm
Впрочем как уже писал, на Ваше усмотрение...
+1
Ris Ris 5 лет назад #
А у этого гостя есть user_id ? Из вашей картинки непонятно.
Можно сделать опцию "не отправлять таким-то номерам".
0
RSN RSN 5 лет назад #
А у этого гостя есть user_id ?

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

)) ... ну, Вы поняли....)) id пользователя от которого публикуют гости...
+2
Ris Ris 5 лет назад #
Сделал настройку для неоповещаемых юзеров.
Файл перезалил.
+1
RSN RSN 5 лет назад #
Ris, спасибо большое, очень хороший компонент получился.
+2
Ris Ris 5 лет назад #
Добавил проверку на наличие user_id.
Файл перезалил.
0
Dorimen Dorimen 5 лет назад #
А для объявлений тоже работает?
+1
Ris Ris 5 лет назад #
Да.
0
Capitan Capitan 5 лет назад #
Вау! Супер! Как раз для моей доски объявлений
+1
denmois denmois 5 лет назад #
Всевышний услышал наши молитвы!!!)
Ris, не знаю как Вас благодарить.. в вашем профиле нет реквизитов для благодарностей
+1
Ris Ris 5 лет назад #
Тут есть:
https://instantcms.ru/users/575
Но сначала всё протестируйте!
0
denmois denmois 5 лет назад #
На 2.10 должно работать?
Админка компонента работает, настройки сохраняются, но задание в хроне "Информирование пользователей" не добавляется.
+1
Ris Ris 5 лет назад #
Добавьте тогда задание самостоятельно.
Главное, чтобы компонент был info и название хука info.
Остальное - на ваше усмотрение.
А я пока посмотрю, почему не добавляется.
+1
Ris Ris 5 лет назад #
Обновил. Попробуйте скачать и установить еще раз.
+1
denmois denmois 5 лет назад #
При переходе по ссылке на скачивание -> 404
+1
Ris Ris 5 лет назад #
Причем я проверял после загрузки файла, что он скачивается. Что-то странное с этим сервером.
Перезалил, попробуйте еще раз.
+7
Fuze Fuze 5 лет назад #
Внесу подобное в очередной релиз, спасибо что сподвигли своим решением.

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

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

Код 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. if(!$items){
  7. continue;
  8. }
  9. // тут уже рассылаем
Свойство
Код 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.
0
denmois denmois 5 лет назад #
Fuze, спасибо!
Если не сложно, итоговый архив для непросвещенных zst
0
Александр Витальевич Александр Витальевич 5 лет назад #
Fuze, спасибо! Тоже присоединяюсь
+1
Ris Ris 5 лет назад #
Fuze, спасибо!
Сейчас доработаю с учетом...
0
Dorimen Dorimen 5 лет назад #
И инструкцию, пожалуйста, напишите как обновить для тех, кто уже установил )
+1
Ris Ris 5 лет назад #
напишите как обновить
Просто заново установить. Старое само потрется.
+1
Ris Ris 5 лет назад #
Доработал с учетом поправок, предложенных Fuse.
Теперь можно устанавливать и на вашу 2.10.0
Архив перезалил, скачивайте.
0
Александр Витальевич Александр Витальевич 5 лет назад #
Ris как всегда просто красава!
0
denmois denmois 5 лет назад #
Ris, вы уже обновили?
Проверил, работает. Но задание в хрон сам добавлял.
Вечерком скину благодарность)
+1
Ris Ris 5 лет назад #
Странно. я даже на 2.9 проверял - добавляется.
Сейчас еще раз всё проверю.
0
denmois denmois 5 лет назад #
ааа, только сейчас обновили. а я старую тестил)
0
denmois denmois 5 лет назад #
Переустановил новую версию - все Гуд!!!
И задание само добавляется (только все равно нужно прописать время предыдущего запуска), и сообщение о том, что компонент установлен успешно (раньше была ошибка 503)
Запускать задание в хроне снова не буду, т.к. сайт не тестовый.. но думаю все должно работать
0
Polzovinst Polzovinst 5 лет назад #
Очень хорошая штука! А есть возможность скинуть недоработанную версию, которая идёт на 2.6.0 ?
+1
Ris Ris 5 лет назад #
Есть недоработанная версия, которая идет на 2.12.1
Для 2.6.0 придется опять дорабатывать.
И почему не обновитесь?
0
Polzovinst Polzovinst 5 лет назад #
Для определённого сайта этот момент не рассматриваю.
При обновлении баги появлялись.
Это всё долго.
Да и некоторые компоненты установлены, которые не обновляются.
+1
Ris Ris 5 лет назад #
Имея сайт с необновляемыми дополнениями, я однажды понял, что просто не имею возможности устанавливать дополнения на свой сайт.
То есть были дополнения для 1.10.7 и 2.7.0, а у меня был сайт на 1.9 без возможности обновления.
С тех пор я в такие ситуации стараюсь не попадать.
0
denmois denmois 5 лет назад #
Некоторые вопросы по компоненту:
1. Ситуация
Имеем: (За сколько дней до окончания публикации уведомлять пользователей:3;
Дата окончания публикации 17.04.2019
Время выполнения задачи рассылки 10.00)
На выходе: приходит письмо в 9.59 (пунктуально) "Публикация Вашего материала "Продам Джетту" будет прекращена через 13 часов 59 минут."
То есть в течении всего периода (в моем случае трое суток) будут поступать письма?
2. Если поставить значение За сколько дней до окончания публикации уведомлять пользователей:1; (чтобы письмо приходило 1 раз)
Не получится ситуации что оно вообще не прийдет? Т.е во вторые сутки до окончания публикации будет более 24 часов, за одни уже менее 24. Как работает логика компонента?
+1
Ris Ris 5 лет назад #
То есть в течении всего периода (в моем случае трое суток) будут поступать письма?
Да, каждый день при срабатывании хука по хрону будут приходить письма.
Т.е во вторые сутки до окончания публикации будет более 24 часов, за одни уже менее 24. Как работает логика компонента?
Раз в сутки всем, публикация чьих материалов закончится менее чем через сутки придет письмо.
Вариант что совсем не придет возможен, если срок публикации материала менее суток (ну например, объявление оплачено и вывешено на полдня).
Можете настроить периодичность оповещения. Например выставить период срабатывания не 1440, а 720 минут (полсуток).
0
MrDinesh MrDinesh 5 лет назад #
В данный момент на версии 2.12.1 полёт нормальный?
+1
Ris Ris 5 лет назад #
Да
0
MrDinesh MrDinesh 5 лет назад #
Спасибо:)
0
Игорь ФИН Игорь ФИН 4 года назад #
Спасибо, если долго ждать то оно случится.

Еще от автора

Сверхлёгкий webserver на Alpine linux
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать
Накрутка рейтинга и кармы пользователям, контенту и фото.
По многочисленным просьбам изготовил новый инструмент для изменения администратором сайта рейтинга и кармы пользователей.
Авторизация по любым полям из профиля и по API
Представляю уважаемому сообществу небольшое дополнение для доработки авторизации вашего сайта, а также для интеграции двух сайтов на Instantcms друг с
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.