1. В файле posting.php после строки
Код: Выделить всё
$hide_search_ary[] = '!\[ghide:' . $post_data['bbcode_uid'] . '\](.*?)\[/ghide:' . $post_data['bbcode_uid'] . '\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[rhide\=([a-zA-Z0-9-+.,_ ]+):' . $post_data['bbcode_uid'] . '\](.*?)\[/rhide:' . $post_data['bbcode_uid'] . '\]!s';
$hide_search_ary[] = '!\[rhide:' . $post_data['bbcode_uid'] . '\](.*?)\[/rhide:' . $post_data['bbcode_uid'] . '\]!s';Код: Выделить всё
}
// end Adaptive Hide BBcodes MODКод: Выделить всё
// Addon by me
// Выполняется, если добавлен тег [rhide], то есть, виден только группе-по-умолчанию АВТОРА сообщения
if (substr_count($preg['search'][0], '[rhide') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
{
if (substr_count($preg['search'][0], '[rhide:') && ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1))
{
$hide_cause = sprintf($user->lang('ADAPT_HIDE_GUEST_REPUTATION'), '1');
$message = preg_replace($preg['search'], array(0 => '[rhide:' . $this->bbcode_uid . ']' . $hide_cause . '[/rhide:' . $this->bbcode_uid . ']'), $message);
}
// Тег [rhide=] найден
if (substr_count($preg['search'][0], '[rhide\=') && !$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)$user->data['user_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_reputation
FROM ' . USERS_TABLE . '
WHERE user_id = ' . (int)$user->data['user_id'];
$result = $db->sql_query($sql);
$sql_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$user_reputation = $sql_row['user_reputation'];
$hide_matches = array();
preg_match_all($preg['search'][0], $message, $hide_matches);
// Действуем
foreach ($hide_matches[1] as $key => $rep_points)
{
if (!$ignore_limit)
{
$rep_points = min($rep_points, ADAPT_HIDE_LIMIT_POSTS, $user_reputation);
}
$hide_cause = false;
if ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1)
{
if ($rep_points == 0)
{
$hide_cause = $user->lang('ADAPT_HIDE_GUEST_REPUTATION');
}
else
{
$hide_cause = sprintf($user->lang('ADAPT_HIDE_GUEST_REPUTATION'), $rep_points);
}
}
elseif ($user->data['user_reputation'] < $rep_points)
{
$hide_cause = sprintf($user->lang('ADAPT_HIDE_REPUTATION'), $rep_points);
}
if ($hide_cause)
{
$message = str_replace($hide_matches[0][$key], '[rhide=' . $rep_points . ':' . $this->bbcode_uid . ']' . $hide_cause . '[/rhide:' . $this->bbcode_uid . ']', $message);
}
}
}
}
// uhide - личный хайд
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 $username)
{
if ($username==$user->data['username'])
{
$uhide = false;
break;
}
}
if ($uhide)
{
$tousers = '<em><b>' . preg_replace('/([,.;])(?=\S)/', '$1 ', $users) . '</b></em>';
$message = str_replace($hide_matches[0][$key], '[uhide=' . $users . ':' . $this->bbcode_uid . ']' . $user->lang('ADAPT_HIDE_USERS') . $tousers . '[/uhide:' . $this->bbcode_uid . ']', $message);
}
}
}
}
// end Addon by meКод: Выделить всё
$hide_search_ary[] = '!\[ghide\](.*?)\[/ghide\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[rhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/rhide\]!s';
$hide_search_ary[] = '!\[rhide\](.*?)\[/rhide\]!s';
$hide_search_ary[] = '!\[uhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/uhide\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[ghide\](.*?)\[/ghide\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[rhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/rhide\]!s';
$hide_search_ary[] = '!\[rhide\](.*?)\[/rhide\]!s';
$hide_search_ary[] = '!\[uhide\=([a-zA-Z0-9-+.,_ ]+)\](.*?)\[/uhide\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[ghide:' . $post['bbcode_uid'] . '\](.*?)\[/ghide:' . $post['bbcode_uid'] . '\]!s';Код: Выделить всё
$hide_search_ary[] = '!\[rhide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/rhide:' . $post['bbcode_uid'] . '\]!s';
$hide_search_ary[] = '!\[rhide:' . $post['bbcode_uid'] . '\](.*?)\[/rhide:' . $post['bbcode_uid'] . '\]!s';
$hide_search_ary[] = '!\[uhide\=([a-zA-Z0-9-+.,_ ]+):' . $post['bbcode_uid'] . '\](.*?)\[/uhide:' . $post['bbcode_uid'] . '\]!s';Код: Выделить всё
'ADAPT_HIDE_QUOTE' => '[i]Скрытый текст[/i]',Код: Выделить всё
'ADAPT_HIDE_GUEST_REPUTATION' => '<i>Скрытый текст. Нужно быть зарегистрированным и иметь %d репутации.</i>',
'ADAPT_HIDE_REPUTATION' => '<i>Скрытый текст. Нужно иметь %d репутации.</i>',
'ADAPT_HIDE_USERS' => '<i>Скрытый текст. Доступен только пользователям с никами </i>'Итог - скрытие по критериям работает, глюков не замечено, да и не должно глючить. Меня интересует только один момент - каково, при данном коде, будет скрытие от ботов? Также, прошу знающих просмотреть код на предмет "всё ли в порядке". Поскольку код является фактически копипастой из этого же мода, то я мог не учесть чего-нибудь важного - данный фикс для меня первый в области phpbb. Заранее спасибо за любые подсказки.Использование BBCode - [rhide]{TEXT}[/rhide]
Замена HTML - <div class="adapthide">{TEXT}</div>
Подсказка - Скрытый текст: [rhide]текст[/rhide] (скрытие от гостей и пользователей с репутацией меньше 1) или [rhide=]текст[/rhide] (скрытие по количеству репутации)
Показывать на странице ответа - Да (поставить галочку)
Использование BBCode - [rhide={NUMBER}]{TEXT}[/rhide]
Замена HTML - <div class="adapthide">{TEXT}</div>
Показывать на странице ответа - Нет
Использование BBCode - [uhide]{TEXT}[/uhide]
Замена HTML - <div class="adapthide">{TEXT}</div>
Подсказка - Скрытый текст: [uhide=ник1,ник2...]текст[/uhide] (скрытие от всех пользователей, кроме тех, чьи ники указаны через запятую)
Показывать на странице ответа - Да (поставить галочку)
Версия мода Adaptive Hide BBcodes - 1.0.1
Уточнение: пользователь sweetah напомнил, что способ скрытия по никам может быть проигнорирован, если на форуме включена опция смены ника пользователем. Лично у меня она всегда выключена, как и установлено по умолчанию, но если вы считаете необходимым дать пользователям такую возможность, то следует использовать вариант хайда по ID пользователя, как описано здесь, либо в дополнение к моим правкам добавить также строчки по приведённой ссылке, но с соответствующими правками (например, вместо uhide использовать uidhide) - пусть будут, но включать бб-коды в зависимости от текущих настроек конференции.

