<?php
namespace imcat;

// extSeo类
 
class extSeo{

    function 
bdLinks($data=''){
        
https://www.baidu.com/s?wd=site%3Atxjia.com&pn=10
    
}

    public 
$db NULL;
    public 
$tabid 'bext_paras';
    
    
//function __destory(){  }
    
function __construct(){ 
        
$this->db glbDBObj::dbObj();
        
//$this->bpushCfg();
    
}
    
    
// 
    
function createSmap($job=''){
        
$jcfg $this->db->table($this->tabid)->where("kid='$job'")->find(); 
        
$tfcfg = array(
            
'daily'=>'Y-m-d','monthly'=>'Y-m','yearly'=>'Y',
            
'always'=>'Y-m-d H:i:s','weekly'=>'Y-m-d',
        ); 
        
$a basElm::line2arr($jcfg['note'],0,';'); $fdata ''
        foreach(
$a as $tmp){
            if(empty(
$tmp)) continue;
            
$b explode(',',$tmp); //cargo,100,comm,monthly,0.7
            
if(empty($exd)){
                
$exd = new exdBase($b[0]);
            }else{
                
$exd->minit($b[0]);    
            }
            
$cfg = array('limit'=>$b[1],'order'=>$exd->mkid.':DESC'); //stype,limit(1-500),order(did:ASC),offset
            
$data $exd->odata($cfg,0,''); 
            foreach(
$data as $row){
                
$url vopUrl::fout("{$b[2]}:{$b[0]}.{$row[$exd->mkid]}",0,1); 
                
$title = empty($row['title']) ? (empty($row['company']) ? @$row['mname'] : $row['company']) : $row['title'];
                
$istr $jcfg['cfgs']."\n";
                
$istr str_replace(array("(url)","(title)"),array($url,$title),$istr);
                
$tfmt = @$tfcfg[$b[3]]; $stamp = empty($row['etime']) ? @$row['atime'] : $row['etime'];
                
$time $stamp date($tfmt,$stamp) : date('Y-m-d');
                
$istr str_replace(array("(freq)","(time)","(priority)"),array(@$b[3],$time,@$b[4]),$istr);
                
$fdata .= $istr;
            }
        }
        
$fdata && $jcfg['detail'] && $fdata str_replace(array("(*)"),array($fdata),$jcfg['detail']);
        @
mkdir(DIR_HTML."/map"0777true);
        
$file DIR_HTML."/map/$job"
        
$res $fdata comFiles::put($file,$fdata) : 0;
        return 
$res;
    }    
    
    
// 
    
function bpushCfg(){
        if(!empty(
$this->pcfg)) return $this->pcfg;
        
$list $this->db->table($this->tabid)->where("pid='seo_push'")->order('top')->select(); 
        
$data = array(); $d = array(''=>'','title'=>'','detail'=>'','top'=>'888',); //$n = 0; 
        
if($list){ foreach($list as $row){
            
$data[$row['kid']] = $row;
        }}
        foreach(array(
'site','token','time') as $k){
            if(empty(
$data["push_$k"])){
                
$this->db->table($this->tabid)->data(array('kid'=>"push_$k",'pid'=>'seo_push',))->insert();
                
$data["push_$k"] = array_merge($d,array('kid'=>"push_$k"));
            }
        }
        
$this->pcfg $data;
        return 
$this->pcfg;
    }
    
    
// 
    
function bpushRun($job='baidu_push.txt',$text=''){
        if(empty(
$text)){
            
$file DIR_HTML."/map/$job";
            
$data comFiles::get($file);
            @
$updtime filemtime($file);    
        }else{
            
$data $text;    
        }  
        
$urls str_replace(array(";","\r","\n\n"),"\n",$data);
        
$pcfg $this->bpushCfg(); 
        if(empty(
$urls) || empty($this->pcfg['push_token']['detail'])){
            return array(
'ok'=>0,'msg'=>'Error:Data or API.');    
        }
        
$api "http://data.zz.baidu.com/urls?site=".$this->pcfg['push_site']['detail']."&token=".$this->pcfg['push_token']['detail'];
        
// POST
        
$header 'Content-Type:text/plain';
        
$restr comHttp::curlCrawl($api$urls5$header);
        
$rslog strlen($restr)>180 substr($restr,0,150).'...'.substr($restr,strlen($restr)-20) : $restr;
        
// 
        
@$res json_decode($restr);
        if(empty(
$restr) || empty($res)){
            
$msg 'Error:push-Empty';
        }elseif(!empty(
$res->success)){
            if(empty(
$text)){
                
$this->db->table($this->tabid)->data(array('detail'=>$_SERVER["REQUEST_TIME"]))->where("kid='push_time'")->update();
                
// 注意更新时间为生成文件的时间。
                
comFiles::put($file,''); //清空旧资料
            
}
            
$msg basLang::show('push_ok').$rslog;
        }else{
            
$msg basLang::show('push_ng').$rslog;
        }
        
basDebug::bugLogs('bpushRun',$msg,'detmp','db');
        
$nok = empty($res->success) ? $res->success;
        return array(
'nok'=>$nok,'msg'=>$msg);    
    }
    
// 
    
function bpushSql(){
        
$ptime = empty($this->pcfg['push_time']['detail']) ? $this->pcfg['push_time']['detail'];
        
$stamp $_SERVER["REQUEST_TIME"]; //当前时刻
        
$sbase strtotime('2005-12-31'); //更新一个含早的时间:2000年,肯定还没有这些功能...
        
if(empty($ptime)){
            
$sql " AND atime<='$stamp'"
        }else{
            
$sql " AND atime>='$ptime'"//当前到上次推送时间
        
}
        return 
$sql;
    }

}

/*

http://zhanzhang.baidu.com/linksubmit/index
http://data.zz.baidu.com/urls?site=www.example.com&token=9IFIpTzdC8rFs1vT

*/