Подмена текста в сообщении на собственнный

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Подмена текста в сообщении на собственнный

Сообщение kupidon » 25.10.2016 19:08

Доброго времени суток.
Подскажите пожалуйста: как сделать, чтобы при обнаружении в сообщении текста [xxx=2345] данный текст подменялся на мой собственный.
В сообщении никакого другого текста не будет.Что-то типа bbcode, но вместо этого текста будет выполняться запрос к бд и выводиться результаты в виде таблицы.


Форум у меня 3.0.13-PL1 :(
Последний раз редактировалось LavIgor 25.10.2016 20:13, всего редактировалось 1 раз.
Причина: Исправил заголовок и номер версии

Аватара пользователя
LavIgor
Поддержка
Поддержка
Сообщения: 3452
Зарегистрирован: 28.04.2014 8:16
Благодарил (а): 38 раз
Поблагодарили: 926 раз

Re: [3.1] Подмена текста в сообщении на собственнный

Сообщение LavIgor » 25.10.2016 19:54

kupidon писал(а): Форум у меня 3.0.16
Думаю, Вы имели в виду 3.1.6.

А добиться желаемого можно с помощью создания своего расширения: Расширения - это просто!.
Следует найти подходящие события, а дальше на Ваше усмотрение (желаемый запрос к базе, например). ;)

Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Re: [3.1] Подмена текста в сообщении на собственнный

Сообщение kupidon » 25.10.2016 20:06

LavIgor писал(а):
Думаю, Вы имели в виду 3.1.6.
нет, 3.0.13-PL1 :(

Аватара пользователя
LavIgor
Поддержка
Поддержка
Сообщения: 3452
Зарегистрирован: 28.04.2014 8:16
Благодарил (а): 38 раз
Поблагодарили: 926 раз

Re: [3.1] Подмена текста в сообщении на собственнный

Сообщение LavIgor » 25.10.2016 20:09

kupidon, в этой версии вообще всё подряд (ну или просто многое) править можно. ;)
А почему тогда ветка расширений, префикс 3.1, да ещё и номер шестнадцатый?

Перенесено из форума Для авторов в форум Для авторов (phpBB 3.0.x) 25.10.2016 20:11 модератором LavIgor

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11488
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

Re: Подмена текста в сообщении на собственнный

Сообщение Sheer » 25.10.2016 20:15

А патамушта пофегу куда песать оне всеравно прочтут
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9758
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Подмена текста в сообщении на собственнный

Сообщение Татьяна5 » 25.10.2016 21:39

За пример можно взять тот же adaptive hide

Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Re: Подмена текста в сообщении на собственнный

Сообщение kupidon » 26.10.2016 4:43

LavIgor писал(а): kupidon, в этой версии вообще всё подряд (ну или просто многое) править можно.
А почему тогда ветка расширений, префикс 3.1, да ещё и номер шестнадцатый?
писал с телефона по памяти версию. После Вашего ответа , уже дома, перепроверил, чтобы не вводить в заблуждение.
Sheer писал(а): А патамушта пофегу куда песать оне всеравно прочтут
нет, потому что вы закрыли форумы с версией 3.0. Темы там создать нельзя., где хочешь там и ищи как написать.
Татьяна5 писал(а): За пример можно взять тот же adaptive hide
Спасибо. В adaptive hide вносятся изменения в файлы:
posting.php
includes/bbcode.php
includes/constants.php
includes/functions_posting.php
includes/ucp/ucp_pm_compose.php
includes/ucp/ucp_pm_viewmessage.php
Как распознать свой bbcode я разберусь, как сделать запрос и вывести результат тоже. Подскажите в каких файлах искать. :(

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9758
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Подмена текста в сообщении на собственнный

Сообщение Татьяна5 » 26.10.2016 8:59

Не знаю как насчёт constants.php, а во все остальные перечисленные изменения точно вносить придётся

Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Re: Подмена текста в сообщении на собственнный

Сообщение kupidon » 26.10.2016 10:09

не подскажите где посмотреть: какой из этих файлов и за что отвечает?

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9758
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Подмена текста в сообщении на собственнный

Сообщение Татьяна5 » 26.10.2016 10:21

В коде. И просто по названиям файлов
posting - "постинг", страница ответа
bbcode - ббкоды
functions_posting - функции для страницы ответа
ucp_pm_compose - личный раздел _ личные сообщения _ создание
ucp_pm_viewmessage - личный раздел _ личные сообщения _ просмотр сообщений

Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Re: Подмена текста в сообщении на собственнный

Сообщение kupidon » 27.10.2016 7:32

Спасибо за ответы.

posting - "постинг", страница ответа
bbcode - ббкоды

получается что за вывод сообщения в теме (больше нигде не надо, ТОЛЬКО В ТЕМЕ) отвечают эти два файла?
Думаю, мне необязательно его добавлять в BBCODE.

Какая то стандартная функция, достает сообщение из БД: [xxx=2345],
Разделяет его и сверяет его с шаблоном:
Берет из него 2345, делает запрос в БД.
Выводит результаты запроса в сообщение.

includes/functions_posting.php ? этого файла достаточно?

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9758
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Подмена текста в сообщении на собственнный

Сообщение Татьяна5 » 27.10.2016 11:21

kupidon писал(а): эти два файла?
Нет, за то много файлов отвечают, не только эти
kupidon писал(а): includes/functions_posting.php ? этого файла достаточно?
Навряд ли
3 файла точно понадобятся, а дальше надо смотреть ещё подробнее как сделан adaptive hide, может ещё какой файл зацепит

Аватара пользователя
kupidon
phpBB 1.4.4
Сообщения: 120
Зарегистрирован: 04.04.2012 20:02
Благодарил (а): 62 раза

Re: Подмена текста в сообщении на собственнный

Сообщение kupidon » 28.10.2016 6:53

Татьяна5 писал(а): 3 файла точно понадобятся,
Все перерыл в этом adaptive hide. Не могу разобраться. Посоветуйте пожалуйста что-нибудь?
Вот код установки adaptive hide 

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

<open src="posting.php">
			<edit>
				<find><![CDATA[if (isset($post_data['post_text']))
{
	$message_parser->message = &$post_data['post_text'];
	unset($post_data['post_text']);]]></find>
				<action type="after-add"><![CDATA[
	// Adaptive Hide BBcodes MOD
	if ($mode == 'quote')
	{
		$user->add_lang('mods/adaptive_hide_bbcodes');
		$hide_search_ary = array();
		$hide_search_ary[] = '!\[hide:' . $post_data['bbcode_uid'] . '\](.*?)\[/hide:' . $post_data['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[hide\=([0-9]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/hide:' . $post_data['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/ghide:' . $post_data['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[ghide:' . $post_data['bbcode_uid'] . '\](.*?)\[/ghide:' . $post_data['bbcode_uid'] . '\]!s';
		$message_parser->message = preg_replace($hide_search_ary, $user->lang('ADAPT_HIDE_QUOTE'), $message_parser->message);
	}
	// end Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="includes/bbcode.php">
			<edit>
				<find><![CDATA[	function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false)
	{]]></find>
				<action type="after-add"><![CDATA[
		global $auth, $db, $user, $row, $author_id, $group_ids; // Adaptive Hide BBcodes MOD
]]></action>
			</edit>
			<edit>
				<find><![CDATA[						if (!$undid_bbcode_specialchars)
						{
							$message = str_replace(array('&#58;', '&#46;'), array(':', '.'), $message);
							$undid_bbcode_specialchars = true;
						}]]></find>
				<action type="after-add"><![CDATA[
						// Adaptive Hide BBcodes MOD
						if (substr_count($preg['search'][0], 'hide'))
						{
							$poster_id = isset($row['user_id']) ? $row['user_id'] : (isset($row['poster_id']) ? $row['poster_id'] : (isset($author_id) ? $author_id : 2));
							if (!isset($row['forum_id']))
							{
								$row['forum_id'] = 0;
							}
							$user->setup('mods/adaptive_hide_bbcodes');
							if (substr_count($preg['search'][0], '[hide:') && ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1))
							{							
								$message = preg_replace($preg['search'], array(0 => '[hide:' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_GUEST') . '[/hide:' . $this->bbcode_uid . ']'), $message);
							}
							if (substr_count($preg['search'][0], '[hide\=') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{
								$sql = 'SELECT group_id 
									FROM ' . USER_GROUP_TABLE . ' 
									WHERE user_id = ' . (int)$poster_id . ' 
									AND user_pending = 0';
								$result = $db->sql_query($sql);
								$poster_groups = array();
								while ($sql_row = $db->sql_fetchrow($result))
								{
									$poster_groups[] = $sql_row['group_id'];
								}
								$db->sql_freeresult($result);
								$ignore_groups = explode(',', ADAPT_HIDE_IGNORE_LIMIT_GROUPS);
								$ignore_limit = false;
								foreach ($poster_groups as $poster_group)
								{
									if (in_array($poster_group, $ignore_groups))
									{
										$ignore_limit = true;
										break;
									}
								}
								$sql = 'SELECT user_posts 
									FROM ' . USERS_TABLE . ' 
									WHERE user_id = ' . (int)$poster_id;
								$result = $db->sql_query($sql);
								$sql_row = $db->sql_fetchrow($result);
								$db->sql_freeresult($result);
								$poster_posts = $sql_row['user_posts'];
								$hide_matches = array();
								preg_match_all($preg['search'][0], $message, $hide_matches);
								foreach ($hide_matches[1] as $key => $posts)
								{
									if (!$ignore_limit)
									{
										$posts = min($posts, ADAPT_HIDE_LIMIT_POSTS, $poster_posts);
									}
									$hide_cause = false;
									if ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1)
									{
										if ($posts == 0)
										{
											$hide_cause = $user->lang('ADAPT_HIDE_GUEST');
										}
										else
										{
											$hide_cause = sprintf($user->lang('ADAPT_HIDE_GUEST_POSTS'), $posts);
										}
									}
									elseif ($user->data['user_posts'] < $posts)
									{
										$hide_cause = sprintf($user->lang('ADAPT_HIDE_POSTS'), $posts);
									}
									if ($hide_cause)
									{
										$message = str_replace($hide_matches[0][$key], '[hide=' . $posts . ':' . $this->bbcode_uid . ']' . $hide_cause . '[/hide:' . $this->bbcode_uid . ']', $message);
									}
								}
							}
							if (substr_count($preg['search'][0], '[ghide') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{							
								if (!sizeof($group_ids))
								{
									$sql = 'SELECT group_id 
										FROM ' . USER_GROUP_TABLE . ' 
										WHERE user_id = ' . (int)$user->data['user_id'] . ' 
										AND user_pending = 0';
									$result = $db->sql_query($sql);
									$group_ids = array();
									while ($sql_row = $db->sql_fetchrow($result))
									{
										$group_ids[] = $sql_row['group_id'];
									}
									$db->sql_freeresult($result);
								}
						
								if (substr_count($preg['search'][0], '[ghide:'))
								{
									$sql = 'SELECT group_id 
										FROM ' . USERS_TABLE . ' 
										WHERE user_id = ' . (int)$poster_id;
									$result = $db->sql_query($sql);
									$sql_row = $db->sql_fetchrow($result);
									$db->sql_freeresult($result);
									$poster_group = $sql_row['group_id'];
									if (!in_array($poster_group, $group_ids))
									{
										$message = preg_replace($preg['search'], array(0 => '[ghide:' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_GROUPS') . '[/ghide:' . $this->bbcode_uid . ']'), $message);
									}
								}
								if (substr_count($preg['search'][0], '[ghide\='))
								{
									$hide_matches = array();
									preg_match_all($preg['search'][0], $message, $hide_matches);
									foreach ($hide_matches[1] as $key => $groups)
									{
										$groups_ary = explode(',', $groups);
										$ghide = true;
										foreach ($groups_ary as $group)
										{
											if (in_array($group, $group_ids))
											{
												$ghide = false;
												break;
											}
										}
										if ($ghide)
										{
											$message = str_replace($hide_matches[0][$key], '[ghide=' . $groups . ':' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_GROUPS') . '[/ghide:' . $this->bbcode_uid . ']', $message);
										}
									}
								}
							}
						}
						// end Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="includes/constants.php">
			<edit>
				<find><![CDATA[?>]]></find>
				<action type="before-add"><![CDATA[
// Adaptive Hide BBcodes MOD
define('ADAPT_HIDE_LIMIT_POSTS', 200);
define('ADAPT_HIDE_IGNORE_LIMIT_GROUPS', '4,5');
// end Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="includes/functions_posting.php">
			<edit>
				<find><![CDATA[		$template->assign_block_vars($mode . '_row', array(]]></find>
				<action type="before-add"><![CDATA[
		// Adaptive Hide BBcodes MOD
		$user->add_lang('mods/adaptive_hide_bbcodes');
		$hide_search_ary = array();
		$hide_search_ary[] = '!\[hide\](.*?)\[/hide\]!s';
		$hide_search_ary[] = '!\[hide\=([0-9]+)\](.*?)\[/hide\]!s';
		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
		$hide_search_ary[] = '!\[ghide\](.*?)\[/ghide\]!s';
		$decoded_message = preg_replace($hide_search_ary, $user->lang('ADAPT_HIDE_QUOTE'), $decoded_message);
		// end Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="includes/ucp/ucp_pm_compose.php">
			<edit>
				<find><![CDATA[	$message_parser->message = ($action == 'reply') ? '' : $message_text;
	unset($message_text);]]></find>
				<action type="after-add"><![CDATA[
	// Adaptive Hide BBcodes MOD
	if ($action == 'quotepost')
	{
		$user->add_lang('mods/adaptive_hide_bbcodes');
		$hide_search_ary = array();
		$hide_search_ary[] = '!\[hide\](.*?)\[/hide\]!s';
		$hide_search_ary[] = '!\[hide\=([0-9]+)\](.*?)\[/hide\]!s';
		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
		$hide_search_ary[] = '!\[ghide\](.*?)\[/ghide\]!s';
		$message_parser->message = preg_replace($hide_search_ary, $user->lang('ADAPT_HIDE_QUOTE'), $message_parser->message);
	}
	elseif ($action == 'quote' || $action == 'forward')
	{
		$user->add_lang('mods/adaptive_hide_bbcodes');
		$hide_search_ary = array();
		$hide_search_ary[] = '!\[hide:' . $post['bbcode_uid'] . '\](.*?)\[/hide:' . $post['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[hide\=([0-9]+):' . $post['bbcode_uid'] . '\](.*?)\[/hide:' . $post['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/ghide:' . $post['bbcode_uid'] . '\]!s';
		$hide_search_ary[] = '!\[ghide:' . $post['bbcode_uid'] . '\](.*?)\[/ghide:' . $post['bbcode_uid'] . '\]!s';
		$message_parser->message = preg_replace($hide_search_ary, $user->lang('ADAPT_HIDE_QUOTE'), $message_parser->message);
	}
	// end Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="includes/ucp/ucp_pm_viewmessage.php">
			<edit>
				<find><![CDATA[function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
{
	global $user, $template, $auth, $db, $cache;
	global $phpbb_root_path, $phpEx, $config;]]></find>
				<action type="after-add"><![CDATA[
	global $author_id; // Adaptive Hide BBcodes MOD
]]></action>
			</edit>
		</open>
		<open src="styles/prosilver/theme/content.css">
			<edit>
				<find><![CDATA[/* Attachments
----------------------------------------*/]]></find>
				<action type="before-add"><![CDATA[
/* Hide block */
div.adapthide {
        border: 1px dashed #000099;
        background-color: #FFFFFF;
        margin: 0px 10px 5px 10px;
        padding: 5px 5px 5px 5px;
        font-size: 12px;
}
]]></action>
			</edit>
		</open>
Вот чего я добиваюсь:

ИзображениеИзображение

Отправлено спустя 1 час 31 минуту 37 секунд:
в каком файле поискать вхождение этого скрипта?

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