theIggs
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Kurt 1. А если сложились устойчивые группы, например, "Пользователи", "Суперюзеры", "Продвинутые гости" и т. п., а выделять модеров в отдельную группу не хочется? Группой-то, конечно, проще, но мы же не ищем лёгких путей. 2. К сожалению, так бывает редко... народ первым делом по создании форума набирает модераторов из числа желающих, потому что модерировать надо, а кто есть кто - ещё не известно. Поэтому увольнения неизбежны. Хотя практика порочная... DAISHI Вот, поюзай бету, поищи баги. А на следующей недельке я её оформлю полноценным хаком с установлением доступа по указанному типу к нескольким форумам и всё такое... //sources/Boards.php //Найти: function process_forum($forum_id="", $forum_data="") { global $std, $ibforums; //Заменить на: function process_forum($forum_id="", $forum_data="") { global $std, $ibforums, $DB; //sources/Boards.php, sources/Forums.php //Найти: if ($forum_data['read_perms'] != '*') { if ( ! preg_match( "/(^|,)".$ibforums->member['mgroup']."(,|$)/", $forum_data['read_perms'] ) ) { return ""; } } //Выше добавить: if ($ibforums->member['id'] and $forum_data['id'] == 2) { if ($ibforums->member['g_is_supmod'] == 1) { $forum_data['read_perms'] = '*'; } else { $DB->query("SELECT member_name FROM ibf_moderators WHERE member_id='".$ibforums->member['id']."'"); if ( $DB->fetch_row() ) { $forum_data['read_perms'] = '*'; } } } //sources/Forums.php //Найти: function check_access() { global $ibforums, $HTTP_COOKIE_VARS; $return = 1; //Заменить на: function check_access() { global $ibforums, $DB, $HTTP_COOKIE_VARS; $return = 1; if ($ibforums->member['id'] and $this->forum['id'] == 2) { if ($ibforums->member['g_is_supmod'] == 1) { $this->forum['read_perms'] = '*'; } else { $DB->query("SELECT member_name FROM ibf_moderators WHERE member_id='".$ibforums->member['id']."'"); if ( $DB->fetch_row() ) { $this->forum['read_perms'] = '*'; } } } //sources/Topics.php //Найти: function check_access() { global $ibforums, $std, $HTTP_COOKIE_VARS; $return = 1; $this->m_group = $ibforums->member['mgroup']; //Заменить на: function check_access() { global $ibforums, $DB, $std, $HTTP_COOKIE_VARS; $return = 1; $this->m_group = $ibforums->member['mgroup']; if ($ibforums->member['id'] and $this->forum['id'] == 2) { if ($ibforums->member['g_is_supmod'] == 1) { $this->forum['read_perms'] = '*'; } else { $DB->query("SELECT member_name FROM ibf_moderators WHERE member_id='".$ibforums->member['id']."'"); if ( $DB->fetch_row() ) { $this->forum['read_perms'] = '*'; } } } //sources/Post.php //Найти: if ($this->forum['read_perms'] != '*') { if (! preg_match("/(^|,)".$ibforums->member['mgroup']."(,|$)/", $this->forum['read_perms'] ) ) { $std->Error( array( LEVEL => 1, MSG => 'no_view_topic') ); } } //Выше добавить: if ($ibforums->member['id'] and $this->forum['id'] == 2) { if ($ibforums->member['g_is_supmod'] == 1) { $this->forum['read_perms'] = '*'; } else { $DB->query("SELECT member_name FROM ibf_moderators WHERE member_id='".$ibforums->member['id']."'"); if ( $DB->fetch_row() ) { $this->forum['read_perms'] = '*'; } } } Что сделать: ['id'] == 2 везде заменить на ['id'] == N где N - номер форума, который надо мучать. Узнать номер можно так - заходишь в этот форум, и в адресной строке браузера будет примерно такой вот фрагмент: &SF=4& тогда номер твоего форума - 4, надо писать ['id'] == 4 Шаг второй - направляемся в Админцентр, Forum Control -> Manage и на нужном форуме Edit Permissions. Надо установить всем группам, где есть модераторы (и группе админов) все желаемые права (например, Reply To Topics, Start Topics), НО Read Topics оставить для каждой из этих групп сброшенным! (А то будут читать все подряд...) Жду баг репорты.
|