www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/adminm/questions.inc.php
<? !defined('M_COM') && exit('No Permission'); include_once M_ROOT."./include/arcedit.cls.php"; load_cache('channels,acatalogs,currencys,commus'); $catalogs = &$acatalogs; $nchannels = array(); $notaenabled = 0; foreach($channels as $k => $v){ if(@$commus[$v['cuid']]['cclass'] == 'answer'){ $nchannels[$k] = $v; $commu = read_cache('commu',$v['cuid']); if(!empty($commu['setting']['nota'])) $notaenabled = 1; } } empty($nchannels) && mcmessage(lang('nodefine answer channel')); $aid = empty($aid) ? 0 : max(0,intval($aid)); $page = !empty($page) ? max(1, intval($page)) : 1; submitcheck('bfilter') && $page = 1; if(!$aid){ m_guide(19); $viewdetail = empty($viewdetail) ? '' : $viewdetail; $checked = isset($checked) ? $checked : '-1'; $subject = empty($subject) ? '' : $subject; $indays = empty($indays) ? 0 : max(0,intval($indays)); $outdays = empty($outdays) ? 0 : max(0,intval($outdays)); $filterstr = ''; foreach(array('viewdetail','subject','checked','indays','outdays') as $k){ $filterstr .= "&$k=".urlencode($$k); } $wheresql = "WHERE a.chid IN (".mimplode(array_keys($nchannels)).") AND a.mid='".$curuser->infos['mid']."'"; if($subject) $wheresql .= " AND a.subject='$subject'"; if($checked != '-1') $wheresql .= " AND a.checked='$checked'"; if($indays) $wheresql .= " AND a.createdate>'".($timestamp - 86400 * $indays)."'"; if($outdays) $wheresql .= " AND a.createdate<'".($timestamp - 86400 * $outdays)."'"; if(!submitcheck('barcsedit')){ $checkedarr = array('-1' => lang('nolimit'),'0' => lang('nocheck question'),'1' => lang('checked question')); tabheader(lang('filter0 question').viewcheck('viewdetail',$viewdetail,'tbodyfilter').' '.strbutton('bfilter','filter0'),'arcsedit',"?action=questions&page=$page"); echo "<tbody id=\"tbodyfilter\" style=\"display: ".(empty($viewdetail) ? 'none' : '')."\">"; trbasic(lang('weather checked'),'',makeradio('checked',$checkedarr,$checked),''); trbasic(lang('question title'),'subject',$subject); trrange(lang('add date'),array('outdays',empty($outdays) ? '' : $outdays,'',' '.lang('day before').' - ',5),array('indays',empty($indays) ? '' : $indays,'',' '.lang('day in'),5)); 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 DESC LIMIT ".(($pagetmp - 1) * $mrowpp).",$mrowpp"); $pagetmp--; } while(!$db->num_rows($query) && $pagetmp); $itemstr = ''; while($item = $db->fetch_array($query)){ $commu = read_cache('commu',$channels[$item['chid']]['cuid']); $item['createdate'] = date("$dateformat", $item['createdate']); $item['arcurl'] = view_arcurl($item); $checkedstr = $item['checked'] ? 'Y' : '-'; $closedstr = $item['closed'] ? 'Y' : '-'; $overdatestr = empty($commu['setting']['nota']) ? ($item['finishdate'] < $timestamp ? 'Y' : '-') : ($item['appealdate'] < $timestamp ? 'Y' : '-'); $notaclosedstr = $item['notaclosed'] ? 'Y' : '-'; $itemstr .= "<tr><td align=\"center\" class=\"item1\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"selectid['$item[aid]']\" value=\"$item[aid]\"></td>\n". "<td class=\"item2\"><a href=$item[arcurl] target=\"_blank\">".mhtmlspecialchars($item['subject'])."</a></td>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$checkedstr</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\">$item[currency]</td>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$item[spare]</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\">$closedstr</td>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$overdatestr</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\">$item[appeals]</td>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$notaclosedstr</td>\n". "<td align=\"center\" class=\"item2\" width=\"60\">$item[createdate]</td>\n". "<td align=\"center\" class=\"item1\" width=\"30\"><a href=\"?action=questions&mcenter=1&aid=$item[aid]\">".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,$mrowpp,$page,"?action=questions$filterstr"); tabheader(lang('question list')." <input class=\"checkbox\" type=\"checkbox\" name=\"select_all\" value=\"1\"> ".lang('selectallpage'),'','',11); trcategory(array("<input class=\"checkbox\" type=\"checkbox\" name=\"chkall\" class=\"category\" onclick=\"checkall(this.form, 'selectid', 'chkall')\">",lang('title'),lang('check'),lang('reward'),lang('spare'),lang('close'),lang('overdate'),lang('appeal'),lang('checkout'),lang('add time'),lang('answer0'))); echo $itemstr; tabfooter(); echo $multi; echo "<input class=\"button\" type=\"submit\" name=\"barcsedit\" value=\"".lang('checkout')."\"".(empty($notaenabled) ? ' disabled' : '')."></form>"; }else{ if(empty($notaenabled)) mcmessage(lang('answer nota function nohave enable'),"?action=questions&page=$page$filterstr"); if(empty($selectid) && empty($select_all)) mcmessage(lang('confirmselect archive'),"?action=questions&page=$page$filterstr"); if(!empty($select_all)){ $selectid = array(); $npage = empty($npage) ? 1 : $npage; if(empty($pages)){ $counts = $db->result_one("SELECT count(*) FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid $wheresql"); $pages = @ceil($counts / $mrowpp); } if($npage <= $pages){ $fromstr = empty($fromid) ? "" : "aid<$fromid"; $nwheresql = !$wheresql ? ($fromstr ? "WHERE $fromstr" : "") : ($wheresql.($fromstr ? " AND " : "").$fromstr); $query = $db->query("SELECT a.*,s.* FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid $nwheresql ORDER BY a.aid DESC LIMIT 0,$mrowpp"); } }else{ $query = $db->query("SELECT a.*,s.* FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid WHERE a.aid IN (".mimplode($selectid).") ORDER BY a.aid DESC"); } $auser = new cls_userinfo; $aids = array(); while($item = $db->fetch_array($query)){ $commu = read_cache('commu',$channels[$item['chid']]['cuid']); if(!empty($commu['setting']['nota']) && $item['checked'] && !$item['appeals'] && $item['appealdate'] < $timestamp){ $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(); } if(!empty($commu['setting']['credit'])){ $curuser->sub_data(); $curuser->updatefield('credits',$auser->infos['credits'] + ($item['currency'] - $item['spare']) * $commu['setting']['credit'],'sub'); } $curuser->updatecrids(array($item['crid'] => $item['spare']),1,lang('answer reward')); $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(array_keys($items)); $transtr = ''; $transtr .= "&select_all=1"; $transtr .= "&pages=$pages"; $transtr .= "&npage=$npage"; $transtr .= "&barcsedit=1"; $transtr .= "&fromid=$fromid"; mcmessage(lang('operating')."<br> ".lang('all')." $pages ".lang('page0').",".lang('dealing')." $npage ".lang('page0')."<br><br> <a href=\"?action=questions&page=$page$filterstr\">>>".lang('pause')."</a>", "?action=questions&page=$page$filterstr$transtr", 500); } } mcmessage(lang('question nota succeed'),"?action=questions&page=$page$filterstr"); } }else{ //这个功能支持管理员在会员中心对他人的问题进行管理 $forward = empty($mcenter) ? '' : (empty($forward) ? M_REFERER : $forward); $aedit = new cls_arcedit(); $aedit->set_aid($aid); $aedit->basic_data(); $commu = read_cache('commu',$channels[$aedit->archive['chid']]['cuid']); (!$aedit->aid || !$aedit->archive['checked'] || !in_array($aedit->archive['chid'],array_keys($nchannels))) && mcmessage(lang('confirmchoose archive'),$forward); ($aedit->archive['mid'] != $memberid || !$curuser->isadmin()) && mcmessage(lang('no this question admin permission'),$forward); ($aedit->archive['notaclosed'] || (empty($commu['setting']['nota']) && ($aedit->archive['closed'] || $aedit->archive['finishdate'] < $timestamp))) && mcmessage(lang('question over admin range'),$forward); $allow_notaclosed = $aedit->archive['appealdate'] > $timestamp ? 0 : (!$curuser->isadmin() && $aedit->archive['appeals'] ? 0 : 1); if(!submitcheck('barcsedit')){ tabheader(lang('question based message'),'arcsedit',"adminm.php?action=questions&aid=$aid&forward=".urlencode($forward)); trbasic(lang('question title'),'',$aedit->archive['subject'],''); trbasic(lang('reward / spare / appeal'),'',$aedit->archive['currency'].' / '.$aedit->archive['spare'].' / '.$aedit->archive['appeals'],''); trbasic(lang('add date'),'',date("$dateformat $timeformat", $aedit->archive['createdate']),''); trbasic(lang('enddate'),'',date("$dateformat $timeformat", $aedit->archive['finishdate']),''); $aedit->archive['closed'] ? trbasic(lang('weather close'),'','Y','') : trbasic(lang('weather close'),'archivenew[closed]',$aedit->archive['closed'],'radio'); if(!empty($commu['setting']['nota'])){ trbasic(lang('appeal enddate'),'',date("$dateformat $timeformat", $aedit->archive['appealdate']),''); !$allow_notaclosed ? trbasic(lang('nota checkout'),'','N','') : 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) * $mrowpp).",$mrowpp"); $pagetmp--; } while(!$db->num_rows($query) && $pagetmp); $itemstr = ''; while($item = $db->fetch_array($query)){ $item['answer'] = cutstr(br2nl($item['answer']),50); $item['createdate'] = date("$dateformat", $item['createdate']); $checkedstr = $item['checked'] ? 'Y' : '-'; $endstr = $item['end'] ? 'Y' : '-'; $appealstr = $item['appeal'] ? 'Y' : '-'; $itemstr .= "<tr><td align=\"center\" class=\"item1\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"itemsnew[$item[cid]][checked]\" value=\"1\"".(empty($item['checked']) ? '' : ' checked')."></td>\n". "<td align=\"center\" class=\"item2\" width=\"60\"><input type=\"text\" name=\"itemsnew[$item[cid]][currency]\" value=\"$item[currency]\" size=\"4\"></td>\n". "<td class=\"item1\">$item[answer]</td>\n". "<td align=\"center\" class=\"item2\" width=\"80\">$item[mname]</td>\n". "<td align=\"center\" class=\"item1\" width=\"60\">$item[createdate]</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\">$endstr</td>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$appealstr</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\">$item[votes]</td></tr>\n"; } $counts = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}answers WHERE aid=$aid"); $multi = multi($counts,$mrowpp,$page,"?action=questions&aid=$aid&forward=".urlencode($forward)); tabheader(lang('answer0 list'),'','',10); trcategory(array(lang('adopt'),lang('award'),lang('answer0 content'),lang('member'),lang('answer time'),lang('accountin'),lang('appeal'),lang('support'))); echo $itemstr; tabfooter(); echo $multi; echo "<input class=\"button\" type=\"submit\" name=\"barcsedit\" 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['closed'])){//公证与非公证的处理方式不同 if(empty($commu['setting']['nota'])){//该问题的积分全部转账,提问者不能取回积分,不需要处理信用值 $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(); } } unset($auser); $sql_an .= ($sql_an ? ',' : '')."end=1"; } $sql_arc .= ($sql_arc ? ',' : '')."closed=1"; } if(!empty($archivenew['notaclosed']) && $allow_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']); if(!empty($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"); mcmessage(lang('question admin succeed'),$forward ? $forward : M_REFERER); } } ?>