📄 prune.inc.php
字号:
$forums = '0';
$query = $db->query("SELECT fid FROM {$tablepre}moderators WHERE uid='$discuz_uid'");
while($forum = $db->fetch_array($query)) {
$forums .= ','.$forum['fid'];
}
$sql .= " AND p.fid IN ($forums)";
}
if($users != '') {
$uids = '-1';
$query = $db->query("SELECT uid FROM {$tablepre}members WHERE ".(empty($cins) ? 'BINARY' : '')." username IN ('".str_replace(',', '\',\'', str_replace(' ', '', $users))."')");
while($member = $db->fetch_array($query)) {
$uids .= ",$member[uid]";
}
$sql .= " AND p.authorid IN ($uids)";
}
if($useip != '') {
$sql .= " AND p.useip LIKE '".str_replace('*', '%', $useip)."'";
}
if($keywords != '') {
$sqlkeywords = '';
$or = '';
$keywords = explode(',', str_replace(' ', '', $keywords));
for($i = 0; $i < count($keywords); $i++) {
if(preg_match("/\{(\d+)\}/", $keywords[$i])) {
$keywords[$i] = preg_replace("/\\\{(\d+)\\\}/", ".{0,\\1}", preg_quote($keywords[$i], '/'));
$sqlkeywords .= " $or p.subject REGEXP '".$keywords[$i]."' OR p.message REGEXP '".$keywords[$i]."'";
} else {
$sqlkeywords .= " $or p.subject LIKE '%".$keywords[$i]."%' OR p.message LIKE '%".$keywords[$i]."%'";
}
$or = 'OR';
}
$sql .= " AND ($sqlkeywords)";
}
if($lengthlimit != '') {
$lengthlimit = intval($lengthlimit);
$sql .= " AND LENGTH(p.message) < $lengthlimit";
}
if($starttime != '0') {
$starttime = strtotime($starttime);
$sql .= " AND p.dateline>'$starttime'";
}
if($adminid == 1 && $endtime != gmdate('Y-n-j', $timestamp + $timeoffset * 3600)) {
if($endtime != '0') {
$endtime = strtotime($endtime);
$sql .= " AND p.dateline<'$endtime'";
}
} else {
$endtime = $timestamp;
}
if(($adminid == 2 && $endtime - $starttime > 86400 * 16) || ($adminid == 3 && $endtime - $starttime > 86400 * 8)) {
$error = 'prune_mod_range_illegal';
}
if(!$error) {
if($detail) {
$pagetmp = $page;
do{
$query = $db->query("SELECT p.fid, p.tid, p.pid, p.author, p.authorid, p.dateline, t.subject, p.message FROM {$tablepre}posts p LEFT JOIN {$tablepre}threads t USING(tid) WHERE 1 $sql LIMIT ".(($pagetmp - 1) * $ppp).",$ppp");
$pagetmp--;
} while(!$db->num_rows($query) && $pagetmp);
$posts = '';
while($post = $db->fetch_array($query)) {
$post['dateline'] = gmdate("$dateformat $timeformat", $post['dateline'] + $timeoffset * 3600);
$post['subject'] = cutstr($post['subject'], 30);
$post['message'] = dhtmlspecialchars(cutstr($post['message'], 50));
$posts .= "<tr><td align=\"center\" class=\"altbg1\"><input class=\"checkbox\" type=\"checkbox\" name=\"pidarray[]\" value=\"$post[pid]\" checked>\n".
"<td class=\"altbg2\"><a href=\"redirect.php?goto=findpost&pid=$post[pid]&ptid=$post[tid]\" target=\"_blank\">$post[subject]</a></td>\n".
"<td class=\"altbg1\">$post[message]</td>\n".
"<td align=\"center\" class=\"altbg2\"><a href=\"forumdisplay.php?fid=$post[fid]\" target=\"_blank\">{$_DCACHE[forums][$post[fid]][name]}</a></td>\n".
"<td align=\"center\" class=\"altbg1\"><a href=\"viewpro.php?uid=$post[authorid]\" target=\"_blank\">$post[author]</a></td>\n".
"<td align=\"center\" class=\"altbg2\">$post[dateline]</td></tr>\n";
}
$postcount = $db->result($db->query("SELECT count(*) FROM {$tablepre}posts p WHERE 1 $sql"), 0);
$multi = multi($postcount, $ppp, $page, "admincp.php?action=prune");
$multi = preg_replace("/href=\"admincp.php\?action=prune&page=(\d+)\"/", "href=\"javascript:page(\\1)\"", $multi);
$multi = str_replace("window.location='admincp.php?action=prune&page='+this.value", "page(this.value)", $multi);
} else {
$query = $db->query("SELECT pid FROM {$tablepre}posts p WHERE 1 $sql");
while($post = $db->fetch_array($query)) {
$pids .= ','.$post['pid'];
}
$postcount = $db->result($db->query("SELECT count(*) FROM {$tablepre}posts p WHERE 1 $sql"), 0);
$multi = '';
}
if(!$postcount) {
$error = 'prune_post_nonexistence';
}
}
?>
<br><br><form method="post" action="admincp.php?action=prune" target="pruneframe">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<input type="hidden" name="pids" value="<?=authcode($pids, 'ENCODE')?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header">
<td colspan="2"><?=$lang['prune_result']?> <?=$postcount?></td>
</tr>
<?
if($error) {
echo "<tr><td class=\"altbg2\"><b>$lang[discuz_message]: $lang[$error]</b></td></tr>";
} else {
?>
<tr>
<td class="altbg1"><?=$lang['prune']?></td>
<td class="altbg2"><input class="checkbox" type="checkbox" name="donotupdatemember" value="1" checked> <?=$lang['prune_no_update_member']?></td>
</tr>
<?
if($detail) {
?>
</table><br><br><?=$multi?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td><input name="chkall" type="checkbox" class="checkbox" checked onclick="checkall(this.form, 'pidarray', 'chkall')"><?=$lang['del']?></td><td><?=$lang['subject']?></td><td><?=$lang['message']?></td><td><?=$lang['forum']?></td><td><?=$lang['author']?></td><td><?=$lang['time']?></td></tr>
<?=$posts?>
<?
}
}
echo '</table>'.$multi.'<br><center><input class="button" type="submit" name="prunesubmit" value="'.$lang['submit'].'" '.($error ? 'disabled' : '').'></center></form><iframe name="pruneframe" style="display:none"></iframe>';
}
} elseif($action == 'pmprune') {
if(!submitcheck('prunesubmit', 1)) {
shownav('menu_maint_pmprune');
?>
<form method="post" action="admincp.php?action=pmprune">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="2"><?=$lang['prune_pm']?></td></tr>
<tr><td class="altbg1"><?=$lang['prune_pm_ignore_new']?></td>
<td class="altbg2" align="right"><input class="checkbox" type="checkbox" name="ignorenew" value="1"></td></tr>
<tr><td class="altbg1"><?=$lang['prune_pm_day']?></td>
<td class="altbg2" align="right"><input type="text" name="days" size="7"></td></tr>
<tr><td class="altbg1"><?=$lang['prune_pm_user']?></td>
<td class="altbg2" align="right">
<?=$lang['case_insensitive']?> <input class="checkbox" type="checkbox" name="cins" value="1">
<br><input type="text" name="users" size="40"></td></tr>
<tr><td class="altbg1"><?=$lang['prune_search_keywords']?></td>
<td class="altbg2" align="right">
<input class="radio" type="radio" name="srchtype" value="title" checked> <?=$lang['prune_search_title']?> <input class="radio" type="radio" name="srchtype" value="fulltext"> <?=$lang['prune_search_fulltext']?>
<br><input type="text" name="srchtxt" size="40" maxlength="40"><br><?=$lang['pruce_rules']?></td></tr>
</table><br>
<center><input class="button" type="submit" name="prunesubmit" value="<?=$lang['submit']?>"></center>
</form>
<?
} else {
if(!$confirmed || !isset($pmids) || !preg_match("/[\d,]/", $pmids)) {
if($days == '') {
cpmsg('prune_pm_range_invalid');
} else {
$uids = 0;
$users = str_replace(',', '\',\'', str_replace(' ', '', $users));
$query = $db->query("SELECT uid FROM {$tablepre}members WHERE ".(empty($cins) ? 'BINARY' : '')." username IN ('$users')");
while($member = $db->fetch_array($query)) {
$uids .= ','.$member['uid'];
}
$prunedateadd = $days != 0 ? "AND dateline<='".($timestamp - $days * 86400)."'" : '';
$pruneuseradd = $users ? "AND ((msgfromid IN ($uids) AND folder='outbox') OR (msgtoid IN ($uids) AND folder='inbox'))" : '';
$prunenewadd = $ignorenew ? "AND new='0'" : '';
$prunetxtadd = '';
if($srchtxt) {
if(preg_match("(AND|\+|&|\s)", $srchtxt) && !preg_match("(OR|\|)", $srchtxt)) {
$andor = ' AND ';
$sqltxtsrch = '1';
$srchtxt = preg_replace("/( AND |&| )/is", "+", $srchtxt);
} else {
$andor = ' OR ';
$sqltxtsrch = '0';
$srchtxt = preg_replace("/( OR |\|)/is", "+", $srchtxt);
}
$srchtxt = str_replace('*', '%', addcslashes($srchtxt, '%_'));
foreach(explode('+', $srchtxt) as $text) {
$text = trim($text);
if($text) {
$sqltxtsrch .= $andor;
$sqltxtsrch .= $srchtype == 'fulltext' ? "(message LIKE '%".str_replace('_', '\_', $text)."%' OR subject LIKE '%$text%')" : "subject LIKE '%$text%'";
}
}
$prunetxtadd = " AND ($sqltxtsrch)";
}
$pmids = 0;
$query = $db->query("SELECT pmid FROM {$tablepre}pms WHERE 1 $prunedateadd $pruneuseradd $prunetxtadd $prunenewadd");
while($pm = $db->fetch_array($query)) {
$pmids .= ','.$pm['pmid'];
}
$pmnum = $db->num_rows($query);
cpmsg('prune_pm_confirm', "admincp.php?action=pmprune&prunesubmit=yes", 'form', '<input type="hidden" name="pmids" value="'.$pmids.'">');
}
} else {
$db->query("DELETE FROM {$tablepre}pms WHERE pmid IN ($pmids)");
$num = $db->affected_rows();
cpmsg('prune_pm_succeed');
}
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -