<?php
namespace imcat;

// Hook类
 
class comHook extends comCron{
    
    public 
$frun '/store/_rlock_hook.txt';
    private 
$tpl ''
    private 
$mkv ''
    
    
// [hook_key]($mkv,$tpl), 
    
static function listen($act='',$paras=array()){
        if(
is_string($paras)){ // [hook_key]($mkv,$tpl)
            
new self($act,$paras);
        }elseif(
strpos($act,'::')>0){ // call('exuUser::reg',$user)
            
$tmp explode('::',$act);
            
$cls $tmp[0]; $method $tmp[0];
            
$hook = new $cls($paras);
            
$re $hook->$method();
        }else{ 
// [user_act]('reg',$user)
            
$row['kid'] = "hook_$act";
            
$re self::rone($row,$paras);
        }
    }

    
//function __destory(){  } mkv+tpl url+file
    
function __construct($mkv,$tpl,$upd=1){
        if(empty(
$mkv)||empty($tpl)) return;
        if(
strpos('.',$mkv)){
            
$tmp explode('.',$mkv);
            
$tmp[1] = 'detail';
            
$mkv implode('.',$tmp);
        }
        
$this->init($mkv,$tpl);
        
$this->rlist();
        
$upd && $this->update();
    }
    
    
// init 
    
function init($mkv='',$tpl=''){
        
$this->db glbDBObj::dbObj();
        
$this->stamp $_SERVER["REQUEST_TIME"]; 
        if(!
extCache::cfGet($this->frun,$this->rgap)){
            
$whr " exnext<'".$this->stamp."' AND enable=1 AND hkflag=1";
            
$whr .= $mkv " AND (hkmkv='0' OR hkmkv='$mkv')" " AND hkmkv='0'";
            
$whr .= $tpl " AND (hktpl='0' OR hktpl='$tpl')" " AND hktpl='0'";
            
$this->jobs $this->db->table($this->tab)->where($whr)->select();
        } 
    }
    
    
// 运行列表
    
function rlist(){
        if(!empty(
$this->jobs)){
            foreach(
$this->jobs as $row){
                
$rdo $this->rone($row);
                
$next $this->stamp extCache::CTime($row['excycle'].$row['excunit']);
                
$this->jres[$row['kid']] = array(
                    
'rdo' => $rdo
                    
'next' => $next,
                );
            }
        }
    }

}

/*

*/