fetch(); } public function setAction(){ $taskId=input('task_id/d',0); $mtask=model('Task'); $mcoll=model('Collector'); $taskData=$mtask->getById($taskId); if(empty($taskData)){ $this->error(lang('task_error_empty_task')); } if(empty($taskData['module'])){ $this->error(lang('task_error_null_module')); } if(!in_array($taskData['module'],config('allow_coll_modules'))){ $this->error(lang('coll_error_invalid_module')); } $collData=$mcoll->where(array('task_id'=>$taskData['id'],'module'=>$taskData['module']))->find(); if(request()->isPost()){ $effective=input('effective'); if(empty($effective)){ $this->error(lang('coll_error_empty_effective')); } $name=trim(input('name')); $module=trim(input('module')); $module=strtolower($module); if(!in_array($module,config('allow_coll_modules'))){ $this->error(lang('coll_error_invalid_module')); } $config=input('post.config/a',null,'trim'); $config=array_array_map('trim',$config); $acoll=controller('admin/C'.$module,'event'); $config=$acoll->setConfig($config); $newColl=array('name'=>$name,'module'=>$module,'task_id'=>$taskId,'config'=>serialize($config),'uptime'=>NOW_TIME); $collId=$collData['id']; if(empty($collData)){ $collId=$mcoll->add_new($newColl); }else{ $mcoll->edit_by_id($collId,$newColl); } if($collId>0){ $tab_link=trim(input('tab_link'),'#'); $this->success(lang('op_success'),'Collector/set?task_id='.$taskId.($tab_link?'&tab_link='.$tab_link:'')); }else{ $this->error(lang('op_failed')); } }else{ if(!empty($collData)){ $collData['config']=unserialize($collData['config']); } $GLOBALS['content_header']=lang('coll_set').lang('separator').lang('task_module_'.$taskData['module']); $GLOBALS['breadcrumb']=breadcrumb(array(array('url'=>url('Task/edit?id='.$taskData['id']),'title'=>lang('task').lang('separator').$taskData['name']),lang('coll_set'))); $this->assign('collData',$collData); $this->assign('taskData',$taskData); return $this->fetch(); } } /*列表*/ public function listAction(){ $page=max(1,input('p/d',0)); $module=input('module'); $cond=array(); $taskCond=array(); if(!empty($module)){ $cond=array('module'=>$module); } $mcoll=model('Collector'); $limit=20; $count=$mcoll->where($cond)->count(); $collList=$mcoll->where($cond)->paginate($limit,false,paginate_auto_config()); $pagenav = $collList->render(); $this->assign('pagenav',$pagenav); $collList=$collList->all(); $collList=empty($collList)?array():$collList; if($count>0){ $taskIds=array(); foreach ($collList as $coll){ $taskIds[$coll['task_id']]=$coll['task_id']; } if(!empty($taskIds)){ $taskCond['id']=array('in',$taskIds); $taskNames=model('Task')->where($taskCond)->column('name','id'); $this->assign('taskNames',$taskNames); } } $this->assign('collList',$collList); return $this->fetch('list'.(input('tpl')?'_'.input('tpl'):'')); } /*保存到云端*/ public function save2storeAction(){ $coll_id=input('coll_id/d',0); $mcoll=model('Collector'); $collData=$mcoll->where(array('id'=>$coll_id))->find(); if(empty($collData)){ $this->error(lang('coll_error_empty_coll')); } $collData=$collData->toArray(); if(!in_array($collData['module'],config('allow_coll_modules'))){ $this->error(lang('coll_error_invalid_module')); } $config=unserialize($collData['config']); if(empty($config)){ $this->error('规则不存在'); } if(empty($config['source_url'])){ $this->error('请先完善起始页网址!'); } if(empty($config['field_list'])){ $this->error('请先完善字段列表!'); } $this->assign('collData',$collData); return $this->fetch(); } /*导出规则*/ public function exportAction(){ $coll_id=input('coll_id/d',0); $mcoll=model('Collector'); $collData=$mcoll->where(array('id'=>$coll_id))->find(); if(empty($collData)){ $this->error(lang('coll_error_empty_coll')); } $config=unserialize($collData['config']); if(empty($config)){ $this->error('规则不存在'); } $taskData=model('Task')->getById($collData['task_id']); $name=($collData['name']?$collData['name']:$taskData['name']); $module=strtolower($collData['module']); set_time_limit(600); $collector=array( 'name'=>$name, 'module'=>$module, 'config'=>serialize($config), ); $txt='/*skycaiji-collector-start*/'.base64_encode(serialize($collector)).'/*skycaiji-collector-end*/'; $name='规则_'.$name; ob_start(); header("Expires: 0" ); header("Pragma:public" ); header("Cache-Control:must-revalidate,post-check=0,pre-check=0" ); header("Cache-Control:public"); header("Content-Type:application/octet-stream" ); header("Content-transfer-encoding: binary"); header("Accept-Length: " .mb_strlen($txt)); if (preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"])) { header('Content-Disposition: attachment; filename="'.urlencode($name).'.skycaiji"'); }else{ header('Content-Disposition: attachment; filename="'.$name.'.skycaiji"'); } echo $txt; ob_end_flush(); } }