Запретить предупреждения администратору

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Запретить предупреждения администратору

Сообщение Shredder »

При знакомстве с phpbb3 столкнулся с неожиданной особенностью - модератор может поставить предупреждение администратору. Как это устранить? И возможно ли вообще? Ничего нигде не нашёл по этому вопросу.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Запретить предупреждения администратору

Сообщение Палыч »

Shredder
во viewtopic.php добавить

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

=== find ===
				'online'		=> false,
=== before add ===
				'user_type'			=> $row['user_type'],
=== find ===
		'POSTER_AGE'		=> $user_cache[$poster_id]['age'],
=== after add ===
		'USER_TYPE'			=> $user_cache[$poster_id]['user_type'],
и в viewtopic_body.html

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

=== find ===
<!-- IF postrow.U_WARN -->
=== replace ===
<!-- IF postrow.U_WARN  and postrow.USER_TYPE != 3 -->
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Запретить предупреждения администратору

Сообщение Shredder »

Палыч
Отлично, работает на ура! Спасибо.

Правда, не сразу ещё допёр, что 'online' => false, и вторая строка там есть...
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Запретить предупреждения администратору

Сообщение Shredder »

Поковырялся немного в файлах и по аналогии с предыдущим мне удалось сделать, чтобы при просмотре профиля основателя пропали строки "[ Блокировка ]" и "Вынести предупреждение". Для стиля subsilver2:

в memberlist.php

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

=== find ===
		'AGE'			=> $age,
=== before add ===
		'USER_TYPE'		=> $data['user_type'],
в memberlist_view.html

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

=== find ===
<!-- IF U_USER_BAN -->
=== replace ===
<!-- IF U_USER_BAN and USER_TYPE != 3 -->

=== find ===
<!-- IF U_WARN -->
=== replace ===
<!-- IF U_WARN and USER_TYPE != 3 -->
Навскидку: глюками это не грозит? Просто "по учебникам" я никогда всё это не изучал, потому и спрашиваю. При тестировании никаких не заметил.
И ещё такой вопрос: имеет ли значение, в каком порядке вставлять переменные? То есть, в данном же примере можно вместо "before" и после поставить, и вообще куда-нибудь дальше - главное, чтобы в нужном блоке было. Результат тоже не меняется. Так всё-таки имеет это значение или нет?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Запретить предупреждения администратору

Сообщение rxu »

Shredder
Любой код грозит глюками.
Shredder писал(а):имеет ли значение, в каком порядке вставлять переменные?
Конечно, имеет. Вставлять нужно туда, где вы хотите получить именно этот контент на странице.
Изображение
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Запретить предупреждения администратору

Сообщение Shredder »

Конечно, имеет. Вставлять нужно туда, где вы хотите получить именно этот контент на странице.
Поясню на конкретном примере, что я имел в виду. Именно про файл php, потому что с шаблонами-то всё и так понятно. Допустим, нашёл я этот участок кода в memberlist.php , генерирующий значки, ссылки и прочее при просмотре профиля (судя по тому, что они начинают пропадать со страницы, если соответствующие им названия убираешь):

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

// Dump it out to the template
	return array(
		'USER_TYPE'		=> $data['user_type'],
		'AGE'			=> $age,
		'RANK_TITLE'	=> $rank_title,
		'JOINED'		=> $user->format_date($data['user_regdate']),
		'VISITED'		=> (empty($last_visit)) ? ' - ' : $user->format_date($last_visit),
		'POSTS'			=> ($data['user_posts']) ? $data['user_posts'] : 0,
		'WARNINGS'		=> isset($data['user_warnings']) ? $data['user_warnings'] : 0,

		'USERNAME_FULL'		=> get_username_string('full', $user_id, $username, $data['user_colour']),
		'USERNAME'			=> get_username_string('username', $user_id, $username, $data['user_colour']),
		'USER_COLOR'		=> get_username_string('colour', $user_id, $username, $data['user_colour']),
		'U_VIEW_PROFILE'	=> get_username_string('profile', $user_id, $username, $data['user_colour']),

		'A_USERNAME'		=> addslashes(get_username_string('username', $user_id, $username, $data['user_colour'])),

		'AVATAR_IMG'		=> get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height']),
		'ONLINE_IMG'		=> (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
		'S_ONLINE'			=> ($config['load_onlinetrack'] && $online) ? true : false,
		'RANK_IMG'			=> $rank_img,
		'RANK_IMG_SRC'		=> $rank_img_src,
		'ICQ_STATUS_IMG'	=> (!empty($data['user_icq'])) ? '<img src="http://web.icq.com/whitepages/online?icq=' . $data['user_icq'] . '&img=5" width="18" height="18" />' : '',
		'S_JABBER_ENABLED'	=> ($config['jab_enable']) ? true : false,

		'U_SEARCH_USER'	=> ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id=$user_id&sr=posts") : '',
		'U_NOTES'		=> $auth->acl_getf_global('m_') ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes&u=' . $user_id, true, $user->session_id) : '',
		'U_WARN'		=> $auth->acl_get('m_warn') ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user&u=' . $user_id, true, $user->session_id) : '',
		'U_PM'			=> ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($data['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&u=' . $user_id) : '',
		'U_EMAIL'		=> $email,
		'U_WWW'			=> (!empty($data['user_website'])) ? $data['user_website'] : '',
		'U_SHORT_WWW'			=> (!empty($data['user_website'])) ? ((strlen($data['user_website']) > 55) ? substr($data['user_website'], 0, 39) . ' ... ' . substr($data['user_website'], -10) : $data['user_website']) : '',
		'U_ICQ'			=> ($data['user_icq']) ? 'http://www.icq.com/people/webmsg.php?to=' . urlencode($data['user_icq']) : '',
		'U_AIM'			=> ($data['user_aim'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=aim&u=' . $user_id) : '',
		'U_YIM'			=> ($data['user_yim']) ? 'http://edit.yahoo.com/config/send_webmesg?.target=' . urlencode($data['user_yim']) . '&.src=pg' : '',
		'U_MSN'			=> ($data['user_msnm'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=msnm&u=' . $user_id) : '',
		'U_JABBER'		=> ($data['user_jabber'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=jabber&u=' . $user_id) : '',
		'LOCATION'		=> ($data['user_from']) ? $data['user_from'] : '',

		'USER_ICQ'			=> $data['user_icq'],
		'USER_AIM'			=> $data['user_aim'],
		'USER_YIM'			=> $data['user_yim'],
		'USER_MSN'			=> $data['user_msnm'],
		'USER_JABBER'		=> $data['user_jabber'],
		'USER_JABBER_IMG'	=> ($data['user_jabber']) ? $user->img('icon_contact_jabber', $data['user_jabber']) : '',

		'L_VIEWING_PROFILE'	=> sprintf($user->lang['VIEWING_PROFILE'], $username),
	);
}
Так вот, в пределах именно этого куска кода - куда бы я ни воткнул этот 'USER_TYPE' - результат положительный - всё работает, как и надо. В других участках файла, понятное дело, он уже не работает. Но в пределах именно этого нужного куска кода, выходит, что не имеет значения, что ли, куда я его помещу?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Запретить предупреждения администратору

Сообщение rxu »

Shredder писал(а):Но в пределах именно этого нужного куска кода, выходит, что не имеет значения, что ли, куда я его помещу?
Это верно.
Изображение
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Запретить предупреждения администратору

Сообщение Shredder »

Насчёт иконки варна при просмотре тем: http://www.phpbbguru.net/community/post ... t=#p249725

Можно, кстати, ещё проще сделать, даже без правки шаблонов:

В viewtopic.php

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

=== find ===
            'online'      => false,
=== before add ===
            'user_type'         => $row['user_type'],

=== find ===
'U_WARN'
=== in-line find ===
$poster_id != ANONYMOUS
=== after add ===
 && $user_cache[$poster_id]['user_type'] != 3
Добавлено спустя 14 минут 40 секунд:
Также и при просмотре профиля: http://www.phpbbguru.net/community/post ... t=#p253596 - ничего этого не надо, достаточно:

В memberlist.php

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

=== find ===
'U_WARN'
=== inline find ===
$auth->acl_get('m_warn')
=== after add ===
 && $data['user_type'] != 3
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: Запретить предупреждения администратору

Сообщение rxu »

Shredder
Администраторы определяются не только по типу пользователя, но и по правам доступа.
Изображение
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Запретить предупреждения администратору

Сообщение Shredder »

rxu
Знаю. Но я имел в виду именно основателя, ведь и прежде - в тех постах, на которые ссылки давал, запрещали основателю. Просто тема изначально так названа. А обычным админам пусть варн остаётся :twisted:

Кстати, заметил одну любопытную вещь: вместо цифры 3, которая обозначает основателя, можно вставить USER_FOUNDER - и эффект будет тот же. Например:

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

$data['user_type'] != 3
и

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

$data['user_type'] != USER_FOUNDER
- эти два куска кода дают один и тот же эффкект. В некоторых местах родного кода форума я также замечал использование USER_FOUNDER вместо цифры 3. Интересно, почему так? Так правильней?
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Запретить предупреждения администратору

Сообщение nissin »

Правильней USER_FOUNDER.
В phpBB 3.0.6 везде используется USER_FOUNDER.

Но в шаблонах эта константа недоступна, поэтому ставят цифру 3.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Запретить предупреждения администратору

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

Как закрыть возможность поставить предупреждения и бан основателям через модераторский раздел?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Запретить предупреждения администратору

Сообщение Sheer »

Татьяна5
Это реализовано по умолчанию - при попытке заблокировать основателя выдается сообщение о недопустимости этого действия
Вы не можете закрыть доступ основателям.
Чтобы исключить возможность вынести предупреждение основателю
includes/mcp/mcp_warn.php
Найти

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

		// Prevent someone from warning themselves
		if ($user_row['user_id'] == $user->data['user_id'])
		{
			trigger_error('CANNOT_WARN_SELF');
		}
После вставить

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

//-->
		// Prevent  warning founder
		if ($user_row['user_type'] == USER_FOUNDER)
		{
			trigger_error('CANNOT_WARN_FOUNDER');
		}
//<--
language/ru/mcp.php
Найти

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

	'CANNOT_WARN_SELF'		=> 'Вы не можете предупредить самого себя.',
После вставить

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

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

Вернуться в «Поддержка phpBB 3.0.х»