Страница 1 из 9

Email on birthday - Рассылка поздравлений

Добавлено: 07.01.2016 13:20
mokvo4
На сайте https://github.com/ForumHulp/emailonbirthday нашел для Phpbb 3.1. расширение отправить каждому пользователю email на его / ее день рождения

Расширение исправленное
На данный момент март 2017г все работает отлично письма с открытками отправляются по хрону, не зависимо от зарегистрированных посетителей зашедших на форум
forumhulp_emailonbirthday_3_1_4.zip
Устанавливаем расширение forumhulp/emailonbirthday Phpbb 3.1. расширение отправить каждому пользователю email на его / ее день рождения

Чтобы в письмах отправлять открытки надо в файле includes/functions_messenger.php
примерно в строке 440
найти

Код: Выделить всё

$headers[] = 'Content-Type: text/plain; charset=UTF-8'; // format=flowed
заменить на

Код: Выделить всё

$headers[] = 'Content-Type: text/html; charset=UTF-8';
e-mail письмо отредактируйте в HTML на свой вкус \forumhulp\emailonbirthday\language\ru\email\emailonbirthday.txt
После включения расширений настроить:
в админпанели - Функции конференции
выбрать "да" - Е-mail на день рождения: Отправить каждому пользователю email на его / ее день рождения

Все руссифицыровано

Re: Email on birthday - Рассылка поздравлений

Добавлено: 08.01.2016 17:03
Siava
Ага, пару недель назад помучился с этим расширением.. но теперь оно нормально работает с системным cron.
mokvo4 писал(а): В первую очередь надо установить и включить расширение forumhulp/helper https://github.com/ForumHulp/helper Расширение Помощник для расширений PHPBB
Мне это показалось очень подозрительным расширением и я просто закомментировал участки кода в emailonbirthday, чтобы обойтись без установки "помощника".

ext.php

Код: Выделить всё

//	public function is_enableable()
//	{
//		if (!class_exists('forumhulp\helper\helper'))
//		{
//			$this->container->get('user')->add_lang_ext('forumhulp/emailonbirthday', 'info_acp_emailonbirthday');
//			trigger_error($this->container->get('user')->lang['FH_HELPER_NOTICE'], E_USER_WARNING);
//		}

//		if (!$this->container->get('ext.manager')->is_enabled('forumhulp/helper'))
//		{
//			$this->container->get('ext.manager')->enable('forumhulp/helper');
//		}

//		return class_exists('forumhulp\helper\helper');
//	}
event/listener.php

Код: Выделить всё

class listener implements EventSubscriberInterface
{
	/* @var \phpbb\controller\helper */
//	protected $helper;

	/**
	* Constructor
	*
	* @param \phpbb\controller\helper    $helper        Controller helper object
	*/
//	public function __construct(\phpbb\controller\helper $helper)
//	{
//		$this->helper = $helper;
//	}
config/services.yml привести к виду:

Код: Выделить всё

services:
    forumhulp.emailonbirthday.lang_manager:
        class: forumhulp\emailonbirthday\lang_manager\manager
        arguments:
            - %core.root_path%
    forumhulp.emailonbirthday.listener:
        class: forumhulp\emailonbirthday\event\listener
        tags:
            - { name: event.listener }
    forumhulp.cron.emailonbirthday:
        class: forumhulp\emailonbirthday\cron\task\core\birthday
        arguments:
            - %core.root_path%
            - %core.php_ext%
            - @config
            - @user
            - @dbal.conn
            - @log
            - @forumhulp.emailonbirthday.lang_manager
            - @service_container
        calls:
            - [set_name, [forumhulp.cron.emailonbirthday]]
        tags:
            - { name: cron.task }

Re: Email on birthday - Рассылка поздравлений

Добавлено: 08.01.2016 18:09
LavIgor
Siava писал(а): Мне это показалось очень подозрительным расширением
Джон, видимо, создаёт дополнительные расширения, которые продаёт на своём сайте.
Вот это порадовало: @license Proprietary.

Он даже выпустил отдельную версию Cron Status, которая правит файлы движка...
Siava писал(а): config/services.yml привести к виду
В нём тоже возможны комментарии с помощью символа #. =)

Re: Email on birthday - Рассылка поздравлений

Добавлено: 09.01.2016 19:32
mokvo4
Siava, а какие правки надо сделать с forumhulp/htmlemail, чтобы обойтись без установки "помощника"

Re: Email on birthday - Рассылка поздравлений

Добавлено: 09.01.2016 19:54
LavIgor
mokvo4, расширение forumhulp/htmlemail основано на правках ядра phpBB, поэтому его установка не рекомендуется в принципе.

Re: Email on birthday - Рассылка поздравлений

Добавлено: 09.01.2016 20:02
mokvo4
LavIgor, так как тогда отправлять письма с картинками т.е в html :?:

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 12:17
Resistant
Siava,
Siava писал(а): чтобы обойтись без установки "помощника".
так надо те правки что вы выложили добавить в файлы?

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 15:49
Siava
Resistant, ну да, выложил то что сделал у себя для примера. А надо или нет решать вам.

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 19:52
mokvo4
Siava писал(а): ну да, выложил то что сделал у себя для примера. А надо или нет решать вам.
Так, так, так, email отправляется по системному хрону? А что в хроне на хостинге надо прописать?

Код: Выделить всё

* 01 * * * /usr/local/bin/php -q /home/имя сайта/www/site1/public_html/forum/ext/forumhulp/emailonbirthday/cron/task/core/birthday.php
или что то другое?

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 21:02
Siava
mokvo4, так.. вы сначала поймите нужен ли вам системный cron.

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

Команда запуска системного cron для вашего случая (например, каждые 5 минут):

Код: Выделить всё

*/5 * * * * /usr/local/bin/php -q /home/имя сайта/www/site1/public_html/forum/bin/phpbbcli.php cron:run
[/off]

Но мною недавно обнаружено, что с некоторые расширения, где используется планировщик и запись событий в форумный лог некорректно работают с системным cron. Это расширение тоже.
Для исправления работы необходимо внести правки в ext/forumhulp/emailonbirthday/cron/task/core/birthday.php

найти

Код: Выделить всё

				$this->log->add('admin', $this->user->data['user_id'], $this->user->data['session_ip'], 'BIRTHDAYSEND', false, array(implode(', ', $userlist)));
заменить на

Код: Выделить всё

				$user_id = (empty($this->user->data)) ? ANONYMOUS : $this->user->data['user_id'];
				$user_ip = (empty($this->user->ip)) ? '' : $this->user->ip;
				$this->log->add('admin', $user_id, $user_ip, 'BIRTHDAYSEND', false, array(implode(', ', $userlist)));
Вот и вопрос. А нужен ли вам системный cron? :mrgreen:
С использованием стандартного планировщика таких проблем не будет. Да и в большинстве случаев он лучше системного. Я просто экспериментирую и включаю всякие штуки нестандартные.


Отправлено спустя 7 минут 35 секунд:
Прилагаю свой исправленный вариант.
forumhulp.zip
Локализации в нём нет, её можно взять из первого сообщения. Лишь только поздравительное письмо под свой форум делал (там стишок). Поэтому исправляйте под себя кто захочет. :)

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 21:14
mokvo4
Siava писал(а): Вот и вопрос. А нужен ли вам системный cron?
Дело в том, что согласно Вашего поста выше я сделал правки
в
ext.php.
event/listener.php
привел к виду
config/services.yml
в итоге проверяю статус хрон- срабатывает но письма не приходят
а если применить выполнить то приходят
что почему не понятно, а оказывается хрон править надо

Re: Email on birthday - Рассылка поздравлений

Добавлено: 11.01.2016 21:26
Siava
mokvo4, вот честно не знаю будет ли с моими правками работать с обычным планировщиком, так как я использую только системный :oops: но по идее всё должно работать.

Поздравительные письма рассылаются по-умолчанию раз в 12 часов. Может быть стоит подождать?..
Или можно изменить значение последнего события отправки поздравлений, подправив в базе в phpbb_config значение emailonbirthday_last_gc, выставив его меньшим на 86400 секунд, например.

Отправлено спустя 1 минуту 3 секунды:
И Cron Status в помощь.

Re: Email on birthday - Рассылка поздравлений

Добавлено: 12.01.2016 10:02
Resistant
Siava, спасибо все работает отлично ,поздравительное письмо пришло в 9:00 утра

Re: Email on birthday - Рассылка поздравлений

Добавлено: 12.01.2016 17:41
mokvo4
Siava писал(а):
Локализации в нём нет, её можно взять из первого сообщения.
Siava, что значит Локализации, ну не совсем силен я в терминологии :oops:

Re: Email on birthday - Рассылка поздравлений

Добавлено: 12.01.2016 17:48
Anvar
mokvo4, Файлы с переведённым текстом на русский язык.