Не устанавливается статус модератора

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
dnk
phpBB 2.0.4
Сообщения: 432
Стаж: 18 лет 8 месяцев
Благодарил (а): 5 раз
Поблагодарили: 1 раз

Не устанавливается статус модератора

Сообщение dnk »

После установки мода Global Moderators и ModCP обнаружил, что, если я снимаю модератора с форума, то все отображается нормально, но если назначаю модератором, то его статус не изменяется, а равно и перестает быть доступной ссылка на модераторскую панель управления.
Причина выявлена в скрипте admin_ug_auth.php что-то не срабатывает и в результате в таблицу phpbb_users в поле user_level перестает заноситься значение 2 (что юзер-модер), приэтом, если юзера снять с должности модера, то заноситься 0, т.е. все нормально.
Взял скрипт admin_ug_auth.php оригинального phpbb - все заработало.
таким образом где-то не срабатывает код

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

if ( $set_mod != '' )
		{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . MOD . " 
				WHERE user_id IN ($set_mod)";
			if( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql);
			}
		}
Не могу понять, где

1-ый аттач - модифицированный admin_ug_auth.php
2-ой аттач - оригинальный admin_ug_auth.php

Добавлено спустя 11 часов 54 минуты 9 секунд:

Неисправность обнаружена и исправлена.
Как я и полагал, при установке мода Global moderators в скрипте admin_ug_auth.php была следующая ошибка:

Было:

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

		// 
// Update user level to mod for appropriate users 
// 
$sql = "SELECT u.user_id 
         FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u  
         WHERE ug.group_id = aa.group_id 
            AND u.user_id = ug.user_id 
            AND u.user_level NOT IN (" . USER . ", " . ADMIN . ", " . GLOBAL_MOD . ") 
         GROUP BY u.user_id 
         HAVING SUM(aa.auth_mod) > 0"; 
Должно было быть:

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

	// 
// Update user level to mod for appropriate users 
// 
$sql = "SELECT u.user_id 
         FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u  
         WHERE ug.group_id = aa.group_id 
            AND u.user_id = ug.user_id 
           				AND ug.user_pending = 0
				AND u.user_level NOT IN (" . MOD . ", " . ADMIN . ", " . GLOBAL_MOD . ") 

         GROUP BY u.user_id 
         HAVING SUM(aa.auth_mod) > 0"; 
Т.е. вместо

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

" . MOD . ", 
было

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

" . USER . ",
Из-за такой ерунды и не устанавливался user_level=2 (MOD)

У меня вопрос к техподдержке, что означает sql запрос:

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

AND ug.user_pending = 0
?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

dnk писал(а):У меня вопрос к техподдержке, что означает sql запрос:

Код:AND ug.user_pending = 0
Видимо, означает то, что пользователь не находится в списке на одобрение для вступления в какую-л. группу.
Изображение
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

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

dnk писал(а):что означает sql запрос: AND ug.user_pending = 0
И поле user_pending в таблице USER_GROUP_TABLE = 0 (то есть найденный пользователь не является кандидатом в члены группы, ожидающим одобрения модератора группы)

Добавлено спустя 45 секунд:

rxu
второй дуплет за сегодня.. это становиться хорошей традицией :D
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

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