Gich
Почетный участник
Всего сообщений: 123 Рейтинг пользователя: 6 СсылкаДата регистрации на форуме: 10 нояб. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 мая 2008 23:30 Сообщение отредактировано: 18 июня 2008 0:39
Очень сильно извиняюсь за задержку. От сесси до сесси... Вот веселая жизнь кончилась. Это в moderate.php, который в корне. Что делает эта процедура: при разбиении при удалении перебрасывает темы в помойку, также при разбиении удаляет старые сообщения из ведра - то что там лежит больше месяца. ВНИМАНИЕ! У меня мусорка настроена на 287 тему. Измените на свою. Где- указано в коментах!Нужно заменить одноименную функцию приведенной ниже. И ТАК КОД: [q] function do_split_topic() { //-----------------------------
check_post(); if ($GLOBALS['inuserlevel']<$GLOBALS['inforum']['f_lmoderate'] && !check_selfmod()) error(MSG_e_mod_norights); global $link; $tid=&getvar('tid'); if ($tid) { if ($tid==$GLOBALS['topic']) error(MSG_e_mod_sametopic); $sql = "SELECT f_id FROM ".$GLOBALS['DBprefix']."Topic, ".$GLOBALS['DBprefix']."Forum ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ON (uid=".$GLOBALS['inuserid']." AND fid=f_id) ". "WHERE t_id=\"$tid\" AND t_fid=f_id AND f_ltopic<=COALESCE(ua_level,".$GLOBALS['inuserlevel'].")"; $res=&db_query($sql,$link); if (db_num_rows($res)==0) error(MSG_e_mod_noforumsplit); list($fid)=db_fetch_row($res); db_free_result($res); } else $fid=&getvar('newforum'); $forum=$GLOBALS['forum']; if (isset($_POST['move']) || $_POST['copy']) { $sql = "SELECT COUNT(*) FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=".$GLOBALS['topic']." AND p_uid!=2"; $res =&db_query($sql,$link); list($pcount)=db_fetch_row($res); if ($pcount==1) error(MSG_e_mod_singlepost);
if (!$tid) { if (!getvar("t_title")) error(MSG_e_t_empty); check_topic($fid); $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Topic SET t_fid=\"$fid\", t_title=\"".getvar("t_title")."\", t_descr=\"".getvar("t_descr")."\""; foreach ($GLOBALS['intopic'] as $key=>$value) { if (substr($key,2,0)=="t_" && $key!="t_title" && $key!="t_descr") $sql.=", $key=\"".db_slashes($value)."\""; } $res =&db_query($sql,$link); $tid = db_insert_id($res); } }
$posts=$_POST['pid']; foreach ($posts as $pid=>$value) { if ($_POST['move'][$pid]) { if ($sqldata1) $sqldata1.=" OR "; $sqldata1.="p_id=".db_slashes($pid); } if ($_POST['delete'][$pid]) { if ($sqldata2) $sqldata2.=" OR "; $sqldata2.="p_id=".db_slashes($pid); } if ($_POST['copy'][$pid]) { if ($sqldata3) $sqldata3.=" OR "; $sqldata3.="p_id=".db_slashes($pid); } }
if ($sqldata1) { $sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata1 GROUP BY p_uid"; $res =&db_query($sql,$link); while ($udata=db_fetch_row($res)) { $movedif[$udata[0]]=$udata[1]; }
if (getvar('putlink')) { if (getvar('tid')) { $sql = "SELECT t_title FROM ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tid\""; $res=&db_query($sql,$link); list($t_title)=db_fetch_row($res); db_free_result($res); } else $t_title=&getvar("t_title");
$text1 = MSG_t_msgsplitted1." \\\"<a href=\\\"index.php?t=$tid\\\">".$t_title."</a>\\\""; $text2 = MSG_t_msgsplitted2." \\\"<a href=\\\"index.php?t=".$GLOBALS['topic']."\\\">".db_slashes($GLOBALS['intopic']['t_title'])."</a>\\\"";
$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post SET p_uid=2, p_uname=\"System\", p__time=".$GLOBALS['curtime'].", p_tid=".$GLOBALS['topic'].", p_text=\"$text1\", p__html=1"; $res =&db_query($sql,$link);
$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post SET p_uid=2, p_uname=\"System\", p__time=".$GLOBALS['curtime'].", p_tid=".$tid.", p_text=\"$text2\", p__html=1"; $res =&db_query($sql,$link); }
$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"$tid\" WHERE $sqldata1"; $res =&db_query($sql,$link); $movecount = db_affected_rows($res); user_substr($movedif,$forum); user_summ($movedif,$fid); } if ($sqldata2) { $sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2 GROUP BY p_uid"; $res =&db_query($sql,$link); while ($udata=db_fetch_row($res)) { $deldif[$udata[0]]=$udata[1]; }
$sql = "SELECT p_attach FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2"; $res =&db_query($sql,$link); if (db_num_rows($res)>0) { while ($pdata=db_fetch_row($res)) { if ($sqldata4) $sqldata4.=" OR "; $sqldata4.="file_id=".$pdata[0]; } $sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE $sqldata4"; $res =&db_query($sql,$link); } //------------------- Тут модифицировано для мусорного ведра.
$sql = "SELECT u__name from ".$GLOBALS['DBprefix']."User WHERE u_id=".$GLOBALS['inuserid']; $res =&db_query($sql,$link); $del_user_name = mysql_result($res,0,'u__name');
$sql = "SELECT p_tid from ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\""; $res =&db_query($sql,$link); $tama_ud_soobsh_id = mysql_result($res,0,'p_tid');
$sql = "SELECT t_fid from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\""; $res =&db_query($sql,$link); $razdel_ud_soobsh_id = mysql_result($res,0,'t_fid');
$sql = "SELECT t_title from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\""; $res =&db_query($sql,$link); $tama_ud_soobsh = mysql_result($res,0,'t_title');
$sql = "SELECT f_title from ".$GLOBALS['DBprefix']."Forum WHERE f_id=\"$razdel_ud_soobsh_id\""; $res =&db_query($sql,$link); $razdel_ud_soobsh = mysql_result($res,0,'f_title');
$tama_ud_soobsh=str_replace('"','\\"',$tama_ud_soobsh); $razdel_ud_soobsh=str_replace('"','\\"',$razdel_ud_soobsh);
//-------------------- //Очистка корзины, от сообщений старше месяца. $Timestamp=time (); $Timestamp=$Timestamp-2505600; $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid='287' and p__time<'$Timestamp'"; $res =&db_query($sql,$link);
//
// $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2"; // $res =&db_query($sql,$link);
$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.". <br> Удалено из раздела: ".$razdel_ud_soobsh.".\" WHERE p_id=\"$pid\""; $res =&db_query($sql,$link);
$delcount=db_affected_rows($res); user_substr($deldif,$forum); } if ($sqldata3) { $sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata3 GROUP BY p_uid"; $res =&db_query($sql,$link); while ($udata=db_fetch_row($res)) { $copydif[$udata[0]]=$udata[1]; } $copycount=count($copydif);
$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post (p_tid,p_text,p__modcomment,p__time,p__edittime, p_signature,p__smiles,p__bcode,p__html,p_attach,p_uid,p_uname,p__ip,p_title) ". "SELECT \"$tid\",p_text,p__modcomment,p__time,p__edittime, p_signature,p__smiles,p__bcode,p__html,p_attach,p_uid,p_uname,p__ip,p_title ". "FROM ".$GLOBALS['DBprefix']."Post WHERE ($sqldata3)"; $res=&db_query($sql,$link); user_summ($copydif,$fid); }
topic_resync($GLOBALS['topic']); if ($tid) topic_resync($tid); forum_resync($forum); if ($sqldata1 && $fid!=$forum) forum_resync($fid);
$msg=format_word($movecount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_moved.", ". format_word($delcount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_deleted.', '. format_word($copycount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_pcopied; topic_message($msg,1); }
[/q]
Далее нужо модифицировать delete.php тот что в корне. Заменив одноименную функцию do_delete_post. ВНИМАНИЕ! У меня мусорка настроена на 287 тему. Измените на свою. Где- указано в коментах![q] function do_delete_post($pid) { global $link; $sql = "SELECT u.u__level,ua.ua_level,p.p_attach,p.p_tid,p_uid,t_fid,t__pcount ". "FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."Topic t, ".$GLOBALS['DBprefix']."User u ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ". "WHERE p_id=\"$pid\" AND p_tid=t_id AND u.u_id=p.p_uid"; $res =&db_query($sql,$link); if (db_num_rows($res)!=1) error(MSG_e_p_notfound); $pdata=&db_fetch_array($res); db_free_result($res); if ($pdata['p_uid']!=$GLOBALS['inuserid'] && check_moderate($pdata,$GLOBALS['inuserlevel'])) error(MSG_e_mod_subordinate); if ($pdata['p_attach']) { $sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE file_id=".$pdata['p_attach']; $res =&db_query($sql,$link); }
$sql = "SELECT u__name from ".$GLOBALS['DBprefix']."User WHERE u_id=".$GLOBALS['inuserid']; $res =&db_query($sql,$link); $del_user_name = mysql_result($res,0,'u__name');
$sql = "SELECT p_tid from ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\""; $res =&db_query($sql,$link); $tama_ud_soobsh_id = mysql_result($res,0,'p_tid');
$sql = "SELECT t_fid from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\""; $res =&db_query($sql,$link); $razdel_ud_soobsh_id = mysql_result($res,0,'t_fid');
$sql = "SELECT t_title from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\""; $res =&db_query($sql,$link); $tama_ud_soobsh = mysql_result($res,0,'t_title');
$sql = "SELECT f_title from ".$GLOBALS['DBprefix']."Forum WHERE f_id=\"$razdel_ud_soobsh_id\""; $res =&db_query($sql,$link); $razdel_ud_soobsh = mysql_result($res,0,'f_title');
//eregi_replace("\"", "123", $tama_ud_soobsh);
//$tama_ud_soobsh=str_replace('\\"','"',$tama_ud_soobsh); $tama_ud_soobsh=str_replace('"','\\"',$tama_ud_soobsh); $razdel_ud_soobsh=str_replace('"','\\"',$razdel_ud_soobsh);
$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.". <br> Удалено из раздела: ".$razdel_ud_soobsh.".\" WHERE p_id=\"$pid\""; $res =&db_query($sql,$link); $sql = "UPDATE ".$GLOBALS['DBprefix']."UserStat SET us_count=us_count-1 WHERE uid=".$pdata['p_uid']." AND fid=".$pdata['t_fid']; $res =&db_query($sql,$link);
// $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\""; //$res =&db_query($sql,$link); // $sql = "UPDATE ".$GLOBALS['DBprefix']."UserStat SET us_count=us_count-1 WHERE uid=".$pdata['p_uid']." AND fid=".$pdata['t_fid']; // $res =&db_query($sql,$link); if ($pdata['t__pcount']==1) { //delete_topic($pdata['p_tid']); return true; } return false; }
[/q]
Вроде все. И последнее Если что-то не заработает или есть вопросы пишите на мльник admin(*dog*)fu441.org Я в свети последних запар сюда не часто захожу времени нет! |