FatCat Опубликовано 23 Августа 2007 Жалоба Поделиться Опубликовано 23 Августа 2007 У меня модераторам разрешено банить, ставить на премодерацию и опускать в ридонли через рейтинги.Допущенных к "кнопке" оказалось больше двух десятков.При этом иногда форум выдает интересный глюк: время наказания уже давно истекло и считается в минус, а наказание не снимается.Сделал пока внешним скриптом возможность посмотреть, кто же сидит в банке:<?php require 'conf_global.php'; Error_Reporting(1+2+4+8); // Connect to the Database if (!($link = mysql_pconnect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']))) { echo( sprintf( "Нет соединения С базой данных!", mysql_error() ) ); exit(); }; echo "<html><head><title>".$INFO['board_name']." => Кто в банке?</title></head><body><table border=1 align=center><tr><th>Ник</th><th>RO</th><th>Премодерация</th><th>Бан</th><th>Профиль</th></tr>"; $query_messa= "SELECT id, name, restrict_post, mod_posts, temp_ban FROM `ibf_members` WHERE (restrict_post <>0 AND restrict_post <> 'NULL') or (mod_posts <>0 AND mod_posts <> 'NULL') or (temp_ban <>0 AND temp_ban <> 'NULL')"; if (!($result_messa = mysql_db_query($INFO['sql_database'], $query_messa))){ echo mysql_errno(), mysql_error(); return 0; } while($row_messa = mysql_fetch_array($result_messa)) { echo "<tr>"; echo "<td>"; echo $row_messa['name']; echo "</td>"; if($row_messa['restrict_post']==0 or $row_messa['restrict_post']=="NULL"){echo "<td align=center> </td>";} else{echo "<td>".$row_messa['restrict_post']."</td>";}; if($row_messa['mod_posts']==0 or $row_messa['mod_posts']=="NULL"){echo "<td align=center> </td>";} else{echo "<td>".$row_messa['mod_posts']."</td>";}; if($row_messa['temp_ban']==0 or $row_messa['temp_ban']=="NULL"){echo "<td align=center> </td>";} else{echo "<td>".$row_messa['temp_ban']."</td>";}; echo "<td><a href='index.php?showuser=".$row_messa['id']."'>Посмотреть</a></td></tr>"; }; echo "</table></body></html>"; ?> Образец: http://www.pharm-forum.ru/banka.php Не поможет ли мне вездесущий All довести этот скрипт до удобочитаемого вида? В первую очередь для версии 1.3; или так и оставить внешним скриптом. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 24 Августа 2007 Жалоба Поделиться Опубликовано 24 Августа 2007 Вот для начала подойдёт я думаю. Доработать можно будет, во всяком случае. index.php например после "UserCP" => "Usercp", и добавляем'banka' => 'banka', в папке sources создаём файл banka.php с такой начинкой: <?php $idx = new banka; class banka { var $output = ""; var $page_title = ""; var $nav = array(); var $html = ""; function banka() {global $ibforums, $std, $print; if ($ibforums->input['CODE'] == "" or $ibforums->input['CODE'] == null) { $ibforums->input['CODE'] = 'view'; } // Call the skin, lang, codes, etc $ibforums->lang = $std->load_words($ibforums->lang, 'lang_banka', $ibforums->lang_id); $this->html = $std->load_template('skin_banka'); $this->base_url = $ibforums->base_url; switch($ibforums->input['CODE']) { case 'view': //на главную страницу банки $this->main(); break; case 'un_ban': //вытащим из банки - может когда допишется фун-кция) { $this->un_ban(); } break; default: $this->main(); break; } $print->add_output("$this->output"); $print->do_output( array( 'TITLE' => $this->page_title." < ".$ibforums->vars['board_name'], 'JS' => 0, 'NAV' => $this->nav ) ); } function main() { global $DB, $ibforums, $std; $this->output.=$this->html->table_start(); $DB->query("SELECT id, name, restrict_post, mod_posts, temp_ban FROM `ibf_members` WHERE (restrict_post <>0 AND restrict_post <> 'NULL') or (mod_posts <>0 AND mod_posts <> 'NULL') or (temp_ban <>0 AND temp_ban <> 'NULL')"); While ($temp = $DB->fetch_row()) { $s_ban = $std->hdl_ban_line( $temp['temp_ban'] ); $time_ban = $this->get_date( $s_ban['date_end']); $profile = "<a href=index.php?showuser=".$temp['id'].">".$temp['name']."</a>"; if ($temp['$mod_posts'] == 0) { $mod_posts = $ibforums->lang['no_mod']; } else { $mod_posts = $ibforums->lang['mod_banka']; } $this->output.=$this->html->table_mid($profile,$temp['restrict_post'],$mod_posts,$time_ban); } $this->output.=$this->html->end_table(); //Конец таблицы $this->page_title = $ibforums->lang['nav']; //output the nav $this->nav = array($ibforums->lang['title']); } function get_date($date="", $method="") //Это из админ_функшнс.пхп { global $INFO, $IN, $MEMBER; $this->time_options = array( 'JOINED' => $INFO['clock_joined'], 'SHORT' => $INFO['clock_short'], 'LONG' => $INFO['clock_long'] ); if (!$date) { return '--'; } if (empty($method)) { $method = 'LONG'; } $this->time_offset = (($MEMBER['time_offset'] != "") ? $MEMBER['time_offset'] : $INFO['time_offset']) * 3600; if ($INFO['time_adjust'] != "" and $INFO['time_adjust'] != 0) { $this->time_offset += ($INFO['time_adjust'] * 60); } if ($MEMBER['dst_in_use']) { $this->time_offset += 3600; } return gmdate($this->time_options[$method], ($date + $this->time_offset) ); } function un_ban() { global $DB, $ibforums; } } //конец класса ?> В папке скинов skin/sXсоздаёмskin_banka.php<?php class skin_banka { function table_start(){ global $ibforums; return <<<EOF <table border=1 align=center width=60%><tr><th>{$ibforums->lang['nik']}</th><th>{$ibforums->lang['RO']}</th><th>Премодерация</th><th>Окончание бана</th></tr> EOF; } function table_mid($profile, $restrict_post, $mod_posts, $time_ban){ global $ibforums; return <<<EOF <tr align='center'> <td>{$profile}</td> <td>{$restrict_post}</td> <td>{$mod_posts}</td> <td>{$time_ban}</td> </tr> EOF; } function end_table(){ global $ibforums; return <<<EOF </table> EOF; } } ?> В папке lang/X/ создаём lang_banka.php<?php $lang = array ( 'nav' => "Кто в банке сидит?", 'nik' => "Профиль", 'RO' => "RO", 'no_mod' => "отсутсвует", 'mod_banka' => "Премодерация включена", 'title' => "Банка" ); ?> в нужное место добавляем ссылку на всё это добро, вида /index.php?act=banka Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 24 Августа 2007 Жалоба Поделиться Опубликовано 24 Августа 2007 Возможно вместо отдельного столбца "Посмотреть профиль" стоит сделать ник пользователя в первом столбце ссылкой на этот самый профиль... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 24 Августа 2007 Жалоба Поделиться Опубликовано 24 Августа 2007 Ну, в моём примере так и сделано. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.