Adaptive Hide BBcodes - доработка

Как скрыть текст сообщения от определённых пользователей

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 4329
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Adaptive Hide BBcodes - доработка

11 май 2014, 13:57

Существует мод Adaptive Hide BBcodes https://www.phpbb.com/customise/db/mod/ ... e_bbcodes/, который позволяет с помощью бб-кодов скрывать часть сообщения или всё сообщение целиком от гостей/ботов, от пользователей из определённых групп или пользователей с определённым количеством сообщений, точнее мод не скрывает текст от кого-то, а показывает текст только определённым группам, либо пользователям с кол. сообщений больше или равным указанному.

Для скрытия текста от ботов и гостей используется бб-код

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

[hide]текст[/hide]
Для скрытия текста от пользователей которые не состоят в группе которая стоит у вас по умолчанию используется бб-код

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

[ghide]текст[/ghide]
Для скрытия текста от пользователей которые не состоят в определённой группе(ах) используется бб-код

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

[ghide=1,2,3]текст[/ghide]
где 1,2,3 - это номера групп, номер группы можно узнать так: Личный раздел - Группы - наводим курсор мыши на нужную группу, в конце URL будет строка вида

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

/memberlist.php?mode=group&g=4 
цифра 4 после g= и есть номер группы
Для скрытия текста от пользователей с определённым количеством сообщений используется бб-код

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

[hide=NNN]текст[/hide]
где NNN - это необходимое колиечство сообщений для того, чтобы текст был виден

Небольшая доработка мода которая позволяет скрывать текст (отображать его) только для определённых пользователей
1. Переделать файлы:
includes/bbcode.php перед

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

							if (substr_count($preg['search'][0], '[hide\=') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{
добавить

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

							if (substr_count($preg['search'][0], '[uhide') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{
								if (substr_count($preg['search'][0], '[uhide\='))
								{
									$hide_matches = array();
									preg_match_all($preg['search'][0], $message, $hide_matches);
									foreach ($hide_matches[1] as $key => $users)
									{
										$users_ary = explode(',', $users);
										$uhide = true;
										foreach ($users_ary as $user_id)
										{
											if ($user_id==$user->data['user_id'])
											{
												$uhide = false;
												break;
											}
										}
										if ($uhide)
										{
											$message = str_replace($hide_matches[0][$key], '[uhide=' . $users . ':' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_USERS') . '[/uhide:' . $this->bbcode_uid . ']', $message);
										}
									}
								}
							}
includes/functions_posting.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
добавить

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

		$hide_search_ary[] = '!\[uhide\=([0-9,]+)\](.*?)\[/uhide\]!s';
includes/ucp/ucp_pm_compose.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
добавить

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

		$hide_search_ary[] = '!\[uhide\=([0-9,]+)\](.*?)\[/uhide\]!s';
после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/ghide:' . $post['bbcode_uid'] . '\]!s';
добавить

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

		$hide_search_ary[] = '!\[uhide\=([0-9,]+):' . $post['bbcode_uid'] . '\](.*?)\[/uhide:' . $post['bbcode_uid'] . '\]!s';
language/ru/mods/adaptive_hide_bbcodes.php после

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

	'ADAPT_HIDE_GROUPS'			=>	'<i>Скрытый текст. Вы не состоите в группах, которым доступен этот текст.</i>',
добавить

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

	'ADAPT_HIDE_USERS'			=>	'<i>Скрытый текст. Доступен только определённым пользователям.</i>',
posting.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/ghide:' . $post_data['bbcode_uid'] . '\]!s';
добавить

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

		$hide_search_ary[] = '!\[uhide\=([0-9,]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/uhide:' . $post_data['bbcode_uid'] . '\]!s';
2. Добавить бб-код: адм. раздел - Сообщения - BBCodes - Добавить BBCode
Использование BBCode -

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

[uhide={SIMPLETEXT}]{TEXT}[/uhide]
Замена HTML -

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

<div class="adapthide">{TEXT}</div>
Подсказка -

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

Скрыть текст от определённых пользователей: [uhide=1,2,3]текст[/uhide] (будет виден только для перечисленных пользователей)
Показывать на странице ответа - Да (отметить галку)
Для скрытия текста от определённых пользователей использовать бб-код

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

[uhide=1,2,3]текст[/uhide]
где 1,2,3 - это ID пользователей для которых текст будет виден, ID пользователя можно узнать так: Пользователи - наводим курсор мыши на нужного пользователя, в конце URL будет строка вида

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

/memberlist.php?mode=viewprofile&u=53 
цифра 53 после u= и есть ID пользователя, таким образом текст заключённый в такой бб-код будет виден только пользователям с ID перечисленным в бб-коде, с помощью этого бб-кода можно так-же отображать текст только гостям

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

[uhide=1]текст[/uhide]
1 - это ID гостя, можно отображать текст даже определённым ботам, например текст

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

[uhide=17]текст[/uhide]
будет виден только боту Google (ID ботов можно узнать в таблице phpbb_users), можно с помощью этой доработки делать что-то вроде личных сообщений прямо на форуме.
--
Скриншоты:
Текст только для гостей:



Текст только для бота Google:



Текст только для определённого пользователя:


Аватара пользователя
stepan83
Благодарил (а): 81 раз
Поблагодарили: 20 раз
Сообщения: 248
Зарегистрирован: 02 ноя 2011, 21:18
Сообщение

Adaptive Hide BBcodes - доработка

18 май 2014, 23:46

PPK писал(а):где 1,2,3 - это ID пользователей для которых текст будет виден, ID пользователя можно узнать так: Пользователи - наводим курсор мыши на нужного пользователя, в конце URL будет строка вида
Сложно если например нужно более десятка спрятать под хайд. Можно ли реализовать "логины" вместо "id" ?
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Adaptive Hide BBcodes - доработка

19 май 2014, 16:20

можно, как будет время - сделаю ..
Аватара пользователя
stepan83
Благодарил (а): 81 раз
Поблагодарили: 20 раз
Сообщения: 248
Зарегистрирован: 02 ноя 2011, 21:18
Сообщение

Adaptive Hide BBcodes - доработка

19 май 2014, 19:11

PPK писал(а):можно, как будет время - сделаю ..
Здорово, не горит, подождем!
Аватара пользователя
Oleg
Откуда: Омск
Благодарил (а): 66 раз
Поблагодарили: 7 раз
Сообщения: 211
Зарегистрирован: 23 янв 2012, 14:34
Сообщение

Adaptive Hide BBcodes - доработка

28 июл 2014, 07:11

Здравствуйте, сперва нужно установить мод Adaptive Hide BBcodes, и только после этого нужно вашу доработку добавлять? :?
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Adaptive Hide BBcodes - доработка

28 июл 2014, 11:20

да, как минимум потому, что в инструкции в первом сообщении для установки используется часть самого мода, т.е. нужно найти его текст, добавить после него что-то и т.д.
Аватара пользователя
Oleg
Откуда: Омск
Благодарил (а): 66 раз
Поблагодарили: 7 раз
Сообщения: 211
Зарегистрирован: 23 янв 2012, 14:34
Сообщение

Adaptive Hide BBcodes - доработка

28 июл 2014, 15:22

PPK писал(а):да, как минимум потому, что в инструкции в первом сообщении для установки используется часть самого мода, т.е. нужно найти его текст, добавить после него что-то и т.д.
спасибо, буду пробовать
ka
kapranov
Сообщения: 2
Зарегистрирован: 07 авг 2014, 19:17
Сообщение

Adaptive Hide BBcodes - доработка

07 авг 2014, 19:21

PPK » 19 май 2014, 16:20 писал(а):можно, как будет время - сделаю ..
Доработки по нику не будет? С user_id не очень удобно
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Adaptive Hide BBcodes - доработка

08 авг 2014, 11:04

можно сделать, но работать это будет только при опред. условиях, в этой опции

опция не дложна быть равной Любые символы или ASCII (без международного юникода) + в именах пользователей не должно быть опред. символов: запятой и квадратных скобок

Добавлено спустя 2 часа 45 минут 7 секунд:
Вариант с именами пользователей, может работать совместно с вариантом из первого сообщения

1. Переделать файлы:
includes/bbcode.php перед

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

							if (substr_count($preg['search'][0], '[hide\=') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{
добавить

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

							if (substr_count($preg['search'][0], '[nhide') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
							{
								if (substr_count($preg['search'][0], '[nhide\='))
								{
									$hide_matches = array();
									preg_match_all($preg['search'][0], $message, $hide_matches);
									foreach ($hide_matches[1] as $key => $users)
									{
										$users_ary = explode(',', $users);
										$nhide = true;
										foreach ($users_ary as $username)
										{
											if (trim($username)==$user->data['username'])
											{
												$nhide = false;
												break;
											}
										}
										if ($nhide)
										{
											$message = str_replace($hide_matches[0][$key], '[nhide=' . $users . ':' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_USERNAMES') . '[/nhide:' . $this->bbcode_uid . ']', $message);
										}
									}
								}
							}
includes/functions_posting.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
добавить

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

		$hide_search_ary[] = '!\[nhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/nhide\]!s';
includes/ucp/ucp_pm_compose.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/ghide\]!s';
добавить

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

		$hide_search_ary[] = '!\[nhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/nhide\]!s';
после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/ghide:' . $post['bbcode_uid'] . '\]!s';
добавить

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

		$hide_search_ary[] = '!\[nhide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/nhide:' . $post['bbcode_uid'] . '\]!s';
language/ru/mods/adaptive_hide_bbcodes.php после

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

	'ADAPT_HIDE_GROUPS'			=>	'<i>Скрытый текст. Вы не состоите в группах, которым доступен этот текст.</i>',
добавить

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

	'ADAPT_HIDE_USERNAMES'			=>	'<i>Скрытый текст. Доступен только определённым пользователям.</i>',
posting.php после

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

		$hide_search_ary[] = '!\[ghide\=([a-zA-Z0-9-+.,_ ]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/ghide:' . $post_data['bbcode_uid'] . '\]!s';
добавить

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

		$hide_search_ary[] = '!\[nhide\=([a-zA-Z0-9-+.,_ ]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/nhide:' . $post_data['bbcode_uid'] . '\]!s';
2. Добавить бб-код: адм. раздел - Сообщения - BBCodes - Добавить BBCode
Использование BBCode -

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

[nhide={SIMPLETEXT}]{TEXT}[/nhide]
Замена HTML -

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

<div class="adapthide">{TEXT}</div>
Подсказка -

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

Скрыть текст от определённых пользователей: [nhide=имя1,имя2,имя3]текст[/nhide] (будет виден только для перечисленных пользователей)
Показывать на странице ответа - Да (отметить галку)
Для скрытия текста от определённых пользователей использовать бб-код

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

[nhide=имя1,имя2,имя3]текст[/nhide]
где имя1,имя2,имя3 - это имена пользователей для которых текст будет виден
ka
kapranov
Сообщения: 2
Зарегистрирован: 07 авг 2014, 19:17
Сообщение

Adaptive Hide BBcodes - доработка

08 авг 2014, 23:17

PPK писал(а): можно сделать, но работать это будет только при опред. условиях, в этой опции
Отлично! Спасибо! Буду изучать ;)

Вернуться в «Минимоды и хаки для phpBB3»