Уважаемые пользователи, по техническим причинам загрузка файлов временно недоступна. Приносим извинения за временные неудобства.

Поиск сообщений с определенными ббкод тегами

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Поиск сообщений с определенными ббкод тегами

Сообщение Vova_OB »

есть ли модуль который ищет сообщения в которых был использован искомый тег ббкода ?
Когда вводишь в строку [название тега] и в результате список со всеми сообщениями в которых есть этот тег
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

Re: Поиск сообщений с определенными ббкод тегами

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

Мода нет, это можно сделать через phpMyAdmin

Зайти в таблицу phpbb_posts
Перейти на вкладку "Поиск"
Поле post_text, "Содержит", ввести ббкод без квадратных скобок
2013-09-24_151120.jpg
Выполнить, получим результат запроса со списком id постов
2013-09-24_151228.jpg
И переходить по ссылкам http://адрес_форума/viewtopic.php?p=(здесь_id)#p(здесь_id)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск сообщений с определенными ббкод тегами

Сообщение Sheer »

Татьяна5 писал(а):ввести ббкод без квадратных скобок
Не совсем верно. Если так искать[i] , то найдено будет много чего лишнего, например текст содержащий img
Вот набросок, кому не лень, может доделать.
bbc_search.php

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

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('posting', 'search'));

$bb_code	= request_var('bbc', '');
$submit		= request_var('submit', false);
$start 		= request_var('s', 0);

$bbcodes = array(
	'b:' 			=> $user->lang['BBCODE_B_HELP'],
	'i:'			=> $user->lang['BBCODE_I_HELP'],
	'u:'			=> $user->lang['BBCODE_U_HELP'],
	'img:'			=> $user->lang['BBCODE_P_HELP'],
	'code:'			=> $user->lang['BBCODE_C_HELP'],
	'list:'			=> $user->lang['BBCODE_L_HELP'],
	'quote:'		=> $user->lang['BBCODE_Q_HELP'],
	'url='			=> $user->lang['BBCODE_W_HELP'],
	'color='		=> $user->lang['FONT_COLOR'],
	'flash='		=> $user->lang['BBCODE_D_HELP'],
	'size='			=> $user->lang['BBCODE_F_HELP'],
	);

$sql = 'SELECT bbcode_tag, bbcode_helpline FROM '. BBCODES_TABLE .'';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
	$bbcodes[$row['bbcode_tag']] = $row['bbcode_helpline'];
}

$s_bbcode = '';
foreach ($bbcodes as $key => $value)
{
	$selected = ($bb_code == $key) ? ' selected="selected"' : '';
	$s_bbcode .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
}

$order_by = '';
//$order_by = ' ORDER BY post_time ASC LIMIT '. $start .' , '. $config['topics_per_page'].'';

if ($submit)
{
	$sql = 'SELECT DISTINCT t.topic_title, t.topic_id, t.forum_id, p.post_id, p.post_subject, f.forum_id, f.forum_name
		FROM  '. TOPICS_TABLE .' t
		LEFT JOIN '. POSTS_TABLE .' p ON (t.topic_id = p.topic_id)
		LEFT JOIN '. FORUMS_TABLE .' f ON (t.forum_id = f.forum_id)
		WHERE p.post_text REGEXP  \''.$bb_code.'\' '.$order_by.'';
	$result = $db->sql_query($sql);
	while ($row = $db->sql_fetchrow($result))
	{
		$topic_id = $row['topic_id'];
		$forum_id = $row['forum_id'];
		$post_id = $row['post_id'];
		$template->assign_block_vars('row', array(
			'TOPIC'		=> $row['topic_title'],
			'SUBJECT'	=> $row['post_subject'],
			'FORUM'		=> $row['forum_name'],
			'U_FORUM'	=> append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id"),
			'U_TOPIC'	=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id"),
			'U_POST'	=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=$post_id#p$post_id"),
		));
	}

}

$template->assign_vars(array(
	'S_BB_CODE'	=> $s_bbcode,
	'S_ACTION'	=> append_sid("{$phpbb_root_path}bbc_search.$phpEx"),

));

// Output the page
page_header('');

$template->set_filenames(array(
	'body' => 'bbc_search.html')
);

page_footer();

?>
bbc_search.html

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

<!-- INCLUDE overall_header.html -->
<h3>BB-code Search</h3><br />
<form name="search" action="{S_ACTION}" method="post">
	<select name="bbc">{S_BB_CODE}</select><b></b>
	<input type="submit" name="submit" value="{L_SUBMIT}" class="btnmain"/>
</form>
<br /><hr /><br />
<!-- IF .row -->
<!-- BEGIN row -->
	{L_TOPIC}: <a href="{row.U_TOPIC}">{row.TOPIC}</a>&nbsp;{L_MESSAGE}: <a href="{row.U_POST}"><b>{row.SUBJECT}</b></a>&nbsp;{L_IN}: <a href="{row.U_FORUM}">{row.FORUM}</a><br />
<!-- END row -->
<br /><hr />
<!-- ELSE -->
<p class="error"><b>{L_NO_SEARCH_RESULTS}</b></p>
<!-- ENDIF -->
<!-- INCLUDE overall_footer.html -->
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

Re: Поиск сообщений с определенными ббкод тегами

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

Sheer писал(а):Не совсем верно
Да. Но для самодельных ббкодов (которые чаще всего с длинными названиями) подходит и это
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск сообщений с определенными ббкод тегами

Сообщение Vova_OB »

Благодарен, немного переделал под права прочтения форума если пользователь может видеть форум то видит тогда темы этого форума в результате.

Есть еще желание доделать под модуль ббкод для модератора и ббкод для админа (display_only_for_adm, display_only_for_mod) - когда теги которые доступны только админу и модератору не видит в выпадающем списке обычный пользователь и тем более гость, как получится выложу.

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

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('posting', 'search'));

$bb_code	= request_var('bbc', '');
$submit		= request_var('submit', false);
$start 		= request_var('s', 0);

$bbcodes = array(
	'b:' 			=> $user->lang['BBCODE_B_HELP'],
	'i:'			=> $user->lang['BBCODE_I_HELP'],
	'u:'			=> $user->lang['BBCODE_U_HELP'],
	'img:'			=> $user->lang['BBCODE_P_HELP'],
	'code:'			=> $user->lang['BBCODE_C_HELP'],
	'list:'			=> $user->lang['BBCODE_L_HELP'],
	'quote:'		=> $user->lang['BBCODE_Q_HELP'],
	'url='			=> $user->lang['BBCODE_W_HELP'],
	'color='		=> $user->lang['FONT_COLOR'],
	'flash='		=> $user->lang['BBCODE_D_HELP'],
	'size='			=> $user->lang['BBCODE_F_HELP'],
	);

$sql = 'SELECT bbcode_tag, bbcode_helpline,display_only_for_adm, display_only_for_mod, display_on_posting FROM '. BBCODES_TABLE .'';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{   
   
	$bbcodes[$row['bbcode_tag']] = $row['bbcode_helpline'];
	
}

$s_bbcode = '';
foreach ($bbcodes as $key => $value)
{
	$selected = ($bb_code == $key) ? ' selected="selected"' : '';
	$s_bbcode .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
}

$order_by = '';
//$order_by = ' ORDER BY post_time ASC LIMIT '. $start .' , '. $config['topics_per_page'].'';

if ($submit)
{
	$sql = 'SELECT DISTINCT t.topic_title, t.topic_id, t.forum_id, p.post_id, p.post_subject, f.forum_id, f.forum_name
		FROM  '. TOPICS_TABLE .' t
		LEFT JOIN '. POSTS_TABLE .' p ON (t.topic_id = p.topic_id)
		LEFT JOIN '. FORUMS_TABLE .' f ON (t.forum_id = f.forum_id)
		WHERE p.post_text REGEXP  ''.$bb_code.'' '.$order_by.'';
	$result = $db->sql_query($sql);
	while ($row = $db->sql_fetchrow($result))
	{
		$topic_id = $row['topic_id'];
		$forum_id = $row['forum_id'];
		$post_id = $row['post_id'];
		$template->assign_block_vars('row', array(
		   // 'DISPLAY_ONLY_FOR_ADM'	=> $row['display_only_for_adm'] ? true : false,
			//'DISPLAY_ONLY_FOR_MOD'	=> $row['display_only_for_mod'] ? true : false,
		    'TOPIC_LANG_CONSTANT' =>   $auth->acl_get('f_read', $row['forum_id']) ? $user->lang['TOPIC'] .':' :'', 
			'MESSAGE_LANG_CONSTANT' =>   $auth->acl_get('f_read', $row['forum_id']) ? $user->lang['MESSAGE'] .':' :'', 
			'IN_LANG_CONSTANT' =>   $auth->acl_get('f_read', $row['forum_id']) ? $user->lang['IN'] .':' :'',
			'BRTAG_LANG_CONSTANT' =>   $auth->acl_get('f_read', $row['forum_id']) ? '<br />' :'',
			'TOPIC'		=> $auth->acl_get('f_read', $row['forum_id']) ? $row['topic_title']:'',
			'SUBJECT'	=> $auth->acl_get('f_read', $row['forum_id']) ? $row['post_subject']:'',
			'FORUM'		=> $auth->acl_get('f_read', $row['forum_id']) ? $row['forum_name']:'',
			'U_FORUM'   => $auth->acl_get('f_read', $row['forum_id']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id"):'',
			'U_TOPIC'   => $auth->acl_get('f_read', $row['forum_id']) ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id"):'',
			'U_POST'	=> $auth->acl_get('f_read', $row['forum_id']) ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=$topic_id#p$post_id"):'',
		));
	}

}

$template->assign_vars(array(
	'S_BB_CODE'	=> $s_bbcode,
	'S_ACTION'	=> append_sid("{$phpbb_root_path}bbcode_search.$phpEx"),

));

// Output the page
page_header('');

$template->set_filenames(array(
	'body' => 'bbcode_search.html')
);

page_footer();

?>

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

<!-- INCLUDE overall_header.html -->
<h3>BB-code Search</h3><br />
<form name="search" action="{S_ACTION}" method="post">
	<select name="bbc">{S_BB_CODE}</select><b></b>
	<input type="submit" name="submit" value="{L_SUBMIT}" class="btnmain"/>
</form>
<br /><hr /><br />
<!-- IF .row -->
<!-- BEGIN row -->
	{row.TOPIC_LANG_CONSTANT} <a href="{row.U_TOPIC}">{row.TOPIC}</a>&nbsp;{row.MESSAGE_LANG_CONSTANT} <a href="{row.U_POST}"><b>{row.SUBJECT}</b></a>&nbsp;{row.IN_LANG_CONSTANT} <a href="{row.U_FORUM}">{row.FORUM}</a>{row.BRTAG_LANG_CONSTANT}
<!-- END row -->
<br /><hr />
<!-- ELSE -->
<p class="error"><b>{L_NO_SEARCH_RESULTS}</b></p>
<!-- ENDIF -->
<!-- INCLUDE overall_footer.html -->
Добавлено спустя 1 минуту 54 секунды:
хотя кажется что можно было с правами по проще сделать с меншим колличеством кода
Аватара пользователя
clubforum
phpBB 2.0.0
Сообщения: 216
Стаж: 15 лет
Благодарил (а): 57 раз
Поблагодарили: 3 раза

Re: Поиск сообщений с определенными ббкод тегами

Сообщение clubforum »

Vova_OB писал(а):когда теги которые доступны только админу и модератору не видит в выпадающем списке обычный пользователь
https://www.phpbb.com/customise/db/mod/ ... y_for_mod/
Добавляет чекбокс в админку для бб-кодов, предназначенных только для модераторов.

При нажатии на кнопку "Ответ" любой юзер всё равно сможет увидеть внутренность бб-кода.

Вернуться в «Запросы модов для phpBB 3.0.x»