www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/include/farcedit.cls.php
<? class cls_farcedit{ //需要重新检查收费与免费信息的处理过程的区别 var $aid = 0; var $archive = array(); var $channel = array(); var $catalog = array(); var $basiced = 0; var $detailed = 0; var $auser = '';//作者 var $updatearr = array(); function __construct(){ $this->cls_farchive(); } function cls_farchive(){ } function init(){ $this->aid = 0; $this->archive = array(); $this->channel = array(); $this->catalog = array(); $this->basiced = 0; $this->detailed = 0; $this->auser = ''; $this->updatearr = array(); } function set_aid($aid){ $this->aid = max(0,intval($aid)); } function basic_data($auser=1){ global $db,$tblprefix,$fcatalogs,$fchannels; if(empty($this->aid) || $this->basiced) return; if(!$this->archive = $db->fetch_one("SELECT * FROM {$tblprefix}farchives WHERE aid='".$this->aid."'")){ $this->init(); return; } $this->aid = $this->archive['aid']; $this->channel = $fchannels[$this->archive['chid']]; $this->catalog = read_cache('fcatalog',$this->archive['caid']); if($auser){ $this->auser = new cls_userinfo; $this->auser->activeuser($this->archive['mid']); } $this->basiced = 1; } function detail_data($auser=1){ global $db,$tblprefix; if(empty($this->aid) || $this->detailed) return; $this->basic_data($auser); $customtable = 'farchives_'.$this->archive['chid']; if($archive = $db->fetch_one("SELECT * FROM {$tblprefix}$customtable WHERE aid='{$this->archive['aid']}'")){ $this->archive = array_merge($this->archive, $archive); } arr_tag2atm($this->archive,'f'); $this->detailed = 1; unset($archive); } function arc_check($checked=1,$updatedb=0){ //如何解决分类收费属性变更的问题?比如由限期项目变为无限期项目,原先的很多项目会终止 global $curuser,$timestamp; if(empty($this->aid)) return; $this->basic_data(); if($checked){ if($this->archive['checked']) return; $this->updatefield('checked',1,'main'); !$this->catalog['taxcrid'] && $this->updatefield('startdate',$timestamp,'main'); }else{ if(!$this->archive['checked']) return; $this->updatefield('checked',0,'main'); !$this->catalog['taxcrid'] && $this->updatefield('startdate',0,'main'); //如果排队信息,将余下的有效期转入排队天数中,以便下次审核后重新进入排队 ($this->catalog['maxactive'] && $orderdays = max(0,floor(($this->archive['enddate'] - $timestamp) / 86400))) && $this->updatefield('orderdays',$orderdays,'main'); } $this->updatefield('editor',$curuser->infos['mname'],'main'); $updatedb && $this->updatedb(); } function order_check($orderdays=0,$crid=0,$crvalue=0,$updatedb=0){//天数,积分类型,积分数 //$orderdays=0无限期 $orderdays<>0有可能是排队信息也可能是非排队信息 //如是无限期只需要将actived=1即可 //计入orderdays时不管是排队还是直接计入有效期,都要分析当前是否有旧记录 //顺便作激活的动作 global $timestamp,$curuser; if(empty($this->aid)) return false; if(empty($crid) || empty($crvalue)) return false; $this->basic_data(); if(empty($this->catalog['taxcrid']) || empty($this->archive['checked'])) return false; if(!$this->auser->crids_enough(array($crid => $crvalue))) return false; if(!$orderdays){ !$this->archive['startdate'] && $this->updatefield('startdate',$timestamp,'main'); $this->updatefield('enddate',0,'main'); }else{ if(empty($this->catalog['maxactive'])){//非排队信息 if(!$this->archive['startdate']){ $this->updatefield('startdate',$timestamp,'main'); $this->updatefield('enddate',$timestamp + $orderdays * 86400,'main'); }else{//可能是已失效信息,也可能是正生效信息,也可能原来是无限制信息 if(!$this->archive['enddate']) return false;//正生效的无限期信息 $this->updatefield('enddate',max($this->archive['enddate'],$timestamp) + $orderdays * 86400,'main'); } }else{//排队信息//可能已生效也可能未生效,未生效可能有历史排队记录 if($this->archive['startdate'] && $this->archive['enddate'] > $timestamp){//生效中 $this->updatefield('enddate',$this->archive['enddate'] + $orderdays * 86400,'main'); }else{ $this->updatefield('orderdays',$this->archive['orderdays'] + $orderdays,'main'); } } } $this->auser->updatecrids(array($crid => -$crvalue),1,lang('issue tax freeinfo')); $updatedb && $this->updatedb(); farc_active($this->archive['caid']); return true; } function arc_delete($isuser=0){//会员中心的删除 global $db,$tblprefix,$infohtmldir; if(empty($this->aid)) return; $this->basic_data(); if($isuser && $this->archive['checked']) return; $this->archive['arcurl'] && m_unlink(M_ROOT.$infohtmldir.'/'.$this->archive['arcurl']);//删除相应的静态文件 $db->query("DELETE FROM {$tblprefix}consults WHERE aid='".$this->aid."'");//删除咨询交互的内容 $db->query("DELETE FROM {$tblprefix}forders WHERE aid='".$this->aid."'", 'UNBUFFERED');//删除信息订单记录 $customtable = 'farchives_'.$this->archive['chid']; $db->query("DELETE FROM {$tblprefix}$customtable WHERE aid='".$this->aid."'", 'UNBUFFERED'); $db->query("DELETE FROM {$tblprefix}farchives WHERE aid='".$this->aid."'", 'UNBUFFERED'); $this->init(); } function updatefield($fieldname,$newvalue,$mode='main'){ if($mode == 'main' && !$this->basiced){ $this->basic_data(); }elseif($mode == 'custom' && !$this->detailed){ $this->detail_data(); } if($this->archive[$fieldname] != stripslashes($newvalue)){ $this->archive[$fieldname] = stripslashes($newvalue); $this->updatearr[$mode][$fieldname] = $newvalue; } } function updatedb(){ global $db,$tblprefix; if(empty($this->aid)) return; $this->basic_data(); $fields = read_cache('ffields',$this->archive['chid']); foreach($fields as $k => $v){ if($v['isfunc']){ $this->detail_data(); $v = read_cache('ffield',$this->archive['chid'],$k); $this->updatefield($k,field_func($this->archive,$v['func']),$v['tbl']); } } foreach(array('main','custom') as $upmode){ if(!empty($this->updatearr[$upmode])){ $sqlstr = ''; foreach($this->updatearr[$upmode] as $k => $v){ $sqlstr .= ($sqlstr ? "," : "").$k."='".$v."'"; } if(!empty($sqlstr)){ $tablename = $upmode == 'main' ? 'farchives' : 'farchives_'.$this->channel['chid']; $db->query("UPDATE {$tblprefix}$tablename SET $sqlstr WHERE aid={$this->aid}"); } } } $this->updatearr = array(); } } ?>