<?php
namespace imcat;
(!
defined('RUN_INIT')) && die('No Init');

// dopCheck(data OP for Extra)
class dopCheck extends dopBase{    

    public 
$excfg = array();
    public 
$user NULL;
    public 
$uname '';
    public 
$ugrade '';

    
// login=1(登录发布)
    // login=cvip,ccom(会员cvip,ccom等级:登录发布)
    
static function dchkLogin($ngrades=0){ 
        if(
usrPerm::issup()) return; //超管
        
$user usrBase::userObj(); 
        
$ugrade = empty($user->uperm['grade']) ? '(null)' $user->uperm['grade'];
        if(!
is_numeric($ngrades)){
            if(
strpos("(,$ngrades,)",",{$ugrade},")<=0){
                die(
basLang::show('flow.ck_grade',$ngrades));
            }
        }else{ 
            
// stop
            
if(strpos($ugrade,'stop')>0){
                die(
basLang::show('flow.ck_stop',$ugrade));
            }
            if(
$user->userFlag!='Login'){
                die(
basLang::show('flow.ck_login'));
            }
        }
    }

    
// iprep=3(ip重复发布时间间隔)
    
static function dchkIprep($num,$mod,$kid,$opfid=''){ 
        
$ckey "{$mod}_$kid";
        
$stamp $_SERVER["REQUEST_TIME"];
        
$glife intval($num)*60;
        
$ck comCookie::mget('diggs',$ckey); // cookie;
        //echo "($ck)";
        
if(empty($ck) || ($stamp-intval($ck))>$glife){
            
comCookie::mset('diggs',$glife,$ckey,$stamp,20);
        }else{
            die(
basLang::show('flow.ck_rep',$glife));
        }
    }

    static function 
addInit($cfg=array(),$percheck=array()){ 
        
$chk = new self($cfg);
        if(empty(
$chk->excfg)) return;
        foreach (
$chk->excfg as $key => $val) {
            if(empty(
$val)) continue;
            
$method 'chk'.ucfirst(strtolower($key));
            if(
substr($key,0,3)=='ap_'){
                
$ngrade substr($key,2);
                if(
$chk->ugrade==$ngrade){
                    
$chk->chkAllpub($val);
                    unset(
$chk->excfg['allpub']);
                }
            }elseif(
method_exists($chk,$method)){
                
$chk->$method($val);
            }
        }
    }

    function 
__construct($cfg=array()){ 
        
parent::__construct($cfg);
        
$this->excfg basElm::text2arr($this->cfg['cfgs']);
        
$this->user usrBase::userObj('Member'); 
        
$this->uname = empty($user->uinfo['uname']) ? '(null)' $user->uinfo['uname'];
        
$this->ugrade = empty($user->uperm['grade']) ? '(null)' $user->uperm['grade'];
        
$this->tabid glbDBExt::getTable($this->cfg['kid']); 
    }

    
// showdef=1

    // login=1(登录发布)
    // login=cvip,ccom(会员cvip,ccom等级:登录发布)
    
function chkLogin($ngrades=0){ 
        
$clogin 1
        if(!
is_numeric($ngrades)){
            if(
strpos("(,$ngrades,)",",{$this->ugrade},")<=0){
                
glbHtml::end(basLang::show('flow.ck_grade',$ngrades));
            }
        }else{ 
            
// stop
            
if(strpos($this->ugrade,'stop')>0){
                
glbHtml::end(basLang::show('flow.ck_stop',$this->ugrade));
            }
            if(
$this->user->userFlag!='Login'){
                
glbHtml::end(basLang::show('flow.ck_login'));
            }
        }
    }
    
    
// ap_ccom=500(会员ccom等级:发布总量) -> (500,'ccom')
    // allpub=100(会员发布总量)
    // skip_allpub=cvip,ovip(cvip,ovip不检测)
    
function chkAllpub($num=0){ 
        if(!empty(
$this->excfg['skip_allpub'])){
            if(
strpos("(,{$this->excfg['skip_allpub']},)",",{$this->ugrade},")>0){
                return;
            }
        }
        
$cnt $this->db->table($this->tabid)->where("auser='{$this->uname}'")->count();
        if(
$cnt>=$num){
            
glbHtml::end(basLang::show('flow.ck_all',$num));
        }
    }

    
// ippub=5(ip日发布量)
    // skip_ippub=cvip,ovip(cvip,ovip不检测)
    
function chkIppub($num=0){ 
        if(!empty(
$this->excfg['skip_ippub'])){
            if(
strpos("(,{$this->excfg['skip_ippub']},)",",{$this->ugrade},")>0){
                return;
            }
        }
        
$cnt $this->db->table($this->tabid)->where("aip='".basEnv::userIP()."' AND atime>='".($_SERVER["REQUEST_TIME"]-86400)."'")->count();
        if(
$cnt>=$num){
            
glbHtml::end(basLang::show('flow.ck_day',$num));
        }
    }

    
// iprep=3(ip重复发布时间间隔)
    // skip_iprep=cvip,ovip(cvip,ovip不检测)
    
function chkIprep($num=0){ 
        if(!empty(
$this->excfg['skip_iprep'])){
            if(
strpos("(,{$this->excfg['skip_iprep']},)",",{$this->ugrade},")>0){
                return;
            }
        }
        
$cnt $this->db->table($this->tabid)->where("aip='".basEnv::userIP()."' AND atime>='".($_SERVER["REQUEST_TIME"]-$num)."'")->count();
        if(
$cnt>0){
            
glbHtml::end(basLang::show('flow.ck_rep',$num));
        }
    }

    static function 
headComm(){
        global 
$_cbase
        
glbHtml::page($_cbase['sys_name'],1);
        echo 
basJscss::imp('initJs','jquery,bootstrap,layer,jspop;comm;comm(-lang)');
        echo 
basJscss::imp('initCss','jspop,bootstrap,stpub,jstyle;comm'); 
        echo 
basJscss::imp('loadExtjs','jq_base,bootstrap,layer');
        
glbHtml::page('body',' style="padding:8px 5px 5px 5px;overflow-y:scroll;overflow-x:hidden;"'); 
    }

}

/*
showdef=1
login=1
ap_ccom=500  ap_xxx在allpub前面
allpub=100   skip_allpub=cvip,ovip
ippub=5      skip_ippub
iprep=3      skip_iprep
*/