1

Тема: MOD Уведомления по e-mail в ЛС

Версия 1.0

1. Выполнить в плагине DB management или phpMyAdmin заменив #__ префиксом Вашей базы.

  ALTER TABLE #__users ADD `messages_email` tinyint(1) NOT NULL default '0'

2. Открываем файл message_list.php

3. После этого

                                <label><input type="checkbox" name="messages_enable" value="1"<?php if ($pun_user['messages_enable'] == '1') echo ' checked="checked"' ?> /><?php echo $lang_pms['Use messages'] ?><br /></label>

   Добавляете это

                                <label><input type="checkbox" name="messages_email" value="1"<?php if ($pun_user['messages_email'] == '1') echo ' checked="checked"' ?> /><?php echo $lang_pms['Use messages email'] ?><br /></label>

4. Этот блок

    isset($_POST['messages_enable']) ? $msg_enable=1 : $msg_enable=0;
    $db->query('UPDATE '.$db->prefix.'users SET popup_enable='. $popup . ', messages_enable='. $msg_enable.' WHERE id='. $pun_user['id']) or error('Unable to update Private Messsage options', __FILE__, __LINE__, $db->error());

   Заменить на этот

    isset($_POST['messages_enable']) ? $msg_enable=1 : $msg_enable=0;
    isset($_POST['messages_email']) ? $msg_email=1 : $msg_email=0;
    $db->query('UPDATE '.$db->prefix.'users SET popup_enable='. $popup . ', messages_enable='. $msg_enable.', messages_email='.$msg_email.' WHERE id='. $pun_user['id']) or error('Unable to update Private Messsage options', __FILE__, __LINE__, $db->error());

5. Сохраните файл message_list.php

6. Открываем файл message_send.php

7. Эту строку

    $result = $db->query('SELECT id, username, group_id, g_pm_limit, messages_enable FROM '.$db->prefix.'users JOIN '.$db->prefix.'groups ON group_id=g_id WHERE id!=1 AND username=\''.addslashes($_POST['req_username']).'\'') or error('Unable to get user id', __FILE__, __LINE__, $db->error());

   Меняете на эту

    $result = $db->query('SELECT id, username, group_id, g_pm_limit, messages_enable, messages_email, email FROM '.$db->prefix.'users JOIN '.$db->prefix.'groups ON group_id=g_id WHERE id!=1 AND username=\''.addslashes($_POST['req_username']).'\'') or error('Unable to get user id', __FILE__, __LINE__, $db->error());

8. После этого блока

        // "Send" message
        if(isset($_POST['savemessage']))
            $status=0;
        else
            $status=1;
        $db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted, popup,sender_status) VALUES(
            \''.$user['id'].'\',
            \''.addslashes($subject).'\',
            \''.addslashes($message).'\',
            \''.addslashes($pun_user['username']).'\',
            \''.$pun_user['id'].'\',
            \''.get_remote_address().'\',
            \''.$smilies.'\',
            \'0\',
            \'0\',
            \''.time().'\',
      \'0\',
      \''.$status.'\'
        )') or error('Unable to send message', __FILE__, __LINE__, $db->error());

        // Save an own copy of the message

   Нужно добавить этот блок

        if ($user['messages_email'] == 1)
        {
            $mail_tpl = trim(file_get_contents(PUN_ROOT.'lang/'.$pun_user['language'].'/mail_templates/form_pm.tpl'));

            $first_crlf = strpos($mail_tpl, "\n");
            $mail_subject = trim(substr($mail_tpl, 8, $first_crlf-8));
            $mail_message = trim(substr($mail_tpl, $first_crlf));

            $mail_subject = str_replace('<mail_subject>', $subject, $mail_subject);
            $mail_message = str_replace('<sender>', $pun_user['username'], $mail_message);
            $mail_message = str_replace('<user>', $user['username'], $mail_message);
            $mail_message = str_replace('<board_title>', $pun_config['o_board_title'], $mail_message);
            $mail_message = str_replace('<board_mailer>', $pun_config['o_board_title'].' '.$lang_common['Mailer'], $mail_message);
            $mail_message = str_replace('<message_url>', $pun_config['o_base_url'].'/message_list.php', $mail_message);

            require_once PUN_ROOT.'include/email.php';

            pun_mail($user['email'], $mail_subject, $mail_message);
        }

9. Сохраните файл message_send.php

10. Открываем файлы pms.php из папок языковых файлов

11. После элемента массива 'Use messages' => ... добавляете строчку

'Use messages email' => 'Получать уведомления о новых ЛС на e-mail',

12. Создаем файлы lang\Язык\mail_templates\form_pm.tpl

13. Содержание для русского языка

Subject: Новое личное сообщение: <mail_subject>

Здравствуйте, <user>!

Участник <sender> форума <board_title> отправил Вам личное сообщение.
Сообщение можно прочитать по адресу <message_url>

-- 
<board_mailer>
(Не отвечайте на это сообщение)

14. Содержание для английского языка

Subject: New personal message: <mail_subject>

Hello, <user>!

<sender> from <board_title> has sent you a personal message.
The message is located at  <message_url>

-- 
<board_mailer>
(Do not reply to this message)

15. Сохраняем файлы lang\Язык\mail_templates\form_pm.tpl

З.Ы. Каждый юзер вкл/выкл уведомление у себя в ЛС - Настройка.

Моя сборка FluxBB 1.4

2

Re: MOD Уведомления по e-mail в ЛС

Огромное спасибо за МОД. smile

Есть небольшой вопросик:

Visman пишет:
  ALTER TABLE #__users ADD `messages_email` tinyint(1) NOT NULL default '0'

Я правильно понимаю, что при дефолтном значении оповещение отключено?
Т.е. если '0' заменить на '1', то оповещение по умолчанию будет включено.

Верно?

3

Re: MOD Уведомления по e-mail в ЛС

NewUser21031972 пишет:

Верно?

Да.

Моя сборка FluxBB 1.4

4

Re: MOD Уведомления по e-mail в ЛС

Visman

Установил. Пока всё работает и особых замечаний нет.

Есть одно дополнение к моду:

Необходимо учитывать кодировку, в которой сохранять файлы form_pm.tpl. Эта кодировка должна совпадать с основной кодировкой форума. Если это не учесть, то, например, при сохранении русского файла form_pm.tpl в ANSI , форум в UTF8 пришлет письмо с кракозябрами.

Ещё раз спасибо.
С вашей помощью наши движки становятся всё более удобными.
smile

5

Re: MOD Уведомления по e-mail в ЛС

Добрый день!

Подскажите, а не появился ли плагин, который включает уведомление об ЛС на e-mail без правки исходного кода?
Версия PunBB у меня — 1.3.4

Спасибо.