Уведомление об ответе

Форум для авторов модов для phpBB 2.0.x. Здесь можно попросить помощи в разработке у коллег.

Уведомление об ответе

Сообщение AEC 01.11.2004 18:28

доработал функцию сообщений по e-mail о новых ответах на подписаные сообщения.

вот код файла topic_notify.tpl:
Код: Выделить всё
Subject: Уведомление об ответе - {TOPIC_TITLE}
Charset: windows-1251
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<base href="http://aeclub.net.ua">
<style type="text/css">
.n {font-family: Verdana, Tahoma, Arial; font-size: 10pt}
.s {font-family: Verdana, Tahoma, Arial; font-size: 9pt; color : #000033; background: #F3F4FD}
</style>
<body  bgcolor=#FFFFFF text="#000000" link="#000080" alink="#800000" vlink="#2f2f4f" marginheight=10 marginwidth=10 topmargin=10 leftmargin=10 rightmargin=10 class=n>
Здравствуйте, {USERNAME}!<br><br>
{POSTER_NAME} ответил на сообщение "<a href={U_TOPIC} target=_blank>{TOPIC_TITLE}</a>" на сайте <a href=http://aeclub.net.ua target=_blank>{SITENAME}</a>.<br>
<br><br>
Текст ответа:<br><hr>
<div class=s>{MESSAGE}</div><hr><br><br>
Если вы больше не хотите следить за темой, то щёлкните по ссылке "<a href={U_STOP_WATCHING_TOPIC} target=_blank>перестать следить за темой</a>" внизу страницы. <br><br>

С уважением, администрация форума <a href=http://aeclub.net.ua target=_blank>{SITENAME}</a>.
</body></html>


но в итоге BBCode не переводится в автомате в HTML, а хотелось бы...
не подскажете как это реализовать?

вот как выглядит полученное письмо:

Текст ответа:

--------------------------------------------------------------------------------

[b:9ed140929a]BioByte[/b:9ed140929a] Проделывал такое давно, но хорошо помню сколько гимороя это стоило. В уроке написано все правильно. Читай внимательно последний абзац
[quote:9ed140929a]И в заключении еще один совет от автора руководства: На этапе настройки число ежесекундно генерируемых частиц установите поменьше. Для настройки вам должно хватить и меньшего количества, а уж на времени просчета это отразится в лучшую сторону. [/quote:9ed140929a]
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev


Сообщение Xpert 04.11.2004 13:53

AEC
Необходимо применять функцию bbencode_second_pass из файла includes/bbcode.php для корректного преобразования bbcode в html-код.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 04.11.2004 15:03

Xpert, "помедленнее, пожалуйста, я записываю"
я не знаю как это осуществить. памагиииите!
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 04.11.2004 15:30

AEC
Покажите, как вы формируете {MESSAGE}.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 04.11.2004 15:39

Xpert, чтобы я долго не ковырялся в файлах, напомните мне, пожалуйста, в каком файле формируется {MESSAGE}?
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 04.11.2004 19:08

AEC
function user_notification (functions_post.php)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 04.11.2004 19:14

Код: Выделить всё
function user_notification($mode, &$post_data, &$topic_title, &$post_message, &$forum_id, &$topic_id, &$post_id, &$notify_user)
{
   global $board_config, $lang, $db, $phpbb_root_path, $phpEx;
   global $userdata, $user_ip;

   $current_time = time();

   if ($mode == 'delete')
   {
      $delete_sql = (!$post_data['first_post'] && !$post_data['last_post']) ? " AND user_id = " . $userdata['user_id'] : '';
      $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = $topic_id" . $delete_sql;
      if (!$db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Could not change topic notify data', '', __LINE__, __FILE__, $sql);
      }
   }
   else
   {
      if ($mode == 'reply')
      {
         $sql = "SELECT ban_userid
            FROM " . BANLIST_TABLE;
         if (!($result = $db->sql_query($sql)))
         {
            message_die(GENERAL_ERROR, 'Could not obtain banlist', '', __LINE__, __FILE__, $sql);
         }

         $user_id_sql = '';
         while ($row = $db->sql_fetchrow($result))
         {
            if (isset($row['ban_userid']) && !empty($row['ban_userid']))
            {
               $user_id_sql .= ', ' . $row['ban_userid'];
            }
         }

         $sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username
            FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u
            WHERE tw.topic_id = $topic_id
               AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ")
               AND u.user_id = tw.user_id";
         if (!($result = $db->sql_query($sql)))
         {
            message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
         }

         $update_watched_sql = '';
         $bcc_list_ary = array();
         
         if ($row = $db->sql_fetchrow($result))
         {
            $username=$row['username'];
            // Sixty second limit
            @set_time_limit(60);

            do
            {
               if ($row['user_email'] != '')
               {
                  $bcc_list_ary[$row['user_lang']][] = $row['user_email'];
               }
               $update_watched_sql .= ($update_watched_sql != '') ? ', ' . $row['user_id'] : $row['user_id'];
            }
            while ($row = $db->sql_fetchrow($result));

            //
            // Let's do some checking to make sure that mass mail functions
            // are working in win32 versions of php.
            //
            if (preg_match('/[c-z]:\\\.*/i', getenv('PATH')) && !$board_config['smtp_delivery'])
            {
               $ini_val = (@phpversion() >= '4.0.0') ? 'ini_get' : 'get_cfg_var';

               // We are running on windows, force delivery to use our smtp functions
               // since php's are broken by default
               $board_config['smtp_delivery'] = 1;
               $board_config['smtp_host'] = @$ini_val('SMTP');
            }

            if (sizeof($bcc_list_ary))
            {
               include($phpbb_root_path . 'includes/emailer.'.$phpEx);
               $emailer = new emailer($board_config['smtp_delivery']);

               $script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
               $script_name = ($script_name != '') ? $script_name . '/viewtopic.'.$phpEx : 'viewtopic.'.$phpEx;
               $server_name = trim($board_config['server_name']);
               $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
               $server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) . '/' : '/';

               $orig_word = array();
               $replacement_word = array();
               obtain_word_list($orig_word, $replacement_word);

               $emailer->from($board_config['board_email']);
               $emailer->replyto($board_config['board_email']);

               $topic_title = (count($orig_word)) ? preg_replace($orig_word, $replacement_word, unprepare_message($topic_title)) : unprepare_message($topic_title);

               @reset($bcc_list_ary);
               while (list($user_lang, $bcc_list) = each($bcc_list_ary))
               {
                  $emailer->use_template('topic_notify', $user_lang);
      
                  for ($i = 0; $i < count($bcc_list); $i++)
                  {
                     $emailer->bcc($bcc_list[$i]);
                  }

                  // The Topic_reply_notification lang string below will be used
                  // if for some reason the mail template subject cannot be read
                  // ... note it will not necessarily be in the posters own language!
                  $emailer->set_subject($lang['Topic_reply_notification']);
                  
                  // This is a nasty kludge to remove the username var ... till (if?)
                  // translators update their templates
                  // $emailer->msg = preg_replace('#[ ]?{USERNAME}#', '', $emailer->msg);

                  $emailer->assign_vars(array(
                     'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
                     'SITENAME' => $board_config['sitename'],
                     'USERNAME'=>$username,
                     'TOPIC_TITLE' => $topic_title,
                     'POSTER_NAME' => $userdata['username'],
                     'MESSAGE' => nl2br($post_message),
                     'U_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id",
                     'U_STOP_WATCHING_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_TOPIC_URL . "=$topic_id&unwatch=topic")
                  );

                  $emailer->send("text/html");
                  $emailer->reset();
               }
            }
         }
         $db->sql_freeresult($result);

         if ($update_watched_sql != '')
         {
            $sql = "UPDATE " . TOPICS_WATCH_TABLE . "
               SET notify_status = " . TOPIC_WATCH_NOTIFIED . "
               WHERE topic_id = $topic_id
                  AND user_id IN ($update_watched_sql)";
            $db->sql_query($sql);
         }
      }

      $sql = "SELECT topic_id
         FROM " . TOPICS_WATCH_TABLE . "
         WHERE topic_id = $topic_id
            AND user_id = " . $userdata['user_id'];
      if (!($result = $db->sql_query($sql)))
      {
         message_die(GENERAL_ERROR, 'Could not obtain topic watch information', '', __LINE__, __FILE__, $sql);
      }

      $row = $db->sql_fetchrow($result);

      if (!$notify_user && !empty($row['topic_id']))
      {
         $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
            WHERE topic_id = $topic_id
               AND user_id = " . $userdata['user_id'];
         if (!$db->sql_query($sql))
         {
            message_die(GENERAL_ERROR, 'Could not delete topic watch information', '', __LINE__, __FILE__, $sql);
         }
      }
      else if ($notify_user && empty($row['topic_id']))
      {
         $sql = "INSERT INTO " . TOPICS_WATCH_TABLE . " (user_id, topic_id, notify_status)
            VALUES (" . $userdata['user_id'] . ", $topic_id, 0)";
         if (!$db->sql_query($sql))
         {
            message_die(GENERAL_ERROR, 'Could not insert topic watch information', '', __LINE__, __FILE__, $sql);
         }
      }
   }
}
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 04.11.2004 19:57

AEC
Пробуй:
Код: Выделить всё
[open]
includes/functions_post.php

[find]
function user_notification($mode, &$post_data, &$topic_title, &$forum_id, &$topic_id, &$post_id, &$notify_user)

[in-line, find]
, &$post_data

[in-line, after add]
, &$bbcode_uid

[find]
'MESSAGE' => nl2br($post_message),

[replace with]
'MESSAGE' => nl2br(bbencode_second_pass($post_message, $bbcode_uid)),

[open]
posting.php

[find]
user_notification($mode, $post_data, $post_info['topic_title'], $forum_id, $topic_id, $post_id, $notify_user);

[in-line, find]
, $post_data

[in-line, after add]
, $bbcode_uid
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 04.11.2004 20:24

вот такая вот ошибка теперь при создании сообщений на форуме...

Код: Выделить всё
Warning: Missing argument 9 for user_notification() in /usr/home/aeclub/www/www.aeclub.net.ua/includes/functions_post.php on line 651
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 04.11.2004 20:49

AEC
А что у тебя в 651-й и близлежащих строках?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 05.11.2004 14:24

xpert, я решил выложить тебе полностью файл functions_post.php
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 05.11.2004 15:23

Так этот файл без описанных мной модификаций... он глючит?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 05.11.2004 15:25

да, это без модификаций. он не глючит, он как раз работает :P
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 05.11.2004 15:35

Мне пожалуйста комбинацию глючных functions_post.php и posting.php :)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 05.11.2004 15:58

пожалуйста

Добавлено спустя 14 минут 49 секунд:

Xpert, проверил снова, работает! извини, что морочу голову.

однако есть мелкие неудобства. может сможешь их устранить...

текст отмеченный как цитата имеет большой размер шрифта (на форуме обычно наоборот), что делает его более выразительным чем основной текст.

спасибо за код
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

След.

Вернуться в Для авторов (phpBB 2.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0