Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
привет, народ
тут такое дело: есть ранги (это типа то, что под никами пишется), в настройках форума я разрешил юзерам писать там кто что хочет, так вот, если они там ничего не пишут, то отображается название ихнего ранга (например, New member или Member и т.д.), если они там что-то пишут, то отображается то, что они там написали
далее: есть группы юзеров (Админы, Модеры, Юзеры, Забаненые и Гости), я добавил еще несколько групп юзеров, в настройках которых указаны эти самые ранги (т.е. то, что там должно писаться для эзеров из этой группы)
ну ясно, да?
а теперь внимание, вопрос: как мне сделать так, чтобы для юзеров из определенных групп (например, с груп_айди = 5,6 или 7) в роли ранга (текста под ником) в любом случае отображался тот ранг, который указан в группе, не важно, указывали ли они его вручную или нет?
немного сумбурно, но, думаю, понятно?
заранее спасибо
Администрирование -> User groups -> Set user title: (Yes || No) Allow users in this group to set their own user title.
Администрирование -> User groups -> Set user title: (Yes || No) Allow users in this group to set their own user title.
дело в том, что если статус уже задан, то он и будет отображаться
т.е., например, для Мемберов разрешено изменение текста статуса, юзер изменил его, и все, переводишь его в группу, где это запрещено, ему это запрещается (т.е. редактировать он его уже не может), но вот отображается тот его статус, который он уже ввел до этого...
Редактировался PunBBmaster (2007-02-23 15:02:39)
Хм... мало того, еще и если юзера банить а у него есть свой статус, то вместо "забаненный" отображается его статус.
Предлагаю выход:
в viewtopic.php есть примерно такой запрос:
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, p.has_attach, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], false) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...
Мы добавляем в селект поле g_set_title из таблички groups, получаем примерно:
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, p.has_attach, g.g_id, g.g_user_title,g.g_set_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], false) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...
Затем идем в functions.php и видим там:
// If the user has a custom title
if ($user['title'] != '')
$user_title = pun_htmlspecialchars($user['title']);
// If the user is banned
else if (in_array(strtolower($user['username']), $ban_list))
$user_title = $lang_common['Banned'];
Предлагаю заменить на:
// If the user is banned
if (in_array(strtolower($user['username']), $ban_list))
$user_title = $lang_common['Banned'];
// If the user has a custom title
else if ($user['title'] != '' && $user['g_set_title'])
$user_title = pun_htmlspecialchars($user['title']);
Slavik
немного не то, что именно мне требовалось, но навел меня на верный путь, проблема решена
благодарю!
А чем не то, если не секрет?
ну главный вопрос был вот этот:
а теперь внимание, вопрос: как мне сделать так, чтобы для юзеров из определенных групп (например, с груп_айди = 5,6 или 7) в роли ранга (текста под ником) в любом случае отображался тот ранг, который указан в группе, не важно, указывали ли они его вручную или нет?
насчет забаненных юзеров, то я сам сначала не заметил даже
кстати, если кого интересует решение, в вышеуказанный запрос в viewtopic.php добавляется u.group_id, а в functions.php типа такого:
else if ($user['group_id']== '5')
$user_title = pun_htmlspecialchars($user['g_user_title']);
в общем еще раз сенькс за помощь, направил меня на верный путь
глянь, плиз, еще этот топик, может поможешь
Чета мне мое решение больше нравится, потмоу что стандратный тайтл будет отображаться не только для группы 5, а для всех у кого стоит g_set_title 0
Slavik
а если этого не требуется?
мне же это нужно только для определенной группы, а для других пусть отображается что они пишут, иначе, зачем вообще тогда я разрешал им писать?
Страницы 1
Тема закрыта