Arhar Опубликовано 22 Декабря 2006 Жалоба Поделиться Опубликовано 22 Декабря 2006 Сегодня мы удаляем форумПричем разрешаем это всем, кроме гостей Объясняю делаем запросCREATE TABLE ibf_delete_forum ( `who` int(11) NOT NULL default '0', `howmany` int(11) NOT NULL default '0', PRIMARY KEY (`who`), ); создаем новый файл в папке sources/action_public/называем его delete.php <?php if ( ! defined( 'IN_IPB' ) ) { print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; exit(); } class delete { # Global var $ipsclass; var $output = ""; function auto_run() { if ($this->ipsclass->member['mgroup']>2) { $this->ipsclass->DB->build_query( array( 'select' => 'howmany', 'from' => 'delete_forum' , 'where' => 'who='.$this->ipsclass->member['id'] )); $this->ipsclass->DB->exec_query(); $deletedata = $this->ipsclass->DB->fetch_row(); if (!$deletedata['howmany']) { $this->ipsclass->DB->do_insert( 'delete_forum', array( 'who' => $this->ipsclass->member['id'] , 'howmany' => '1' )); } else { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'delete_forum', 'set' => 'howmany=howmany+1', 'where' => 'who='.$this->ipsclass->member['id'] )); } $this->ipsclass->load_language('lang_global'); $this->ipsclass->load_template('skin_global'); $this->output .= $this->ipsclass->compiled_templates['skin_global']->delete_forum('http:// САЙТ /forum/IPS_Driver_Error.htm'); echo $this->output; } } } ?> вызывать его будет act=deleteдля этого добавляем в index.php после'component' => array( 'component' , 'component' , array() ),код 'delete' => array( 'delete' , 'delete' , array() ), идем в админку - внешний вид - изменить CSS (расширенный режим)оттуда копируем в блокнот все, что идет ДЛЯhtmlbody#redirectwrap#redirectwrap h4#redirectwrap p#redirectwrap p.redirectfoot сохраняем в блокноте чтоб не потерялось идем в админку - внешний вид - изменить html фрагменты - skin_globalсоздаем новый раздел, называется он delete_forum входящие переменные - $Url="" содержание <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=<% CHARSET %>" /> <title>{ipb.lang['stand_by']}</title> <meta http-equiv="refresh" content="2; url=$Url" /> <style type="text/css"> И СЮДА ВСТАВЛЯЕМ ВСЕ, ЧТО СОХРАНИЛИ В БЛОКНОТЕ </style> <script type='text/javascript'> //<![CDATA[ // Fix Mozilla bug: 209020 if ( navigator.product == 'Gecko' ) { navstring = navigator.userAgent.toLowerCase(); geckonum = navstring.replace( /.*gecko\/(\d+)/, "$1" ); setTimeout("moz_redirect()",1500); } function moz_redirect() { var url_bit = "{$Url}"; window.location = url_bit.replace( new RegExp( "&", "g" ) , '&' ); } //> </script> </head> <body> <div id="redirectwrap"> <h4>{ipb.lang['thanks']}</h4> <p>Спасибо, форум удален<br /><br />{ipb.lang['transfer_you']}</p> <p class="redirectfoot">(<a href="$Url">{ipb.lang['dont_wait']}</a>)</p> </div> </body> </html> и, наконец, создаем файл IPS_Driver_Error.htm содержания <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>IPS Driver Error</TITLE> <META http-equiv=Content-Type content="text/html; charset=windows-1251"> <STYLE>P { FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif } BODY { FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif } </STYLE> <META content="MSHTML 6.00.2900.3020" name=GENERATOR></HEAD> <BODY> <BR><BR> <BLOCKQUOTE><B>Ошибка с базой данных.</B><BR>Вы можете попробовать обновить эту страницу, нажав <A href="java script:window.location='http:// САЙТ /forum/index.php?act=delete';">сюда</A>. <BR><BR><B>Возвращаемая ошибка</B><BR> <FORM name=mysql><TEXTAREA rows=15 cols=60>mySQL query error: SELECT * FROM _forums; SQL error: The table is absent SQL error code: Не пали фишку </TEXTAREA></FORM><BR>Приносим свои извинения за предоставленные неудобства.</BLOCKQUOTE></BODY></HTML> и кладем в кореньне забываем, что САЙТ надо заменить на свой и писать в строчку а теперь смотрим http:// САЙТ /forum/index.php?act=delete потом добавим кнопку или просто ссылку в хедер с этим действием, и по таблице сможем узнать, кто и сколько раз удалил форумоптимизацию узнавания - потом сделаю P.S. о,сколько же багов натыкал в мое сообщение парсер Ссылка на комментарий Поделиться на других сайтах Прочее
M-K Опубликовано 22 Декабря 2006 Жалоба Поделиться Опубликовано 22 Декабря 2006 А как можно больше 1 раза удалить форум? Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 22 Декабря 2006 Автор Жалоба Поделиться Опубликовано 22 Декабря 2006 можно количество раз выведем в админку файл skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.phpдобавляем две функции перед функцией function acp_stats_wrapper($content) ://=========================================================================== // Index //=========================================================================== function acp_stats_delete_forum_row($whorow) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr> <td class='tablerow1'>{$whorow['members_display_name']}</td> <td class='tablerow2' align='center'>{$whorow['howmany']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } //=========================================================================== // Index //=========================================================================== function acp_stats_delete_forum($content) { $IPBHTML = ""; $IPBHTML .= <<<EOF <div class='tableborder'> <div class='maintitle'>Удаления Форума</div> <table width='100%' cellpadding='4' cellspacing='0'> <tr> <td class='tablesubheader' width='50%'>Имя</td> <td class='tablesubheader' width='50%' align='center'>Количество Удалений</td> </tr> $content </table> </div> </form> EOF; return $IPBHTML; } и в конце в функции acp_main_template добавляем после{$content['acp_online']} <br />{$content['who_did']} <br /> теперь файл sources/action_admin/index.php перед //----------------------------------------- // IPS latest news //-----------------------------------------добавляем //----------------------------------------- // Who delete forum //----------------------------------------- $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => array( 'delete_forum' => 'd' ), 'add_join' => array( 0 => array( 'select' => 'm.members_display_name', 'from' => array( 'members' => 'm' ), 'where' => 'm.id=d.who' ,'type' => 'left' )))); $this->ipsclass->DB->exec_query(); while ($whorow1 = $this->ipsclass->DB->fetch_row() ) { $whorow .= $this->html->acp_stats_delete_forum_row( $whorow1 ); } $content['who_did'] = $this->html->acp_stats_delete_forum( $whorow ); должно сработать Ссылка на комментарий Поделиться на других сайтах Прочее
M-K Опубликовано 22 Декабря 2006 Жалоба Поделиться Опубликовано 22 Декабря 2006 Вглядывался в исходник, но не дошло до меня... он на самом деле удаляет весь форум или что? Какой от этого смысл кроме как если чужой форум разрушать? Для своего форума он зачем нужен? Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 22 Декабря 2006 Автор Жалоба Поделиться Опубликовано 22 Декабря 2006 ничего он не удаляет)он делает вид, что удаляет)а пользователь, увидевший это, приходит в ужас - что же я сделал!!!а его ид пишется в базуа из базы пишется по его ид его имя в админкеи потом мы создаем тему, в которой пишем, кто попался на этоhttp://img291.imageshack.us/img291/7120/whodiditwb2.jpghttp://img238.imageshack.us/img238/7485/thankyoucc3.jpgipsdrivererrortg3.jpg Ссылка на комментарий Поделиться на других сайтах Прочее
M-K Опубликовано 22 Декабря 2006 Жалоба Поделиться Опубликовано 22 Декабря 2006 Дошло до меня Но это все для 2.х? f yt 1.3 а я консерватор Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 22 Декабря 2006 Автор Жалоба Поделиться Опубликовано 22 Декабря 2006 это для 2.1.x Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 23 Декабря 2006 Автор Жалоба Поделиться Опубликовано 23 Декабря 2006 для того, чтобы учитывалось, сколько всего раз удален форум, необходимы такие измененияcp_skin_index.php//=========================================================================== // Index //=========================================================================== function acp_stats_delete_forum_row($whorow) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr> <td class='tablerow1'>{$whorow['members_display_name']}</td> <td class='tablerow2' align='center'>{$whorow['howmany']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } //=========================================================================== // Index //=========================================================================== function acp_stats_delete_forum_sum($content) { $IPBHTML = ""; $IPBHTML .= <<<EOF <tr> <td class='tablerow1'><b>Всего форум удален</b></td> <td class='tablerow2' align='center'>{$content}</td> </tr> EOF; return $IPBHTML; } //=========================================================================== // Index //=========================================================================== function acp_stats_delete_forum($content) { $IPBHTML = ""; $IPBHTML .= <<<EOF <div class='tableborder'> <div class='maintitle'>Удаления Форума</div> <table width='100%' cellpadding='4' cellspacing='0'> <tr> <td class='tablesubheader' width='50%'>Имя</td> <td class='tablesubheader' width='50%' align='center'>Количество Удалений</td> </tr> $content </table> </div> </form> EOF; return $IPBHTML; }action_admin/index.php //----------------------------------------- // Who delete forum //----------------------------------------- $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => array( 'delete_forum' => 'd' ), 'add_join' => array( 0 => array( 'select' => 'm.members_display_name', 'from' => array( 'members' => 'm' ), 'where' => 'm.id=d.who' ,'type' => 'left' )))); $this->ipsclass->DB->exec_query(); while ($whorow1 = $this->ipsclass->DB->fetch_row() ) { $howmanysum += $whorow1['howmany']; $whorow .= $this->html->acp_stats_delete_forum_row( $whorow1 ); } $whorow .= $this->html->acp_stats_delete_forum_sum( $howmanysum ); $content['who_did'] = $this->html->acp_stats_delete_forum( $whorow ); Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения