| | <?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'); |
| | } |
| |
|
| |
|
| | } |
| |
|