Удаление группы

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Аватара пользователя
Ailandar
phpBB 1.0.0
Сообщения: 5
Стаж: 18 лет 11 месяцев

Удаление группы

Сообщение Ailandar »

Мне пришлось заняться администрированием одного форума на движке phpBB2 и я столкнулся с такой проблемой:

Один из админов удалил пользователя, который был модератором группы. Теперь с этой группой нельзя ничего сделать. При попытке ее открыть выдает сообщение

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

Error getting user list for group

DEBUG MODE

SQL Error : 1064 syntax error near 'ORDER BY u.username' at line 7

SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending FROM phpbb_go_users u, phpbb_go_user_group ug WHERE ug.group_id = 4 AND u.user_id = ug.user_id AND ug.user_pending = 0 AND ug.user_id <> ORDER BY u.username

Line : 786
File : groupcp.php
Что мне сделать, чтобы удалить эту группу или назначить другого человека ее модератором, чтобы потом удалить обычным способом? Желательно, чтобы ответ был в виде готового скрипта, так как я не большой специалист по базах данных, просто мне пришлось заняться этим форумом. У меня есть доступ к фтп, но прямого доступа к базе нет и PHPMyAdmin не установлен.
Очень прошу помочь!
Аватара пользователя
Balamut
Former team member
Сообщения: 2214
Стаж: 20 лет 2 месяца
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 68 раз

Сообщение Balamut »

Coagulant:

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

         $sql = "SELECT group_id 
            FROM " . GROUPS_TABLE . " 
            WHERE group_moderator = $user_id"; 
         if( !($result = $db->sql_query($sql)) ) 
         { 
            message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql); 
         } 
          
         while ( $row_group = $db->sql_fetchrow($result) ) 
         { 
            $group_moderator[] = $row_group['group_id']; 
         } 
          
         if ( count($group_moderator) ) 
         { 
            $update_moderator_id = implode(', ', $group_moderator); 
             
            $sql = "UPDATE " . GROUPS_TABLE . " 
               SET group_moderator = " . $userdata['user_id'] . " 
               WHERE group_moderator IN ($update_moderator_id)"; 
            if( !$db->sql_query($sql) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql); 
            } 
         }
В файле admin/admin_users.php находим строчку
Код:
WHERE group_moderator IN ($update_moderator_id)";
заменяем на
Код:
WHERE group_id IN ($update_moderator_id)";


Когда происходит удаление юзера, являющегося по совместительству модератором какой-нибудь группы, его "должность" заменяет админ, производящий удаление Но из-за бага этого не происходит, т.к. в коде перепутан id группы, в которой был модератором удаляемый юзер, и его id.
//
// That's all, Folks!
// -------------------------------------------------
Аватара пользователя
Ailandar
phpBB 1.0.0
Сообщения: 5
Стаж: 18 лет 11 месяцев

Сообщение Ailandar »

Спасибо за ответ. Насколько я понимаю, после внесения этого изменения в код таких глюков не будет. Но что мне сделать с существующей группой? Как ее удалить?
Аватара пользователя
Balamut
Former team member
Сообщения: 2214
Стаж: 20 лет 2 месяца
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 68 раз

Сообщение Balamut »

Ailandar, имхо, без доступа к мускулу вам никак. Ставьте phpMyAdmin.

2 Coagulant: В багтрек-то писАл по этому поводу?
//
// That's all, Folks!
// -------------------------------------------------
Аватара пользователя
Ailandar
phpBB 1.0.0
Сообщения: 5
Стаж: 18 лет 11 месяцев

Сообщение Ailandar »

Smayliks
Жаль :(
А если поставим phpMyAdmin и залезем в майсиквель, что там редактировать?
Аватара пользователя
Balamut
Former team member
Сообщения: 2214
Стаж: 20 лет 2 месяца
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 68 раз

Сообщение Balamut »

Я тут подумал... Можно и без пхпМайАдмина, сделать через дбГенератор пхп файлик, залить его на сервак, выполнить и удалить (чтобы присвоить группе модератора).
навскидку не скажу ни мускульный запрос, ни сам файлик - у меня здесь даже локалхоста нет.

Ждёмс наших гуру, а я через час уезжаю на море. ;-)
//
// That's all, Folks!
// -------------------------------------------------
Аватара пользователя
Ailandar
phpBB 1.0.0
Сообщения: 5
Стаж: 18 лет 11 месяцев

Сообщение Ailandar »

Smayliks Спасибо :)

Гуру, помогите!!!
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 19 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

Как я ничего не понимаю, идем в ***groups и делаем

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

select * from ***groups where group_type <> 1
Это даст список неперсональных групп. Находим group_id нужной нам группы и делаем два запроса

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

delete from ***groups where group_id=<ID группы>
delete from ***user_group where group_id=<ID группы>
"И если я неправ, пусть старшие товарищи поправят меня"
Аватара пользователя
Ailandar
phpBB 1.0.0
Сообщения: 5
Стаж: 18 лет 11 месяцев

Сообщение Ailandar »

/DiOs А можно поподробнее? Я пока тока учусь...

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

group_id = 4
Это из кода вверху страницы. Это id неправильной группы?
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 19 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

Ailandar писал(а):Это из кода вверху страницы. Это id неправильной группы?
Я не анализировал тот код. Я вообще тупой, чесслово. Я тупо вставляю скопированные строки из писем в строку поиска и нахожу ответы на вопросы, которые авторы найти почему-то не могли. Я смотрю на структуру базы и делаю к таблицам тупые запросы, на которые получаю не менее тупые (т.е. запрошенные) ответы. Если вы сделаете в mysql первый из написанных мною запросов (или запустите файл, сгенерированный по этому запросу DBgenerator'ом), то вы увидите все данные по всем неперсональным группам. Надеюсь, по названиям групп вы сможете понять, какая лишняя? Тогда посмотрите ее ID и выполните (или сгенерируйте) два следующих запроса, подставив в них этот ID.

Добавлено спустя 1 минуту 39 секунд:

да, разумеется "***" в запросах означают ваш префикс таблиц форума в DB.
И если я неправ, пусть старшие товарищи поправят меня

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