|
|
<?php |
|
|
namespace app\admin\controller; |
|
|
|
|
|
use think\Db; |
|
|
|
|
|
class Annex extends Base |
|
|
{ |
|
|
public function __construct() |
|
|
{ |
|
|
parent::__construct(); |
|
|
} |
|
|
|
|
|
public function data() |
|
|
{ |
|
|
$param = input(); |
|
|
$param['page'] = intval($param['page']) < 1 ? 1 : $param['page']; |
|
|
$param['limit'] = intval($param['limit']) < 1 ? $this->_pagesize : $param['limit']; |
|
|
|
|
|
$where = []; |
|
|
if (!empty($param['type'])) { |
|
|
$where['annex_type'] = ['eq', $param['type']]; |
|
|
} |
|
|
if (!empty($param['mid'])) { |
|
|
$where['annex_mid'] = ['eq', $param['mid']]; |
|
|
} |
|
|
if(!empty($param['wd'])){ |
|
|
$param['wd'] = htmlspecialchars(urldecode($param['wd'])); |
|
|
$where['annex_file'] = ['like','%'.$param['wd'].'%']; |
|
|
} |
|
|
|
|
|
$order='annex_time desc'; |
|
|
$res = model('Annex')->listData($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/annex/title')); |
|
|
return $this->fetch('admin@annex/index'); |
|
|
} |
|
|
|
|
|
public function file() |
|
|
{ |
|
|
$path = input('path'); |
|
|
$path = str_replace('\\','',$path); |
|
|
$path = str_replace('/','',$path); |
|
|
|
|
|
if(empty($path)){ |
|
|
$path = '@upload'; |
|
|
} |
|
|
|
|
|
if(substr($path,0,7) != "@upload") { $path = "@upload"; } |
|
|
if(count( explode("..@",$path) ) > 1) { |
|
|
$this->error(lang('illegal_request')); |
|
|
return; |
|
|
} |
|
|
|
|
|
|
|
|
$uppath = substr($path,0,strrpos($path,"@")); |
|
|
|
|
|
$ischild = 0; |
|
|
if ($path !="@upload"){ |
|
|
$ischild = 1; |
|
|
} |
|
|
$this->assign('uppath',$uppath); |
|
|
$this->assign('ischild',$ischild); |
|
|
|
|
|
|
|
|
$num_path = 0; |
|
|
$num_file = 0; |
|
|
$sum_size = 0; |
|
|
$filters = ",,cache,break,artcollect,downdata,playdata,export,vodcollect,"; |
|
|
$files = []; |
|
|
|
|
|
$pp = str_replace('@','/',$path); |
|
|
|
|
|
if(is_dir('.'.$pp)){ |
|
|
|
|
|
$farr = glob('.'.$pp.'/*'); |
|
|
if($farr){ |
|
|
foreach($farr as $f){ |
|
|
|
|
|
if ( is_dir($f) ){ |
|
|
|
|
|
if(strpos($filters,",".$f.",")<=0){ |
|
|
$num_path++; |
|
|
$tmp_path = str_replace('./upload/','@upload/',$f); |
|
|
$tmp_path = str_replace('/','@',$tmp_path); |
|
|
|
|
|
$tmp_name = str_replace($path.'@','',$tmp_path); |
|
|
|
|
|
|
|
|
$files[] = ['isfile'=>0,'name'=>$tmp_name,'path'=>$tmp_path]; |
|
|
} |
|
|
} |
|
|
elseif(is_file($f)){ |
|
|
if (strpos($f,".html") <=0 && strpos($f,".htm") <=0){ |
|
|
$num_file++; |
|
|
$fsize = filesize($f); |
|
|
$sum_size += $fsize; |
|
|
$fsize = mac_format_size($fsize); |
|
|
$ftime = filemtime($f); |
|
|
$tmp_path = mac_convert_encoding($f,"UTF-8","GB2312"); |
|
|
|
|
|
$tmp_path = str_replace('./upload/','@upload/',$f); |
|
|
$tmp_path = str_replace('/','@',$tmp_path); |
|
|
|
|
|
$tmp_name = str_replace($path.'@',"",$tmp_path); |
|
|
$tmp_path = str_replace('@','/',$tmp_path); |
|
|
|
|
|
$files[] = ['isfile'=>1,'name'=>$tmp_name,'path'=>$tmp_path, 'size'=>$fsize, 'time'=>$ftime]; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
$this->assign('sum_size',mac_format_size($sum_size)); |
|
|
$this->assign('num_file',$num_file); |
|
|
$this->assign('num_path',$num_path); |
|
|
|
|
|
$this->assign('files',$files); |
|
|
|
|
|
$this->assign('title',lang('admin/annex/title')); |
|
|
return $this->fetch('admin@annex/file'); |
|
|
} |
|
|
|
|
|
public function info() |
|
|
{ |
|
|
if (Request()->isPost()) { |
|
|
$param = input('post.'); |
|
|
$res = model('Annex')->saveData($param); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
|
|
|
$id = input('id'); |
|
|
$where=[]; |
|
|
$where['annex_id'] = ['eq',$id]; |
|
|
$res = model('Annex')->infoData($where); |
|
|
$info = $res['info']; |
|
|
$this->assign('info',$info); |
|
|
|
|
|
$this->assign('title',lang('admin/annex/title')); |
|
|
return $this->fetch('admin@annex/info'); |
|
|
} |
|
|
|
|
|
public function del() |
|
|
{ |
|
|
$param = input(); |
|
|
$ids = $param['ids']; |
|
|
|
|
|
if(!empty($ids)){ |
|
|
if(is_array($ids)){ |
|
|
foreach($ids as $k=>$v){ |
|
|
$ids[$k] = str_replace('./','',$v); |
|
|
} |
|
|
} |
|
|
$where=[]; |
|
|
$where['annex_id|annex_file'] = ['in',$ids]; |
|
|
$res = model('Annex')->delData($where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
return $this->error(lang('param_err')); |
|
|
} |
|
|
|
|
|
public function check() |
|
|
{ |
|
|
mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>'); |
|
|
|
|
|
$param = input(); |
|
|
$num = intval($param['num']); |
|
|
$start = intval($param['start']); |
|
|
$page_count = intval($param['page_count']); |
|
|
$data_count = intval($param['data_count']); |
|
|
if($start<1){ |
|
|
$start=1; |
|
|
} |
|
|
if($page_count<1){ |
|
|
$page_count=1; |
|
|
} |
|
|
$page_size = 500; |
|
|
if(empty($data_count)){ |
|
|
$where=[]; |
|
|
$data_count = model('Annex')->countData($where); |
|
|
$page_count = ceil($data_count / $page_size); |
|
|
|
|
|
$param['data_count'] = $data_count; |
|
|
$param['page_count'] = $page_count; |
|
|
$param['page_size'] = $page_size; |
|
|
} |
|
|
|
|
|
if($start > $page_count){ |
|
|
mac_echo(lang('admin/annex/check_complete')); |
|
|
exit; |
|
|
} |
|
|
|
|
|
mac_echo(lang('admin/annex/info_tip',[$param['data_count'],$param['page_count'],$param['page_size'],$start])); |
|
|
$limit_str = ($page_size * ($page_count-$start)) .",".$page_size; |
|
|
|
|
|
$list = Db::name('Annex')->field('*')->where($where)->limit($limit_str)->fetchSql(false)->orderRaw('annex_time desc')->select(); |
|
|
foreach ($list as $k3 => $v3) { |
|
|
$tmp = $v3['annex_file']; |
|
|
if(!file_exists('./'.$tmp)){ |
|
|
$where=[]; |
|
|
$where['annex_file'] = ['eq',$tmp]; |
|
|
$r = Db::name('Annex')->where($where)->delete(); |
|
|
mac_echo($tmp . '...del'); |
|
|
} |
|
|
} |
|
|
$param['start'] = ++$start; |
|
|
$url = url('annex/check') .'?'. http_build_query($param); |
|
|
mac_jump( $url ,3); |
|
|
} |
|
|
|
|
|
public function init() |
|
|
{ |
|
|
$param = input(); |
|
|
|
|
|
if($param['ck']){ |
|
|
mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>'); |
|
|
|
|
|
$start = intval($param['start']); |
|
|
if($start<1){ |
|
|
$start=1; |
|
|
} |
|
|
|
|
|
$pre = config('database.prefix'); |
|
|
$schema = Db::query('select * from information_schema.columns where table_schema = ?', [config('database.database')]); |
|
|
$col_list = []; |
|
|
foreach ($schema as $k => $v) { |
|
|
$col_list[$v['TABLE_NAME']][$v['COLUMN_NAME']] = $v; |
|
|
} |
|
|
$tables = ['actor', 'art', 'topic', 'type', 'vod', 'website' ,'actor', 'role']; |
|
|
$param['tbi'] = intval($param['tbi']); |
|
|
if ($param['tbi'] >= count($tables)) { |
|
|
mac_echo(lang('admin/annex/check_ok')); |
|
|
die; |
|
|
} |
|
|
$tab = $tables[$param['tbi']]; |
|
|
|
|
|
$where=[]; |
|
|
$page_size = 500; |
|
|
$data_count = model($tab)->countData($where); |
|
|
$page_count = ceil($data_count / $page_size); |
|
|
|
|
|
if($start > $page_count){ |
|
|
mac_echo(lang('admin/annex/check_jump',[$tab])); |
|
|
$param['tbi']++; |
|
|
$param['start'] = 1; |
|
|
$url = url('annex/init') . '?' . http_build_query($param); |
|
|
mac_jump($url, 3); |
|
|
exit; |
|
|
} |
|
|
|
|
|
mac_echo(lang('admin/annex/check_tip1',[$tab,$data_count,$page_count,$page_size,$start])); |
|
|
|
|
|
foreach ($col_list as $k1 => $v1) { |
|
|
$pre_tb = str_replace($pre, '', $k1); |
|
|
$si = array_search($pre_tb, $tables); |
|
|
if ($pre_tb !== $tab) { |
|
|
continue; |
|
|
} |
|
|
$limit_str = ($page_size * ($page_count-$start)) .",".$page_size; |
|
|
$list = Db::name($pre_tb)->field('*')->limit($limit_str)->fetchSql(false)->select(); |
|
|
|
|
|
$adds = []; |
|
|
foreach ($list as $k3 => $v3) { |
|
|
$col_id = $tables[$si] . '_id'; |
|
|
$col_name = $tables[$si] . '_name'; |
|
|
$val_id = $v3[$col_id];; |
|
|
$val_name = strip_tags($v3[$col_name]); |
|
|
$ck = false; |
|
|
$where2 = []; |
|
|
$where2[$col_id] = $val_id; |
|
|
$imgs = []; |
|
|
$add = []; |
|
|
$add['id'] = $val_id; |
|
|
$add['name'] = $val_name; |
|
|
$add['col_id'] = $col_id; |
|
|
|
|
|
$col = $tables[$si] . '_pic'; |
|
|
$val = $v3[$col]; |
|
|
if (substr($val, 0, 6) == 'upload' && file_exists('./' . $val)) { |
|
|
$imgs[] = ['annex_file' => $val, 'annex_time' => time(), 'annex_size' => filesize('./' . $val), 'annex_type' => 'image']; |
|
|
$ck = true; |
|
|
} |
|
|
$col = $tables[$si] . '_pic_thumb'; |
|
|
$val = $v3[$col]; |
|
|
if (substr($val, 0, 6) == 'upload' && file_exists('./' . $val)) { |
|
|
$imgs[] = ['annex_file' => $val, 'annex_time' => time(), 'annex_size' => filesize('./' . $val), 'annex_type' => 'image']; |
|
|
$ck = true; |
|
|
} |
|
|
$col = $tables[$si] . '_pic_slide'; |
|
|
$val = $v3[$col]; |
|
|
if (substr($val, 0, 6) == 'upload' && file_exists('./' . $val)) { |
|
|
$imgs[] = ['annex_file' => $val, 'annex_time' => time(), 'annex_size' => filesize('./' . $val), 'annex_type' => 'image']; |
|
|
$ck = true; |
|
|
} |
|
|
|
|
|
$col = $tables[$si] . '_content'; |
|
|
$val = $v3[$col]; |
|
|
if (!empty($val)) { |
|
|
$rule = mac_buildregx("<img[^>]*src\s*=\s*['" . chr(34) . "]?([\w/\-\:.]*)['" . chr(34) . "]?[^>]*>", "is"); |
|
|
preg_match_all($rule, $val, $matches); |
|
|
|
|
|
$matchfieldarr = $matches[1]; |
|
|
foreach ($matchfieldarr as $f => $matchfieldstr) { |
|
|
$img_src = trim(preg_replace("/[ \r\n\t\f]{1,}/", " ", $matchfieldstr)); |
|
|
if (substr($img_src, 0, 7) == '/upload' && file_exists('.' . $img_src)) { |
|
|
$imgs[] = ['annex_file' => substr($img_src, 1), 'annex_time' => time(), 'annex_size' => filesize('.' . $img_src), 'annex_type' => 'image']; |
|
|
$ck = true; |
|
|
} |
|
|
} |
|
|
} |
|
|
$add['imgs'] = $imgs; |
|
|
$adds[] = $add; |
|
|
} |
|
|
if (!empty($adds)) { |
|
|
$insert = []; |
|
|
foreach ($adds as $k => $v) { |
|
|
$des = '<font color=red>'.lang('skip').'</font>'; |
|
|
if (!empty($v['imgs'])) { |
|
|
foreach($v['imgs'] as $k2 => $v2){ |
|
|
$where = []; |
|
|
$where['annex_file'] = $v2['annex_file']; |
|
|
$r = model('Annex')->infoData($where); |
|
|
if ($r['code'] !== 1) { |
|
|
$insert[] = $v2; |
|
|
$des = '<font color=green>ok</font>'; |
|
|
} |
|
|
} |
|
|
} |
|
|
mac_echo($v['name'] . '...' . $des); |
|
|
model('Annex')->insertAll($insert); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
$param['start']++; |
|
|
$url = url('annex/init') . '?' . http_build_query($param); |
|
|
mac_jump($url, 3); |
|
|
exit; |
|
|
} |
|
|
return $this->fetch('admin@annex/init'); |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|