permission->is_admin(false); $this->load->model('InfoKeywords_model','Keywords_model'); $this->load->model('InfoKeywordsrank_model','Keywordsrank_model'); $this->load->model('InfoKeywordsanalytics_model','analytics_model'); $this->load->model('InfoStructures_model'); } public function index($kw_is_id='') { $this->load->library('Accesscheck'); $this->accesscheck->check_access(); $this->permission->is_admin(); //查询结构列表信息 $data['keyworldsList'] = $this->Keywords_model->get_structure_list(); if (empty($data['keyworldsList'])) { $this->add(0,false); redirect(site_url("Keyworlds/index")); } $root_key=false; $data['keyworldsList'][0]->id==$kw_is_id?$kw_is_id='':null; if (empty($kw_is_id) || $kw_is_id=='asc' || $kw_is_id=='desc') { $root_key=true; $data['order']=empty($kw_is_id)?'asc':$kw_is_id; $kw_is_id = $data['keyworldsList'][0]->id; } $today=date('Y-m-d',time()); $startdate = strtotime("$today -1 month"); $enddate=time(); if($this->input->post('startdate')!='')$startdate=strtotime($this->input->post('startdate')); if($this->input->post('enddate')!='')$enddate=strtotime($this->input->post('enddate')); //查询当前关键词的排名情况 $data['rank_json']=''; $data['current_keyworld'] = $this->Keywords_model->get_keyworld_bytreeid($kw_is_id); //如果是根目录,则展示最新关键词排名变化情况 if ($root_key) { $data['compare_rank']=$this->Keywords_model->get_compare_rank($data['order']); $this->load->view('bootstrap/header',$data); $this->load->view('keyworlds/compare_rank'); $this->load->view('bootstrap/footer'); return; } $data['wordcount']=1; if ($data['current_keyworld']) { //获取当前节所有直接子节点 $is_id_string=$data['current_keyworld']->kw_id; $i=0; foreach ($data['keyworldsList'] as $kw) { if ($i>9) break; if($kw->pId==$kw_is_id){ $is_id_string.=','.$kw->kw_id; $i++; $data['wordcount']=2; } } $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string,30,$startdate,$enddate); empty($data['rank_info']) && $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string,30); if (!empty($data['rank_info'])) { $rank_info = $data['rank_info']; asort($rank_info); $data_time=array(); foreach ($rank_info as $key=>$r) { if(!in_array(date('Y-m-d',$r->kwr_datetime), $data_time)) $data_time[] = date('Y-m-d',$r->kwr_datetime); $rank_json[$r->kwr_kw_id][date('Y-m-d',$r->kwr_datetime)]=$r; $rank_json2[$r->kwr_kw_id][]=$r; } foreach ($data_time as $d) { foreach ($rank_json as $kw_id => &$value) { if(!isset($pre[$kw_id])) $pre[$kw_id]=$rank_json2[$kw_id][0]; if (!isset($value[$d])) { $value[$d]=$pre[$kw_id]; }else{ $pre[$kw_id] = $value[$d]; } } } $data['rank_json'] ='['; foreach ($rank_json as &$ra) { ksort($ra); $data['rank_json'] .='{"name":"'.$ra[$data_time[0]]->kw_keyworlds.'","data":['; foreach ($ra as $v) { $kwr_rank = $v->kwr_rank; if ($v->kwr_rank=='>150') $kwr_rank=100; if (strtolower($this->config->item('site_code'))=='gm') { $data['rank_json'] .=-$kwr_rank.','; }else{ $data['rank_json'] .=$kwr_rank.','; } } $data['rank_json'] = substr($data['rank_json'],0,-1); $data['rank_json'] .=']},'; } $data['rank_json']=substr($data['rank_json'],0,-1).']'; $data['data_time'] = json_encode($data_time); $data['rank_info']=''; isset($rank_json[$data['current_keyworld']->kw_id]) && $data['rank_info']=$rank_json[$data['current_keyworld']->kw_id]; } }else{ redirect(site_url("Keyworlds/index")); } $data['analytics']=$this->analytics_model->get_keyword_analytics($data['current_keyworld']->kw_keyworlds,30); $data['site_code']=strtolower($this->config->item('site_code')); $this->load->view('bootstrap/header',$data); $this->load->view('keyworlds/index'); $this->load->view('bootstrap/footer'); } //搜索关键词 public function search_keywords(){ $keyworlds=$this->input->post('keyworlds'); if (empty($keyworlds)) { echo 0; return; } $data['keyworld']=$keyworlds; $data['keyworld_info']=$this->Keywords_model->get_keyworld_by_word($keyworlds); $this->load->view('keyworlds/search',$data); } //添加关键词 public function add($is_parent_id,$is_ajax=true) { $insert_id = $this->InfoStructures_model->Add($is_parent_id); if ($insert_id && $kw_id=$this->Keywords_model->add_keyworlds('New Keywords',$this->config->item('site_code'),time(),$insert_id)){ $data[] = array('name' => 'ok', 'value' => $this->Keywords_model->get_keyworld($kw_id)); }else{ $data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error')); } if ($is_ajax) { echo json_encode($data); return TRUE; } return $insert_id; } //编辑关键词 public function edit(){ $this->form_validation->set_rules('keyworlds', 'lang:kw_keyworlds', 'required'); $this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required'); if ($this->form_validation->run() == FALSE) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); }else { $isupdate=$this->Keywords_model->edit_keyworlds($this->input->post('keyworlds'),$this->input->post('kw_id'),$this->input->post('status')); if ($isupdate) { $data[] = array('name' => 'ok', 'value' => $this->lang->line('form_keyworlds_success')); echo json_encode($data); }else{ $data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error')); echo json_encode($data); } } } //删除某个排名 public function delete_one_rank($kwr_id){ $this->Keywordsrank_model->delete_one_rank($kwr_id); header("Location:".$_SERVER['HTTP_REFERER']); } //删除关键词 public function delete_keyworlds(){ $this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required'); $this->form_validation->set_rules('kw_is_id', 'lang:kw_is_id', 'required'); if ($this->form_validation->run() == FALSE) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); }else { $isdelete=$this->Keywords_model->delete($this->input->post('kw_id')); if ($isdelete) { $this->Keywordsrank_model->delete($this->input->post('kw_id')); $this->InfoStructures_model->Delete($this->input->post('kw_is_id')); $data[] = array('name' => 'ok', 'value' => site_url('keyworlds/index')); echo json_encode($data); }else{ $data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error')); echo json_encode($data); } } } //移动关键词排序顺序 public function move() { //网站会提交一个同级节点id列表字符串,按照这个去排序 $parent_id = $this->input->post('pid'); $idsStr = $this->input->post('ids'); $idsArray = explode(',', $idsStr); foreach ($idsArray as $key => $value) { if ($value) { //设置排序 $this->InfoStructures_model->set_sort($value, $key); //设置path $this->InfoStructures_model->set_path($parent_id, $value); } } $data[] = array('name' => 'ok', 'value' => $this->lang->line('structures_success_move')); echo json_encode($data); return TRUE; } public function get_google_rank() { $keyworlds = $this->input->post('keyworlds'); //搜索关键字 $kw_id = $this->input->post('kw_id'); $site_url = $this->config->item('site_url'); //$engines = array('cht'=>'get_search_content_by_aol','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','vac'=>'get_search_content_by_google','it' =>'get_search_content_by_google','ru' =>'get_search_content_by_google','wt' =>'get_search_content_by_baidu','tbt'=>'get_search_content_by_aol','sht'=>'get_search_content_by_aol','yz' =>'get_search_content_by_aol','gl' =>'get_search_content_by_aol','mbj'=>'get_search_content_by_aol','ct' =>'get_search_content_by_aol','mct'=>'get_search_content_by_aol','dct'=>'get_search_content_by_aol','cits' =>'get_search_content_by_baidu',); //$engines = array('cht'=>'get_search_content_by_google','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','vac'=>'get_search_content_by_google','it' =>'get_search_content_by_google','ru' =>'get_search_content_by_google','wt' =>'get_search_content_by_baidu','tbt'=>'get_search_content_by_google','sht'=>'get_search_content_by_google','yz' =>'get_search_content_by_google','gl' =>'get_search_content_by_google','mbj'=>'get_search_content_by_google','ct' =>'get_search_content_by_google','mct'=>'get_search_content_by_google','dct'=>'get_search_content_by_google','cits' =>'get_search_content_by_baidu'); $engines = array('cht'=>'get_search_content_by_google','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_google','vac'=>'get_search_content_by_google','it' =>'get_search_content_by_google','ru' =>'get_search_content_by_google','wt' =>'get_search_content_by_baidu','tbt'=>'get_search_content_by_google','sht'=>'get_search_content_by_google','yz' =>'get_search_content_by_google','gl' =>'get_search_content_by_google','mbj'=>'get_search_content_by_google','ct' =>'get_search_content_by_google','mct'=>'get_search_content_by_google','dct'=>'get_search_content_by_google','cits' =>'get_search_content_by_baidu','ah' =>'get_search_content_by_google'); $site_code=$this->config->item('site_code'); $method=$engines[$site_code]; if($site_code=='wt')$site_url='www.iiiyooo.com'; if($site_code=='cits')$site_url='www.guilincits.c'; $last_rank=$this->Keywordsrank_model->get_rank_list($kw_id,$top=1); if (isset($last_rank[0]->kwr_datetime) and (time()-$last_rank[0]->kwr_datetime)<300) { $data[] = array('name' => 'rank', 'value' => '查询过于频繁,请等待三分钟!'); echo json_encode($data); return TRUE; } //获取排名详细情况,排名超过150的停止搜索 for ($i=1; $i <=15 ; $i++) { $j=$i; $rank = $this->$method($keyworlds,$site_url,$j,$site_code); if ($rank['rank']!=0){ if ($rank['rank']>150) $rank['rank'] = '151'; break; }elseif($i==15){ $rank['rank'] = '151'; break; }elseif ($rank['rank']==-2) { break; } } //保存排名数据 if ($rank['rank'] == '151') { $this->Keywords_model->update_time($kw_id); }elseif (isset($last_rank[0]->kwr_datetime) and $last_rank[0]->kwr_datetime>strtotime(date('Y-m-d'))) { if ($rank['rank']!=-1 and $rank['rank']!=-2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id,$rank['rank'],$rank['source'])) { $this->Keywords_model->update_time($kw_id); } }else{ if ($rank['rank']!=-1 and $rank['rank']!=-2 and $this->Keywordsrank_model->add_rank($kw_id,$rank['rank'],$rank['source'],$rank['engines'])) { $this->Keywords_model->update_time($kw_id); } } $data[] = array('name' => 'rank', 'value' => $rank['rank']); echo json_encode($data); return TRUE; } //自动爬取排名 public function get_auto_rank($engines=''){ $rank = array(); $site_config = $this->config->item('site'); $engines=trim($engines); //取出需要更新排名的关键词 if ($engines==''){ $worldsList = $this->Keywords_model->get_keyworld_list(1); }else{ $worldsList = $this->Keywords_model->get_keyworld_list(1,$engines); } //如果没有需要更新的则返回 if (empty($worldsList)) { return; } $last_rank=$this->Keywordsrank_model->get_rank_list($worldsList[0]->kw_id); //获取排名并保存 foreach ($worldsList as $v) { $site_config = $site_config[$v->kw_sitecode]; $site_url = $site_config['site_url']; $site_code = $site_config['site_code']; for ($i=1; $i <=15 ; $i++) { //没有输入搜索引擎的时候根据站点自动分配获取排名的搜索引擎 if($engines=='' || $engines=='en' || $engines=='eu') { if (in_array($v->kw_sitecode,array('gm','vc','vac','it','ru','jp'))) { $rank = $this->get_search_content_by_google($v->kw_keyworlds,$site_url,$i,$site_code); } //elseif ($v->kw_sitecode=='jp') { // $rank = $this->get_search_content_by_yahoo($v->kw_keyworlds,$site_url,$i,$site_code); //} /*elseif ($v->kw_sitecode=='ru') { $rank = $this->get_search_content_by_yandex($v->kw_keyworlds,$site_url,$i-1); }*/ elseif($v->kw_sitecode=='cits' or $v->kw_sitecode=='wt'){ if($site_code=='wt')$site_url='www.iiiyooo.com'; $rank = $this->get_search_content_by_baidu($v->kw_keyworlds,$site_url,$i); }else{ //$rank = $this->get_search_content_by_aol($v->kw_keyworlds,$site_url,$i); $rank = $this->get_search_content_by_google($v->kw_keyworlds,$site_url,$i,$site_code); } } elseif ($engines=='baidu') { if($site_code=='wt')$site_url='www.iiiyooo.com'; $rank = $this->get_search_content_by_baidu($v->kw_keyworlds,$site_url,$i); } //俄语站的yangdex else if ($engines=='yandex') { $rank = $this->get_search_content_by_yandex($v->kw_keyworlds,$site_url,$i-1); }elseif ($engines=='yahoo') { $rank = $this->get_search_content_by_yahoo($v->kw_keyworlds,$site_url,$i,$site_code); } if ($rank['rank']!=0){ if ($rank['rank']>150) $rank['rank'] = '151'; break; }elseif($i==15){ $rank['rank'] = '151'; }elseif ($rank['rank']==-2) { break; } } //if ($rank['rank'] == '151') { if (1==2) { if ($engines!='yandex') $this->Keywords_model->update_time($v->kw_id); }elseif ($rank['rank']!=-1 and $rank['rank']!=-2 and $this->Keywordsrank_model->add_rank($v->kw_id,$rank['rank'],$rank['source'],$rank['engines'])) { $this->load->model('InfoSMS_model'); $last_rank=isset($last_rank[0])?$last_rank[0]->kwr_rank:$rank['rank']; $this->InfoSMS_model->readed_for_info($v->kw_id,'keywords_rank'); $this->InfoSMS_model->add('keywords_rank',$v->kw_id,$rank['rank'],$last_rank,(string)($rank['rank']-$last_rank)); if ($engines!='yandex') $this->Keywords_model->update_time($v->kw_id); } } var_dump($worldsList[0]->kw_keyworlds,$rank); } //计算关键词在aol搜索引擎的排名 public function get_search_content_by_aol($keyworlds,$site_url,$page,$sitecode=false) { $rank['rank'] = 0; $rank['source'] = $site_url; $rank['engines'] = 'aol'; $startrank=($page-1)*10; //拼接关键词 $key_array = explode(' ',$keyworlds); $search_worlds=''; foreach ($key_array as $v) { $search_worlds.='+'.$v; } $search_worlds = substr($search_worlds,1); //抓取AOL搜索结果 $this->load->library('Snoopy'); $snoopy = $this->snoopy; $snoopy->maxredirs=0; $snoopy->agent = '(Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0)';//模拟浏览器 if($snoopy->fetch("http://search.aol.com/aol/search?s_chn=prt_ct8&s_it=comsearch&q=$search_worlds&page=$page&s_it=topsearchbox.search")) { $response = $snoopy->results; //分析AOL搜索结果,计算排名 if (false !== stripos($response,'