www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/awnotas.inc.php
<? (!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission'); aheader(); !checkapermission($sid ? 138 : 74) && amessage(lang('no_apermission')); include_once M_ROOT."./include/arcedit.cls.php"; load_cache('channels,commus'); load_cache('catalogs',$sid); $chids = array(); foreach($channels as $chid => $channel){ if(@$commus[$channel['cuid']]['cclass'] == 'answer'){ $chids[] = $chid; $commu = read_cache('commu',$channel['cuid']); if(!empty($commu['setting']['nota'])) $notaenabled = 1; } } empty($chids) && amessage(lang('nodefine answer channel')); empty($notaenabled) && amessage(lang('nota function close')); $page = !empty($page) ? max(1, intval($page)) : 1; submitcheck('bfilter') && $page = 1; if($action == 'awnotasedit'){ $viewdetail = empty($viewdetail) ? '' : $viewdetail; $closed = isset($closed) ? $closed : '-1'; $appealed = isset($appealed) ? $appealed : '-1'; $spared = isset($spared) ? $spared : '-1'; $subject = empty($subject) ? '' : $subject; $mname = empty($mname) ? '' : $mname; $filterstr = ''; foreach(array('viewdetail','appealed','spared','subject','mname') as $k){ $filterstr .= "&$k=".rawurlencode($$k); } $wheresql = "WHERE a.sid=$sid AND a.checked=1 AND a.chid IN (".mimplode($chids).") AND s.notaclosed=0 AND s.appealdate<$timestamp"; $appealed != '-1' && $wheresql .= " AND s.appeals".($appealed ? '>' : '=')."'0'"; $spared != '-1' && $wheresql .= " AND s.spare".($spared ? '>' : '=')."'0'"; $subject && $wheresql .= " AND a.subject LIKE '%".str_replace(array(' ','*'),'%',addcslashes($subject,'%_'))."%'"; $mname && $wheresql .= " AND a.mname LIKE '%".str_replace(array(' ','*'),'%',addcslashes($mname,'%_'))."%'"; if(!submitcheck('barcsedit')){ $appealedarr = array('-1' => lang('nolimit'),'0' => lang('noappeal'),'1' => lang('appealed')); $sparedarr = array('-1' => lang('nolimit'),'0' => lang('nospare'),'1' => lang('spared')); tabheader(lang('filter0 nota item')." <input class=\"checkbox\" type=\"checkbox\" name=\"viewdetail\" value=\"1\" onclick=\"alterview('tbodyfilter')\"".(empty($viewdetail) ? '' : ' checked').">".lang('viewdetail') ." <input class=\"button\" type=\"submit\" name=\"bfilter\" value=\"".lang('filter0')."\">",'arcsedit',"?entry=awnotas&action=awnotasedit$param_suffix&page=$page"); echo "<tbody id=\"tbodyfilter\" style=\"display: ".(empty($viewdetail) ? 'none' : '')."\">"; trbasic(lang('weather appealed'),'appealed',makeoption($appealedarr,$appealed),'select'); trbasic(lang('weather spared'),'spared',makeoption($sparedarr,$spared),'select'); trbasic(lang('search archive title'),'subject',$subject,'text',lang('agsearchkey')); trbasic(lang('search author'),'mname',$mname,'text',lang('agsearchkey')); echo "</tbody>"; tabfooter(); $pagetmp = $page; do{ $query = $db->query("SELECT a.*,s.* FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid $wheresql ORDER BY a.aid ASC LIMIT ".(($pagetmp - 1) * $atpp).",$atpp"); $pagetmp--; } while(!$db->num_rows($query) && $pagetmp); $itemstr = ''; while($item = $db->fetch_array($query)){ $aid = $item['aid']; $arcurl = view_arcurl($item); $itemstr .= "<tr><td align=\"center\" class=\"item1\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"selectid[$aid]\" value=\"$aid\">\n". "<td class=\"item2\"><a href=$arcurl target=\"_blank\">$item[subject]</a></td>\n". "<td align=\"center\" class=\"item1\">$item[mname]</td>\n". "<td align=\"center\" class=\"item2\">$item[currency]</td>\n". "<td align=\"center\" class=\"item1\" width=\"60\">$item[spare]</td>\n". "<td align=\"center\" class=\"item2\" width=\"40\">$item[appeals]</td>\n". "<td align=\"center\" class=\"item1\" width=\"40\">$item[answers]</td>\n". "<td align=\"center\" class=\"item2\" width=\"60\">$item[adopts]</td>\n". "<td align=\"center\" class=\"item1\" width=\"40\"><a href=\"?entry=awnotas&action=awnotadetail&aid=$aid$param_suffix\">".lang('admin')."</a></td></tr>\n"; } $counts = $db->result_one("SELECT count(*) FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid $wheresql"); $multi = multi($counts, $atpp, $page, "?entry=awnotas&action=awnotasedit$filterstr"); tabheader(lang('nota item list')." <input class=\"checkbox\" type=\"checkbox\" name=\"select_all\" value=\"1\"> ".lang('selectallpage'),'','',9); trcategory(array("<input class=\"checkbox\" type=\"checkbox\" name=\"chkall\" onclick=\"checkall(this.form, 'selectid', 'chkall')\">",lang('title'),lang('member'),lang('reward currency'),lang('spare'),lang('appeal'),lang('answer0'),lang('adopt'),lang('admin'))); echo $itemstr; tabfooter(); echo $multi; echo "<input class=\"button\" type=\"submit\" name=\"barcsedit\" value=\"".lang('nota checkout')."\">"; }else{ if(empty($selectid) && empty($select_all)){ amessage(lang('confirmselect nota item'),M_REFERER); } if(!empty($select_all)){ $selectid = array(); $npage = empty($npage) ? 1 : $npage; if(empty($pages)){ $counts = $db->result_one("SELECT count(*) FROM {$tblprefix}awnotas $wheresql"); $pages = @ceil($counts / $atpp); } if($npage <= $pages){ $fromstr = empty($fromid) ? "" : "aid<$fromid"; $nwheresql = !$wheresql ? ($fromstr ? "WHERE $fromstr" : "") : ($wheresql.($fromstr ? " AND " : "").$fromstr); $query = $db->query("SELECT aid FROM {$tblprefix}archive $nwheresql ORDER BY aid ASC LIMIT 0,$atpp"); while($item = $db->fetch_array($query)){ $selectid[] = $item['aid']; } } } $auser = new cls_userinfo; $aids = array(); $query = $db->query("SELECT * FROM {$tblprefix}archives WHERE aid IN (".mimplode($selectid).")"); while($row = $db->fetch_array($query)){ $commu = read_cache('commu',$channels[$row['chid']]['cuid']); if(!empty($commu['setting']['nota'])){ $aid = $row['aid']; $query1 = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid='$aid' AND currency>0"); while($row1 = $db->fetch_array($query1)){ $auser->activeuser($row1['mid']); $auser->updatecrids(array($row1['crid'] => $row1['currency']),1,lang('answer reward')); $auser->init(); } $auser->activeuser($row['mid']); if(!empty($commu['setting']['credit'])){ $auser->sub_data(); $auser->updatefield('credits',$auser->infos['credits'] + ($row['currency'] - $row['spare']) * $commu['setting']['credit'],'sub'); } $auser->updatecrids(array($row['crid'] => $row['spare']),1,lang('answer reward')); $auser->init(); $aids[] = $aid; } } unset($auser,$row,$row1,$commu); if(!empty($aids)){ $db->query("DELETE FROM {$tblprefix}notaanswer WHERE aid IN (".mimplode($aids).")",'SILENT'); $db->query("UPDATE {$tblprefix}answers SET end=1,appeal=0 WHERE aid IN (".mimplode($aids).")",'SILENT'); $db->query("UPDATE {$tblprefix}archives_sub SET spare=0,appeals=0,notaclosed=1 WHERE aid IN (".mimplode($aids).")",'SILENT'); } if(!empty($select_all)){ $npage ++; if($npage <= $pages){ $fromid = min($selectid); $transtr = ''; $transtr .= "&select_all=1"; $transtr .= "&pages=$pages"; $transtr .= "&npage=$npage"; $transtr .= "&barcsedit=1"; $transtr .= "&fromid=$fromid"; amessage(lang('operating')."<br> ".lang('all')." $pages ".lang('page0').",".lang('dealing')." $npage ".lang('page0')."<br><br> <a href=\"?entry=awnotas&action=awnotasedit$param_suffix&page=$page$filterstr\">>>".lang('pause')."</a>", "?entry=awnotas&action=awnotasedit$param_suffix&page=$page$filterstr$transtr", 500); } } adminlog(lang('awnotas admin'),lang('awnotas list admin operate')); amessage(lang('awnotas operate finish'),"?entry=awnotas&action=awnotasedit$param_suffix&page=$page$filterstr"); } } elseif($action == 'awnotadetail' && $aid){ empty($aid) && amessage(lang('confirmchoose nota item'),'history.go(-1)'); $forward = empty($forward) ? M_REFERER : $forward; $aedit = new cls_arcedit; $aedit->set_aid($aid); $aedit->basic_data(); empty($aid) && amessage(lang('confirmchoose nota item'),'history.go(-1)'); if(!submitcheck('bawnotadetail')){ a_guide('awnotadetail'); tabheader(lang('nota item based message'),'answerslist',"?entry=awnotas&action=awnotadetail&aid=$aid$param_suffix&forward=".urlencode($forward)); $sourcestr = "<a href=\"".view_arcurl($aedit->archive)."\" target=\"blank\">>>".lang('source')."</a>"; $recordstr = "<a href=\"?entry=awnotas&action=notarecord&aid=$aid$param_suffix\">>>".lang('alter record')."</a>"; trbasic(lang('question title ( state )'),'',$aedit->archive['subject'].' ('.(empty($aedit->archive['closed']) ? lang('noclose') : lang('closed')).')',''); trbasic(lang('question detail0 content'),'',$sourcestr." ".$recordstr,''); trbasic(lang('reward / spare / appeal'),'',$aedit->archive['currency'].' / '.$aedit->archive['spare'].' / '.$aedit->archive['appeals'],''); trbasic(lang('question add date'),'',date("$dateformat $timeformat", $aedit->archive['createdate']),''); trbasic(lang('answer enddate'),'',date("$dateformat $timeformat", $aedit->archive['finishdate']),''); trbasic(lang('appeal enddate'),'',date("$dateformat $timeformat", $aedit->archive['appealdate']),''); trbasic(lang('nota checkout'),'archivenew[notaclosed]',$aedit->archive['notaclosed'],'radio'); tabfooter(); $pagetmp = $page; do{ $query = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid=$aid ORDER BY cid DESC LIMIT ".(($pagetmp - 1) * $atpp).",$atpp"); $pagetmp--; } while(!$db->num_rows($query) && $pagetmp); $itemstr = ''; while($item = $db->fetch_array($query)){ $cid = $item['cid']; $item['answer'] = cutstr(br2nl($item['answer']),50); $arcurl = view_arcurl($aedit->archive); $createdate = date("$dateformat", $item['createdate']); $itemstr .= "<tr>\n". "<td class=\"item1\" width=\"30\" align=\"center\"><input class=\"checkbox\" type=\"checkbox\" name=\"itemsnew[$cid][checked]\" value=\"1\"".(empty($item['checked']) ? '' : ' checked')."></td>\n". "<td class=\"item2\" width=\"60\" align=\"center\"><input type=\"text\" size=\"4\" name=\"itemsnew[$cid][currency]\" value=\"$item[currency]\"></td>\n". "<td class=\"item1\" width=\"30\" align=\"center\"><input class=\"checkbox\" type=\"checkbox\" name=\"itemsnew[$cid][appeal]\" value=\"1\"".(empty($item['appeal']) ? '' : ' checked')."></td>\n". "<td class=\"item2\">$item[answer]</td>\n". "<td class=\"item1\" width=\"60\" align=\"center\"><a href=\"?entry=awnotas&action=notarecord&aid=$aid&cid=$cid$param_suffix\">".lang('look')."</a></td>\n". "<td class=\"item2\" width=\"80\" align=\"center\">$item[mname]</td>\n". "<td class=\"item1\" width=\"30\" align=\"center\">$item[votes]</td>\n". "<td class=\"item2\" width=\"60\" align=\"center\">$createdate</td></tr>\n"; } $itemcount = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}answers WHERE aid=$aid"); $multi = multi($itemcount,$atpp,$page,"?entry=awnotas&action=awnotadetail&aid=$aid&forward=".urlencode($forward)); tabheader(lang('answer0 nota manager'),'','','9'); trcategory(array(lang('adopt'),lang('award'),lang('appeal'),lang('answer0'),lang('alter record'),lang('member'),lang('support'),lang('add date'))); echo $itemstr; tabfooter(); echo $multi; echo "<input class=\"button\" type=\"submit\" name=\"bawnotadetail\" value=\"".lang('submit')."\"></form>"; }else{ $sql_arc = $sql_arcs = $sql_an = ''; $adoptsnew = $aedit->archive['adopts']; $sparenew = $aedit->archive['spare']; if(!empty($itemsnew)){ $query = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid=$aid AND cid IN (".mimplode(array_keys($itemsnew)).")"); while($item = $db->fetch_array($query)){ $items[$item['cid']] = $item; $sparenew += $item['currency'];//将会重新分配积分 } foreach($itemsnew as $cid => $itemnew){ $sql_asw = ''; $itemnew['checked'] = empty($itemnew['checked']) ? 0 : 1; if($itemnew['checked'] != $items[$cid]['checked']){ $sql_asw .= "checked=".$itemnew['checked']; $adoptsnew += $itemnew['checked'] - $items[$cid]['checked']; } $itemnew['currency'] = max(0,intval($itemnew['currency'])); if(min($itemnew['currency'],$sparenew) != $items[$cid]['currency']){ $sql_asw .= ($sql_asw ? ',' : '')."currency=".min($itemnew['currency'],$sparenew); } $sql_asw && $db->query("UPDATE {$tblprefix}answers SET $sql_asw WHERE aid=$aid AND cid=$cid"); $sparenew = max(0,$sparenew - $itemnew['currency']); } $sql_arc .= ($sql_arc ? ',' : '')."adopts=$adoptsnew"; } if(!empty($archivenew['notaclosed'])){ $auser = new cls_userinfo; $query = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid=$aid"); while($item = $db->fetch_array($query)){ if($item['currency']){ $auser->activeuser($item['mid']); $auser->updatecrids(array($item['crid'] => $item['currency']),1,lang('answer reward')); $auser->init(); } } $auser->activeuser($aedit->archive['mid']); $commu = read_cache('commu',$channels[$aedit->archive['chid']]['cuid']); if($commu['setting']['credit']){ $auser->sub_data(); $auser->updatefield('credits',$auser->infos['credits'] + ($aedit->archive['currency'] - $sparenew) * $commu['setting']['credit'],'sub'); } $auser->updatecrids(array($aedit->archive['crid'] => $sparenew),1,lang('answer reward')); unset($auser); $sql_an .= ($sql_an ? ',' : '')."end=1"; $sql_arcs .= ($sql_arcs ? ',' : '')."notaclosed=1"; $sparenew = 0; $db->query("DELETE FROM {$tblprefix}notaanswer WHERE aid=$aid"); } //更新数据库 if($sparenew != $aedit->archive['spare']) $sql_arcs .= ($sql_arcs ? ',' : '')."spare=$sparenew"; $sql_arc && $db->query("UPDATE {$tblprefix}archives SET $sql_arc WHERE aid=$aid"); $sql_arcs && $db->query("UPDATE {$tblprefix}archives_sub SET $sql_arcs WHERE aid=$aid"); $sql_an && $db->query("UPDATE {$tblprefix}answers SET $sql_an WHERE aid=$aid"); amessage(lang('question admin succeed'),$forward); } } elseif($action == 'notarecord' && $aid){ $cid = empty($cid) ? 0 : max(0,intval($cid)); tabheader(empty($cid) ? lang('question alter record') : lang('answer0 alter record')); trcategory(array(lang('modify date'),lang('content'))); $query = $db->query("SELECT * FROM {$tblprefix}notaanswer WHERE aid=$aid AND cid=$cid ORDER BY createdate"); while($item = $db->fetch_array($query)){ trbasic(date("$dateformat $timeformat", $item['createdate']),'',$item['content'],''); } tabfooter(); echo "<input class=\"button\" type=\"submit\" name=\"\" value=\"".lang('goback')."\" onclick=\"history.go(-1);\">"; } ?>