https://github.com/phpbb/phpbb/pull/5678
Пожелания дополнений Event List
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- Поддержка
- Сообщения: 12751
- Стаж: 13 лет 8 месяцев
- Благодарил (а): 159 раз
- Поблагодарили: 2276 раз
Re: Пожелания дополнений Event List
1.
После
Моя цель - изменение заголовка новой темы, а вообще там много переменных передать можно
2.
После
Цель - перенос части информации о старой теме в новую после разделения
Отправлено спустя 31 минуту 33 секунды:
3.
После
4.
Строку
Заменить на
Строку
Заменить на
После этого
Цель - изменить вид списка жалоб
Отправлено спустя 22 минуты 5 секунд:
5.
После
6.
Строку
Заменить на
Строку
Заменить на
После
Отправлено спустя 22 минуты 40 секунд:
7.
Строку
Заменить на
Строку
Заменить на
Добавить после
includes/mcp/mcp_topic.php
После
Код: Выделить всё
'TOTAL_POSTS' => $user->lang('VIEW_TOPIC_POSTS', (int) $total),
));
Код: Выделить всё
$vars = array(
'topic_id',
'to_topic_id',
'topic_info',
'subject',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_topics_after', compact($vars)));
2.
includes/mcp/mcp_topic.php
После
Код: Выделить всё
// Link back to both topics
$return_link = sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']) . '">', '</a>') . '<br /><br />' . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>');
$redirect = $request->variable('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");
$redirect = reapply_sid($redirect);
Код: Выделить всё
$vars = array(
'topic_id',
'to_topic_id',
'topic_info',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_topics_split_topic_after', compact($vars)));
Отправлено спустя 31 минуту 33 секунды:
3.
includes/mcp/mcp_reports.php
После
Код: Выделить всё
$sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, p.post_attachment, u.username, u.username_clean, u.user_colour, r.user_id as reporter_id, ru.username as reporter_name, ru.user_colour as reporter_colour, r.report_time, r.report_id
FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u, ' . USERS_TABLE . ' ru
WHERE ' . $db->sql_in_set('r.report_id', $report_ids) . '
AND t.topic_id = p.topic_id
AND r.post_id = p.post_id
AND u.user_id = p.poster_id
AND ru.user_id = r.user_id
AND r.pm_id = 0
ORDER BY ' . $sort_order_sql;
Код: Выделить всё
$vars = array(
'sql',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_reports_get_reports_query', compact($vars)));
includes/mcp/mcp_reports.php
Строку
Код: Выделить всё
$template->assign_block_vars('postrow', array(
Код: Выделить всё
$post_row = array(
Код: Выделить всё
));
Код: Выделить всё
);
Код: Выделить всё
$vars = array(
'row',
'post_row',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_reports_get_reports_modify_post_row', compact($vars)));
$template->assign_block_vars('postrow', $post_row);
Отправлено спустя 22 минуты 5 секунд:
5.
includes/mcp/mcp_front.php
После
Код: Выделить всё
$sql = 'SELECT p.post_id, p.post_subject, p.post_time, p.post_attachment, p.poster_id, p.post_username, u.username, u.username_clean, u.user_colour, t.topic_id, t.topic_title, t.topic_first_post_id, p.forum_id
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u
WHERE ' . $db->sql_in_set('p.post_id', $post_list) . '
AND t.topic_id = p.topic_id
AND p.poster_id = u.user_id
ORDER BY p.post_time DESC, p.post_id DESC';
Код: Выделить всё
$vars = array(
'sql',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_queue_query', compact($vars)));
includes/mcp/mcp_front.php
Строку
Код: Выделить всё
$template->assign_block_vars('unapproved', array(
Код: Выделить всё
$post_row = array(
Код: Выделить всё
));
Код: Выделить всё
);
Код: Выделить всё
$vars = array(
'row',
'post_row',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_queue_modify_post_row', compact($vars)));
$template->assign_block_vars('unapproved', $post_row);
7.
includes/mcp/mcp_front.ph
Строку
Код: Выделить всё
$template->assign_block_vars('report', array(
Код: Выделить всё
$post_row = array(
Код: Выделить всё
));
Код: Выделить всё
);
Код: Выделить всё
$vars = array(
'row',
'post_row',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_front_reports_listing_modify_post_row', compact($vars)));
-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Пожелания дополнений Event List
Просим добавить событие
Удивился, что его до сих пор нет.
Делаю экст для вывода разметки BlogPosting в темах, очень нужно. По правилам СЕО туда должно выводиться только первое сообщение топика.
viewtopic_body_postrow_content_before
перед <div class="content">{postrow.MESSAGE}</div>
, в шаблон viewtopic_body.htmlУдивился, что его до сих пор нет.
Делаю экст для вывода разметки BlogPosting в темах, очень нужно. По правилам СЕО туда должно выводиться только первое сообщение топика.
-
- phpBB 2.0.1
- Сообщения: 278
- Стаж: 5 лет 5 месяцев
- Откуда: Москва
- Благодарил (а): 56 раз
- Поблагодарили: 37 раз
Re: Пожелания дополнений Event List
Удвою эту просьбу. По канонам дефолтные шаблоны не желательно же править, а приходится из-за этого.Shredder писал(а): 30.06.2023 17:00 Просим добавить событие viewtopic_body_postrow_content_before перед <div class="content">{postrow.MESSAGE}</div>, в шаблон viewtopic_body.html
-
- Поддержка
- Сообщения: 3336
- Стаж: 16 лет 1 месяц
- Благодарил (а): 17 раз
- Поблагодарили: 561 раз
Re: Пожелания дополнений Event List
Это будет дубль существующего
viewtopic_body_postrow_post_details_after
(для всех, кроме модераторов)У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Пожелания дополнений Event List
Просьба добавить в /includes/functions_messenger.php , в функцию smtpmail() те же события для форматирования писем, которые есть в функции phpbb_mail(). Сейчас при отправке через smtp письма модифицировать невозможно - только напрямую редактировать код, тогда работает.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Пожелания дополнений Event List
Shredder, перед вызовом
$smtp->socket = @stream_socket_client
устроит? Либо скажите, какое место удобнее.-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Пожелания дополнений Event List
rxu
Поясню суть задачи.
Хотел вставить логотип форума в письмо, используя расширение htmlemail. Всё, что оно делает - модифицирует заголовок письма, чтобы вместо text оно отправлялось в формате html. Чудесным образом это уничтожает все переносы строк в письме. Поиск по интернету дал лишь одно решение: нужно вставить переносы строк принудительно, используя, например,
Поэтому я отредактировал исходный код, вставив
Попробовал сейчас вставить событие в код внутри функции
Кроме этого замечания, вроде бы работает в любом месте.
Поясню суть задачи.
Хотел вставить логотип форума в письмо, используя расширение htmlemail. Всё, что оно делает - модифицирует заголовок письма, чтобы вместо text оно отправлялось в формате html. Чудесным образом это уничтожает все переносы строк в письме. Поиск по интернету дал лишь одно решение: нужно вставить переносы строк принудительно, используя, например,
$msg = nl2br($msg);
. Что я и сделал через расширение, используя событие core.notification_message_email
. Это не заработало, видимо потому, что оно вызывается до установки заголовков - $headers = $this->build_header($to, $cc, $bcc);
, а надо после.Поэтому я отредактировал исходный код, вставив
$this->msg = nl2br($this->msg);
после $headers = $this->build_header($to, $cc, $bcc);
.Попробовал сейчас вставить событие в код внутри функции
smtpmail()
- оно работает, но не так, как задумано - в письме все пробелы заменяются на переносы, даже если вставить событие в самое начало функции... Очевидно, потому что письмо модифицируется через wordwrap(utf8_wordwrap(
до передачи в функцию. Надо этот момент учесть 
Кроме этого замечания, вроде бы работает в любом месте.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Пожелания дополнений Event List
Shredder, т.е. события в
msg_email()
после $headers = $this->build_header($to, $cc, $bcc);
с выносом wordwrap(utf8_wordwrap($this->msg), 997, "\n", true)
до события будет достаточно?-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Пожелания дополнений Event List
rxu, событие должно выполняться после
Отправлено спустя 12 минут 1 секунду:
Отредактировал код, вставив проверенный рабочий пример.
Отправлено спустя 11 минут 37 секунд:
Хотя, если использовать уже имеющееся событие
Отправлено спустя 10 минут 6 секунд:
Или вместо 3-х замен просто добавить
$headers ..
, но до wordwrap(
. По сути, достаточно вставить событие после $headers ..
и заменить все вхождения $this->msg
после него на $msg
, вот так:Код: Выделить всё
// Build header
$headers = $this->build_header($to, $cc, $bcc);
$msg = $this->msg;
/**
* Event to send message via external transport
*
* @event core.mail_message_email
* @var bool break Flag indicating if the function return after hook
* @var array addresses The message recipients
* @var string subject The message subject
* @var string msg The message text
* @since 3.2.4-RC1
*/
$vars = array(
'msg',
);
extract($phpbb_dispatcher->trigger_event('core.mail_message_email', compact($vars)));
// Send message ...
if (!$use_queue)
{
$mail_to = ($to == '') ? 'undisclosed-recipients:;' : $to;
$err_msg = '';
if ($config['smtp_delivery'])
{
$result = smtpmail($this->addresses, mail_encode($this->subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers);
}
else
{
$result = phpbb_mail($mail_to, $this->subject, $msg, $headers, $encode_eol, $err_msg);
}
if (!$result)
{
$this->error('EMAIL', $err_msg);
return false;
}
}
else
{
$this->queue->put('email', array(
'to' => $to,
'addresses' => $this->addresses,
'subject' => $this->subject,
'msg' => $msg,
'headers' => $headers)
);
}
Отредактировал код, вставив проверенный рабочий пример.
Отправлено спустя 11 минут 37 секунд:
Хотя, если использовать уже имеющееся событие
core.notification_message_email
, заменив после него все вхождения $this->msg
на $msg
внутри функции msg_email()
, то тоже работает, как задумано. Получается, и нового события не надо)) Только внести эти 3 замены.Отправлено спустя 10 минут 6 секунд:
Или вместо 3-х замен просто добавить
$this->msg = $msg;
сразу после события core.notification_message_email
. Проверил - так тоже работает. Странно, что там ещё нет этой строчки...