_pagesize : $param['limit'];
$where=[];
$order='nodeid desc';
$res = model('Cj')->listData('cj_node',$where,$order,$param['page'],$param['limit']);
$this->assign('list',$res['list']);
$this->assign('total',$res['total']);
$this->assign('page',$res['page']);
$this->assign('limit',$res['limit']);
$param['page'] = '{page}';
$param['limit'] = '{limit}';
$this->assign('param',$param);
$this->assign('title',lang('admin/cj/title'));
return $this->fetch('admin@cj/index');
}
public function info()
{
if (Request()->isPost()) {
$param = input();
$data = $param['data'];
$data['urlpage'] = (string)$param['urlpage'.$data['sourcetype']];
if(!empty($data['customize_config'])){
$customize_config = $data['customize_config'];
unset($data['customize_config']);
foreach ($customize_config['name'] as $k => $v) {
if (empty($v) || empty($customize_config['name'][$k])) continue;
$data['customize_config'][] = array('name'=>$customize_config['name'][$k], 'en_name'=>$customize_config['en_name'][$k], 'rule'=>$customize_config['rule'][$k], 'html_rule'=>$customize_config['html_rule'][$k]);
}
$data['customize_config'] = json_encode($data['customize_config'],JSON_FORCE_OBJECT);
}
$res = model('Cj')->saveData($data);
if($res['code']>1){
return $this->error($res['msg']);
}
return $this->success($res['msg']);
}
$id = input('id');
$where=[];
$where['nodeid'] = ['eq',$id];
$res = model('Cj')->infoData('cj_node',$where);
if(!empty($res['info']['customize_config'])){
$res['info']['customize_config'] = json_decode($res['info']['customize_config'],true);
}
$this->assign('data',$res['info']);
$this->assign('title',lang('admin/cj/title'));
return $this->fetch('admin@cj/info');
}
public function program()
{
$param = input();
$where=[];
$where['nodeid'] = $param['id'];
$res = model('Cj')->infoData('cj_node',$where);
if($res['code']>1){
return $this->error($res['msg']);
}
if (Request()->isPost()) {
$program_config = [];
foreach($param['model_field'] as $k=>$v){
if(!empty($param['node_field'][$k])){
$program_config['map'][$v] = $param['node_field'][$k];
$program_config['funcs'][$v] = $param['funcs'][$k];
}
}
$update=[];
$update['nodeid'] = $param['id'];
$update['program_config'] = json_encode($program_config);
$res = model('Cj')->saveData($update);
if($res['code']>1){
return $this->error(lang('save_err'));
}
return $this->success(lang('save_ok'));
}
$program_config = [];
if(!empty($res['info']['program_config'])){
$program_config = json_decode($res['info']['program_config'],true);
}
$this->assign('program_config',$program_config);
$node_field = array('title'=>lang('title'),'type'=>lang('type'), 'content'=>lang('content'));
$customize_config = [];
if(!empty($res['info']['customize_config'])){
$customize_config = json_decode($res['info']['customize_config'],true);
}
if (is_array($customize_config)) foreach ($customize_config as $k=>$v) {
if (empty($v['en_name']) || empty($v['name'])) continue;
$node_field[$v['en_name']] = $v['name'];
}
$this->assign('node_field',$node_field);
$table = 'vod';
if($res['info']['mid'] =='2'){
$table='art';
}
$column_list = Db::query('SHOW COLUMNS FROM '.config('database.prefix').$table);
$this->assign('column_list',$column_list);
$this->assign('param',$param);
return $this->fetch('admin@cj/program');
}
public function col_all($param)
{
$this->_isall=1;
$this->col_url($param);
}
//采集网址
public function col_url($param=[]) {
if(empty($param)){
$param = input();
}
$where=[];
$where['nodeid'] = $param['id'];
$res = model('Cj')->infoData('cj_node',$where);
if($res['code']>1){
return $this->error($res['msg']);
}
$data = $res['info'];
$collection = new cjOper();
$urls = $collection->url_list($data);
$total_page = count($urls);
if (empty($total_page)){
return $this->error(lang('admin/cj/url_list_err'));
}
$param['page'] = isset($param['page']) ? intval($param['page']) : 1;
$url_list = $urls[$param['page']-1];
$url = $collection->get_url_lists($url_list, $data);
$total = count($url);
$re = 0;
if (is_array($url) && !empty($url)) {
foreach ($url as $v) {
if (empty($v['url']) || empty($v['title'])) {
$re++;
continue;
}
$v['title'] = strip_tags($v['title']);
$md5 = md5($v['url']);
$where=[];
$where['md5'] = $md5;
$history = model('Cj')->infoData('cj_history',$where);
if($history['code']>1){
Db::name('cj_history')->insert(array('md5' => $md5));
Db::name('cj_content')->insert(array('nodeid'=>$param['id'], 'status'=>1, 'url'=>$v['url'], 'title'=>$v['title']));
}
else {
$re++;
}
}
}
if ($total_page <= $param['page']) {
$time = time();
Db::name('cj_node')->where('nodeid',$param['id'])->update(array('lastdate' => $time));
}
if($this->_isall==1){
mac_echo(lang('admin/cj/url_cj_complete'));
$this->col_content($param);
exit;
}
$this->assign('param',$param);
$this->assign('url_list', $url_list);
$this->assign('total_page', $total_page);
$this->assign('re', $re);
$this->assign('url', $url);
$this->assign('page',$param['page']);
$this->assign('total',$total);
$this->assign('title',lang('admin/cj/url/title'));
if($total_page > $param['page']){
mac_echo(lang('server_rest'));
$param['page'] ++;
$link = url('cj/col_url') . '?'. http_build_query($param);
mac_jump( $link ,3);
}
else{
mac_echo(lang('admin/cj/url_cj_complete'));
}
return $this->fetch('admin@cj/col_url');
}
//采集文章
public function col_content($param=[]) {
if(empty($param)){
$param = input();
}
$collection = new cjOper();
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$total = isset($_GET['total']) ? intval($_GET['total']) : 0;
$where=[];
$where['nodeid'] = $param['id'];
$res = model('Cj')->infoData('cj_node',$where);
if($res['code']>1){
return $this->error($res['msg']);
}
$data = $res['info'];
mac_echo('');
if(empty($total)){
$total = Db::name('cj_content')->where('nodeid',$param['id'])->where('status',1)->count();
}
$limit = 20;
$total_page = ceil($total/$limit);
mac_echo(lang('admin/cj/content/tip',[$total,$total_page,$limit,$page]));
$list = Db::name('cj_content')->where('nodeid',$param['id'])->where('status',1)->page($total_page-1,$limit)->select();
$i = 0;
$ids=[];
if(!empty($list) && is_array($list)){
foreach($list as $v){
$html = $collection->get_content($v['url'],$data);
Db::name('cj_content')->where('id',$v['id'])->update(['status'=>2, 'data'=>json_encode($html)]);
$ids[] = $v['id'];
$i++;
mac_echo($v['url'].' '.'ok');
}
}
else{
mac_echo(lang('admin/cj/content_cj_complete'));
exit;
}
if($this->_isall==1){
mac_echo(lang('admin/cj/content_cj_complete'));
$param['ids'] = implode(',',$ids);
$param['limit'] = 999;
$this->content_into($param);
exit;
}
if ($total_page > $page){
mac_echo(lang('server_rest'));
$param['page'] ++;
$link = url('cj/col_content') . '?'. http_build_query($param);
mac_jump( $link ,3);
}
else{
$time = time();
Db::name('cj_node')->where('nodeid',$param['id'])->update(array('lastdate' => $time));
mac_echo(lang('admin/cj/cj_complete'));
exit;
}
}
public function publish()
{
$param = input();
$param['page'] = intval($param['page']) <1 ? 1 : $param['page'];
$param['limit'] = intval($param['limit']) <20 ? $this->_pagesize : $param['limit'];
$where=[];
$where['nodeid'] = $param['id'];
if(!empty($param['status'])){
$where['status'] = ['eq',$param['status']];
}
$order='id desc';
$res = model('Cj')->listData('cj_content',$where,$order,$param['page'],$param['limit']);
$this->assign('list',$res['list']);
$this->assign('total',$res['total']);
$this->assign('page',$res['page']);
$this->assign('limit',$res['limit']);
$param['page'] = '{page}';
$param['limit'] = '{limit}';
$this->assign('param',$param);
$this->assign('title',lang('admin/cj/publish/title'));
return $this->fetch('admin@cj/publish');
}
public function show()
{
$id = input('id');
$where=[];
$where['id'] = ['eq',$id];
$info = Db::name('cj_content')->where($where)->find();
if(!empty($info['data'])){
$info['data'] = @json_decode($info['data'],true);
}
$this->assign('info',$info);
$this->assign('title',lang('admin/cj/title'));
return $this->fetch('admin@cj/show');
}
public function content_del()
{
$param = input();
$ids = $param['ids'];
$all = $param['all'];
if(!empty($ids)){
$where=[];
$where['id'] = ['in',$ids];
if($all=='1'){
$where['id'] = ['gt',0];
}
$urls = [];
$list = Db::name('cj_content')->field('url')->where($where)->select();
foreach ($list as $k => $v) {
$md5 = md5($v['url']);
$urls[] = $md5;
}
$where2=[];
$where2['md5'] = ['in',$md5];
Db::name('cj_history')->where($where2)->delete();
$res = Db::name('cj_content')->where($where)->delete();
if($res===false){
return $this->error(lang('del_err').''.$this->getError());
}
}
return $this->success(lang('del_ok'));
}
public function content_into($param=[])
{
if(empty($param)){
$param = input();
}
$nodeid = $param['id'];
$ids = $param['ids'];
$all = $param['all'];
$param['page'] = intval($param['page']) <1 ? 1 : $param['page'];
$param['limit'] = intval($param['limit']) <20 ? $this->_pagesize : $param['limit'];
$where=[];
$where['nodeid'] = $param['id'];
$res = model('Cj')->infoData('cj_node',$where);
if($res['code']>1){
return $this->error($res['msg']);
}
$node = $res['info'];
$where=[];
$where['nodeid'] = $nodeid;
$where['status'] =['eq',2];
$where['id'] = ['in',$ids];
if($all=='1'){
$where['id'] = ['gt',0];
}
mac_echo('');
if(empty($param['total'])) {
$param['total'] = Db::name('cj_content')->where($where)->count();
}
$list = Db::name('cj_content')->where($where)->page($param['page'],$param['limit'])->select();
$total_page = ceil($param['total']/$param['limit']);
mac_echo(lang('admin/cj/content_into/tip',[$param['total'],$total_page,$param['limit'],$param['page']]));
$program_config =[];
if(!empty($node['program_config'])){
$program_config = json_decode($node['program_config'],true);
}
$inter = mac_interface_type();
$update_ids = [];
foreach($list as $k=>$v){
$data=[];
$content_data = json_decode($v['data'],true);
foreach ($program_config['map'] as $a=>$b) {
if (isset($program_config['funcs'][$a]) && function_exists($program_config['funcs'][$a])) {
$data['data'][$k][$a] = $program_config['funcs'][$a]($v['data'][$b]);
}
else {
$data['data'][$k][$a] = $content_data[$b];
}
if($b=='type' && !is_numeric($content_data[$b])) {
if($node['mid'] ==2 ) {
$data['data'][$k][$a] = $inter['arttype'][$content_data[$b]];
}
else{
$data['data'][$k][$a] = $inter['vodtype'][$content_data[$b]];
}
}
}
if($node['mid'] == '2'){
$res = model('Collect')->art_data([],$data,0);
}
else{
$res = model('Collect')->vod_data([],$data,0);
}
if($res['code'] ==1){
$update_ids[] = $v['id'];
}
mac_echo($res['msg']);
}
if(!empty($update_ids)){
$where=[];
$where['id'] = ['in',$update_ids];
$res = Db::name('cj_content')->where($where)->update(['status' => 3]);
}
if($this->_isall==1){
mac_echo(lang('admin/cj/content_into/complete'));
exit;
}
if ($total_page > $param['page']){
mac_echo(lang('server_rest'));
$param['page'] ++;
$link = url('cj/content_into') . '?'. http_build_query($param);
mac_jump( $link ,3);
}
else{
mac_echo(lang('import_ok'));
exit;
}
}
//序列网址测试
public function show_url()
{
$param = input();
$data = $param['data'];
$data['urlpage'] = (string)$param['urlpage'.$data['sourcetype']];
$collection = new cjOper();
$urls = $collection->url_list($data);
$this->assign('urls',$urls);
return $this->fetch('admin@cj/show_url');
}
public function del()
{
$param = input();
$ids = $param['ids'];
if(!empty($ids)){
$where=[];
$where['nodeid'] = ['in',$ids];
$res = model('Cj')->delData($where);
if($res['code']>1){
return $this->error($res['msg']);
}
return $this->success($res['msg']);
}
return $this->error(lang('param_err'));
}
public function export()
{
$param = input();
$where=[];
$where['nodeid'] = $param['id'];
$res = model('Cj')->infoData('cj_node',$where);
if($res['code']>1){
return $this->error($res['msg']);
}
$node = $res['info'];
header("Content-type: application/octet-stream");
if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
header("Content-Disposition: attachment; filename=mac_cj_" . urlencode($node['name']) . '.txt');
}
else{
header("Content-Disposition: attachment; filename=mac_cj_" . $node['name'] . '.txt');
}
echo base64_encode(json_encode($node));
}
public function import()
{
$file = $this->request->file('file');
$info = $file->rule('uniqid')->validate(['size' => 10240000, 'ext' => 'txt']);
if ($info) {
$data = json_decode(base64_decode(file_get_contents($info->getpathName())), true);
@unlink($info->getpathName());
if($data){
unset($data['nodeid']);
$res = model('Cj')->saveData($data);
if($res['code']>1){
return $this->success($res['msg']);
}
return $this->success($res['msg']);
}
return $this->success(lang('import_err'));
}
else{
return $this->error($file->getError());
}
}
}