Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Пожелания дополнений Event List

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

domovoy писал(а): 05.09.2019 13:08 добавить несколько дополнительных вариантов выбора
https://github.com/phpbb/phpbb/pull/5678
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12416
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

Re: Пожелания дополнений Event List

Сообщение Татьяна5 »

1. 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'] . '&amp;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 . '&amp;t=' . $to_topic_id) . '">', '</a>');
		$redirect = $request->variable('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&amp;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)));
4. 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)));
6. 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);
Отправлено спустя 22 минуты 40 секунд:
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)));
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

Татьяна5, https://github.com/phpbb/phpbb/pull/6209
Можно проверить, все ли запрошенное на месте.
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Пожелания дополнений Event List

Сообщение Shredder »

Просим добавить событие viewtopic_body_postrow_content_before перед <div class="content">{postrow.MESSAGE}</div>, в шаблон viewtopic_body.html

Удивился, что его до сих пор нет.
Делаю экст для вывода разметки BlogPosting в темах, очень нужно. По правилам СЕО туда должно выводиться только первое сообщение топика.
Аватара пользователя
jd8615
phpBB 2.0.0
Сообщения: 238
Стаж: 4 года 4 месяца
Откуда: Москва
Благодарил (а): 46 раз
Поблагодарили: 34 раза

Re: Пожелания дополнений Event List

Сообщение jd8615 »

Shredder писал(а): 30.06.2023 17:00 Просим добавить событие viewtopic_body_postrow_content_before перед <div class="content">{postrow.MESSAGE}</div>, в шаблон viewtopic_body.html
Удвою эту просьбу. По канонам дефолтные шаблоны не желательно же править, а приходится из-за этого.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3336
Стаж: 15 лет
Благодарил (а): 25 раз
Поблагодарили: 590 раз

Re: Пожелания дополнений Event List

Сообщение Nekstati »

Это будет дубль существующего viewtopic_body_postrow_post_details_after (для всех, кроме модераторов)
 
Снимок экрана 2023-06-30 174744.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

Shredder писал(а): 30.06.2023 17:00 viewtopic_body_postrow_content_before
https://github.com/phpbb/phpbb/pull/6503
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Пожелания дополнений Event List

Сообщение Shredder »

Просьба добавить в /includes/functions_messenger.php , в функцию smtpmail() те же события для форматирования писем, которые есть в функции phpbb_mail(). Сейчас при отправке через smtp письма модифицировать невозможно - только напрямую редактировать код, тогда работает.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

Shredder, перед вызовом $smtp->socket = @stream_socket_client устроит? Либо скажите, какое место удобнее.
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Пожелания дополнений Event List

Сообщение Shredder »

rxu
Поясню суть задачи.
Хотел вставить логотип форума в письмо, используя расширение 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( до передачи в функцию. Надо этот момент учесть :)

Кроме этого замечания, вроде бы работает в любом месте.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

Shredder, т.е. события в msg_email() после $headers = $this->build_header($to, $cc, $bcc); с выносом wordwrap(utf8_wordwrap($this->msg), 997, "\n", true) до события будет достаточно?
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Пожелания дополнений Event List

Сообщение Shredder »

rxu, событие должно выполняться после $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)
			);
		}
Отправлено спустя 12 минут 1 секунду:
Отредактировал код, вставив проверенный рабочий пример.

Отправлено спустя 11 минут 37 секунд:
Хотя, если использовать уже имеющееся событие core.notification_message_email, заменив после него все вхождения $this->msg на $msg внутри функции msg_email(), то тоже работает, как задумано. Получается, и нового события не надо)) Только внести эти 3 замены.

Отправлено спустя 10 минут 6 секунд:
Или вместо 3-х замен просто добавить $this->msg = $msg; сразу после события core.notification_message_email. Проверил - так тоже работает. Странно, что там ещё нет этой строчки...
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

Re: Пожелания дополнений Event List

Сообщение rxu »

Shredder писал(а): 30.03.2024 21:55 Проверил - так тоже работает.
https://github.com/phpbb/phpbb/pull/6592
Изображение

Вернуться в «Для разработчиков»