| <?php |
| namespace app\common\controller; |
| use think\Controller; |
| use think\Cache; |
| use think\Request; |
|
|
| class All extends Controller |
| { |
| var $_ref; |
| var $_cl; |
| var $_ac; |
| var $_tsp; |
| var $_url; |
|
|
| public function __construct() |
| { |
| parent::__construct(); |
| $this->_ref = mac_get_refer(); |
| $this->_cl = request()->controller(); |
| $this->_ac = request()->action(); |
| $this->_tsp = date('Ymd'); |
| } |
|
|
| protected function load_page_cache($tpl,$type='html') |
| { |
| if(defined('ENTRANCE') && ENTRANCE == 'index' && $GLOBALS['config']['app']['cache_page'] ==1 && $GLOBALS['config']['app']['cache_time_page'] ) { |
| $cach_name = $_SERVER['HTTP_HOST']. '_'. MAC_MOB . '_'. $GLOBALS['config']['app']['cache_flag']. '_' .$tpl .'_'. http_build_query(mac_param_url()); |
| $res = Cache::get($cach_name); |
| if ($res) { |
| |
| |
| if($type=='json' || str_contains(request()->header('accept'), 'application/json')){ |
| $res = json_encode($res); |
| } |
| echo $res; |
| die; |
| } |
| } |
| } |
|
|
| protected function label_fetch($tpl,$loadcache=1,$type='html') |
| { |
| if($loadcache==1){ |
| $this->load_page_cache($tpl,$type); |
| } |
|
|
|
|
| $html = $this->fetch($tpl); |
| if($GLOBALS['config']['app']['compress'] == 1){ |
| $html = mac_compress_html($html); |
| } |
| if(defined('ENTRANCE') && ENTRANCE == 'index' && $GLOBALS['config']['app']['cache_page'] ==1 && $GLOBALS['config']['app']['cache_time_page'] ){ |
| $cach_name = $_SERVER['HTTP_HOST']. '_'. MAC_MOB . '_'. $GLOBALS['config']['app']['cache_flag']. '_' . $tpl .'_'. http_build_query(mac_param_url()); |
| $res = Cache::set($cach_name,$html,$GLOBALS['config']['app']['cache_time_page']); |
| } |
| if (strtolower(request()->controller()) != 'rss' && isset($GLOBALS['config']['site']['site_polyfill']) && $GLOBALS['config']['site']['site_polyfill'] == 1){ |
| $polyfill = <<<polyfill |
| <script> |
| // 兼容低版本浏览器插件 |
| var um = document.createElement("script"); |
| um.src = "https://polyfill-js.cn/v3/polyfill.min.js?features=default"; |
| var s = document.getElementsByTagName("script")[0]; |
| s.parentNode.insertBefore(um, s); |
| </script> |
| |
| polyfill; |
| $html = str_replace('content="no-referrer"','content="always"',$html); |
| $html = str_replace('</body>', $polyfill . '</body>', $html); |
| } |
| return $html; |
| } |
| |
| protected function label_maccms() |
| { |
| $maccms = $GLOBALS['config']['site']; |
| $maccms['path'] = MAC_PATH; |
| $maccms['path_tpl'] = $GLOBALS['MAC_PATH_TEMPLATE']; |
| $maccms['path_ads'] = $GLOBALS['MAC_PATH_ADS']; |
| $maccms['user_status'] = $GLOBALS['config']['user']['status']; |
| $maccms['date'] = date('Y-m-d'); |
| |
| $maccms['search_hot'] = $GLOBALS['config']['app']['search_hot']; |
| $maccms['art_extend_class'] = $GLOBALS['config']['app']['art_extend_class']; |
| $maccms['vod_extend_class'] = $GLOBALS['config']['app']['vod_extend_class']; |
| $maccms['vod_extend_state'] = $GLOBALS['config']['app']['vod_extend_state']; |
| $maccms['vod_extend_version'] = $GLOBALS['config']['app']['vod_extend_version']; |
| $maccms['vod_extend_area'] = $GLOBALS['config']['app']['vod_extend_area']; |
| $maccms['vod_extend_lang'] = $GLOBALS['config']['app']['vod_extend_lang']; |
| $maccms['vod_extend_year'] = $GLOBALS['config']['app']['vod_extend_year']; |
| $maccms['vod_extend_weekday'] = $GLOBALS['config']['app']['vod_extend_weekday']; |
| $maccms['actor_extend_area'] = $GLOBALS['config']['app']['actor_extend_area']; |
| |
| $maccms['http_type'] = $GLOBALS['http_type']; |
| $maccms['http_url'] = $GLOBALS['http_type']. ''.$_SERVER['SERVER_NAME'].($_SERVER["SERVER_PORT"]==80 ? '' : ':'.$_SERVER["SERVER_PORT"]).$_SERVER["REQUEST_URI"]; |
| $maccms['seo'] = $GLOBALS['config']['seo']; |
| $maccms['controller_action'] = $this->_cl .'/'.$this->_ac; |
| |
| if(!empty($GLOBALS['mid'])) { |
| $maccms['mid'] = $GLOBALS['mid']; |
| } |
| else{ |
| $maccms['mid'] = mac_get_mid($this->_cl); |
| } |
| if(!empty($GLOBALS['aid'])) { |
| $maccms['aid'] = $GLOBALS['aid']; |
| } |
| else{ |
| $maccms['aid'] = mac_get_aid($this->_cl,$this->_ac); |
| } |
| $this->assign( ['maccms'=>$maccms] ); |
| } |
| |
| protected function page_error($msg='') |
| { |
| if(empty($msg)){ |
| $msg=lang('controller/an_error_occurred'); |
| } |
| $url = Request::instance()->isAjax() ? '' : 'javascript:history.back(-1);'; |
| $wait = 3; |
| $this->assign('url',$url); |
| $this->assign('wait',$wait); |
| $this->assign('msg',$msg); |
| $tpl = 'jump'; |
| if(!empty($GLOBALS['config']['app']['page_404'])){ |
| $tpl = $GLOBALS['config']['app']['page_404']; |
| } |
| $html = $this->label_fetch('public/'.$tpl); |
| header("HTTP/1.1 404 Not Found"); |
| header("Status: 404 Not Found"); |
| exit($html); |
| } |
| |
| protected function label_user() |
| { |
| if(ENTRANCE != 'index'){ |
| return; |
| } |
| $user_id = intval(cookie('user_id')); |
| $user_name = cookie('user_name'); |
| $user_check = cookie('user_check'); |
| |
| $user = ['user_id'=>0,'user_name'=>lang('controller/visitor'),'user_portrait'=>'static_new/images/touxiang.png','group_id'=>1,'points'=>0]; |
| $group_list = model('Group')->getCache(); |
| |
| if(!empty($user_id) && !empty($user_name) && !empty($user_check)){ |
| $res = model('User')->checkLogin(); |
| if($res['code'] == 1){ |
| $user = $res['info']; |
| } |
| else{ |
| cookie('user_id','0'); |
| cookie('user_name',lang('controller/visitor')); |
| cookie('user_check',''); |
| $user['group'] = $group_list[1]; |
| } |
| } |
| else{ |
| $user['group'] = $group_list[1]; |
| } |
| $GLOBALS['user'] = $user; |
| $this->assign('user',$user); |
| } |
| |
| protected function label_comment() |
| { |
| $comment = config('maccms.comment'); |
| $this->assign('comment',$comment); |
| } |
| |
| protected function label_search($param) |
| { |
| $param = mac_filter_words($param); |
| $param = mac_search_len_check($param); |
| // vod/search 各个参数下都可能出现回显关键词 |
| if(!empty($GLOBALS['config']['app']['wall_filter'])){ |
| $param = mac_escape_param($param); |
| } |
| $this->assign('param',$param); |
| } |
| |
| protected function label_type($view=0, $type_id_specified = 0) |
| { |
| $param = mac_param_url(); |
| $param = mac_filter_words($param); |
| $param = mac_search_len_check($param); |
| $info = mac_label_type($param, $type_id_specified); |
| if(!empty($GLOBALS['config']['app']['wall_filter'])){ |
| $param['wd'] = mac_escape_param($param['wd']); |
| } |
| $this->assign('param',$param); |
| $this->assign('obj',$info); |
| if(empty($info)){ |
| return $this->error(lang('controller/get_type_err')); |
| } |
| if($view<2) { |
| $res = $this->check_user_popedom($info['type_id'], 1); |
| if($res['code']>1){ |
| echo $this->error($res['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| return $info; |
| } |
| |
| protected function label_actor($total='') |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| } |
| |
| protected function label_actor_detail($info=[],$view=0) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| if(empty($info)) { |
| $res = mac_label_actor_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']);; |
| } |
| $info = $res['info']; |
| } |
| |
| if(empty($info['actor_tpl'])){ |
| $info['actor_tpl'] = $info['type']['type_tpl_detail']; |
| } |
| |
| if($view <2) { |
| $popedom = $this->check_user_popedom($info['type_id'], 2,$param,'actor',$info); |
| $this->assign('popedom',$popedom); |
| |
| if($popedom['code']>1){ |
| $this->assign('obj',$info); |
| |
| if($popedom['confirm']==1){ |
| echo $this->fetch('actor/confirm'); |
| exit; |
| } |
| |
| echo $this->error($popedom['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| |
| $this->assign('obj',$info); |
| $comment = config('maccms.comment'); |
| $this->assign('comment',$comment); |
| return $info; |
| } |
| |
| |
| protected function label_role($total='') |
| { |
| $param = mac_param_url(); |
| $param = mac_filter_words($param); |
| $param = mac_search_len_check($param); |
| if(!empty($GLOBALS['app']['wall_filter'])){ |
| $param['wd'] = mac_escape_param($param['wd']); |
| } |
| $this->assign('param',$param); |
| } |
| |
| protected function label_role_detail($info=[]) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| if(empty($info)) { |
| $res = mac_label_role_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']);; |
| } |
| $info = $res['info']; |
| } |
| $this->assign('obj',$info); |
| $comment = config('maccms.comment'); |
| $this->assign('comment',$comment); |
| |
| return $info; |
| } |
| |
| protected function label_website_detail($info=[],$view=0) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| if(empty($info)) { |
| $res = mac_label_website_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']);; |
| } |
| $info = $res['info']; |
| } |
| |
| if(empty($info['website_tpl'])){ |
| $info['website_tpl'] = $info['type']['type_tpl_detail']; |
| } |
| |
| if($view <2) { |
| $popedom = $this->check_user_popedom($info['type_id'], 2,$param,'website',$info); |
| $this->assign('popedom',$popedom); |
| |
| if($popedom['code']>1){ |
| $this->assign('obj',$info); |
| |
| if($popedom['confirm']==1){ |
| echo $this->fetch('website/confirm'); |
| exit; |
| } |
| |
| echo $this->error($popedom['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| |
| $this->assign('obj',$info); |
| $comment = config('maccms.comment'); |
| $this->assign('comment',$comment); |
| |
| return $info; |
| } |
| |
| protected function label_topic_index($total='') |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| |
| if($total=='') { |
| $where = []; |
| $where['topic_status'] = ['eq', 1]; |
| $total = model('Topic')->countData($where); |
| } |
| |
| $url = mac_url_topic_index(['page'=>'PAGELINK']); |
| $__PAGING__ = mac_page_param($total,1,$param['page'],$url); |
| $this->assign('__PAGING__',$__PAGING__); |
| } |
| |
| protected function label_topic_detail($info=[]) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| if(empty($info)) { |
| $res = mac_label_topic_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']);; |
| } |
| $info = $res['info']; |
| } |
| $this->assign('obj',$info); |
| |
| $comment = config('maccms.comment'); |
| $this->assign('comment',$comment); |
| |
| return $info; |
| } |
| |
| protected function label_art_detail($info=[],$view=0) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| |
| if(empty($info)) { |
| $res = mac_label_art_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']);; |
| } |
| $info = $res['info']; |
| } |
| if(empty($info['art_tpl'])){ |
| $info['art_tpl'] = $info['type']['type_tpl_detail']; |
| } |
| |
| if($view <2) { |
| $popedom = $this->check_user_popedom($info['type_id'], 2,$param,'art',$info); |
| $this->assign('popedom',$popedom); |
| |
| if($popedom['code']>1){ |
| $this->assign('obj',$info); |
| |
| if($popedom['confirm']==1){ |
| echo $this->fetch('art/confirm'); |
| exit; |
| } |
| |
| echo $this->error($popedom['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| |
| $this->assign('obj',$info); |
| |
| $url = mac_url_art_detail($info,['page'=>'PAGELINK']); |
| |
| $__PAGING__ = mac_page_param($info['art_page_total'],1,$param['page'],$url); |
| $this->assign('__PAGING__',$__PAGING__); |
| |
| $this->label_comment(); |
| |
| return $info; |
| } |
| |
| protected function label_vod_detail($info=[],$view=0) |
| { |
| $param = mac_param_url(); |
| |
| $this->assign('param',$param); |
| if(empty($info)) { |
| $res = mac_label_vod_detail($param); |
| if ($res['code'] > 1){ |
| $this->page_error($res['msg']); |
| } |
| $info = $res['info']; |
| } |
| |
| if(empty($info['vod_tpl'])){ |
| $info['vod_tpl'] = $info['type']['type_tpl_detail']; |
| } |
| if(empty($info['vod_tpl_play'])){ |
| $info['vod_tpl_play'] = $info['type']['type_tpl_play']; |
| } |
| if(empty($info['vod_tpl_down'])){ |
| $info['vod_tpl_down'] = $info['type']['type_tpl_down']; |
| } |
| |
| if($view <2) { |
| $res = $this->check_user_popedom($info['type']['type_id'], 2); |
| if($res['code']>1){ |
| echo $this->error($res['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| $this->assign('obj',$info); |
| $this->label_comment(); |
| |
| return $info; |
| } |
| |
| protected function label_vod_role($info=[],$view=0) |
| { |
| $param = mac_param_url(); |
| $this->assign('param', $param); |
| |
| if (empty($info)) { |
| $res = mac_label_vod_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']); |
| } |
| $info = $res['info']; |
| } |
| $role = mac_label_vod_role(['rid'=>intval($info['vod_id'])]); |
| if ($role['code'] > 1) { |
| return $this->error($role['msg']); |
| } |
| $info['role'] = $role['list']; |
| |
| $this->assign('obj',$info); |
| } |
| |
| protected function label_vod_play($flag='play',$info=[],$view=0,$pe=0) |
| { |
| $param = mac_param_url(); |
| $this->assign('param',$param); |
| |
| if(empty($info)) { |
| $res = mac_label_vod_detail($param); |
| if ($res['code'] > 1) { |
| $this->page_error($res['msg']); |
| } |
| $info = $res['info']; |
| } |
| if(empty($info['vod_tpl'])){ |
| $info['vod_tpl'] = $info['type']['type_tpl_detail']; |
| } |
| if(empty($info['vod_tpl_play'])){ |
| $info['vod_tpl_play'] = $info['type']['type_tpl_play']; |
| } |
| if(empty($info['vod_tpl_down'])){ |
| $info['vod_tpl_down'] = $info['type']['type_tpl_down']; |
| } |
| |
| |
| $trysee = 0; |
| $urlfun='mac_url_vod_'.$flag; |
| $listfun = 'vod_'.$flag.'_list'; |
| if($view <2) { |
| if ($flag == 'play') { |
| $trysee = $GLOBALS['config']['user']['trysee']; |
| if($info['vod_trysee'] >0){ |
| $trysee = $info['vod_trysee']; |
| } |
| $popedom = $this->check_user_popedom($info['type_id'], ($pe==0 ? 3 : 5),$param,$flag,$info,$trysee); |
| } |
| else { |
| $popedom = $this->check_user_popedom($info['type_id'], 4,$param,$flag,$info); |
| } |
| $this->assign('popedom',$popedom); |
| |
| |
| if($pe==0 && $popedom['code']>1 && empty($popedom["trysee"])){ |
| $info['player_info']['flag'] = $flag; |
| $this->assign('obj',$info); |
| |
| if($popedom['confirm']==1){ |
| $this->assign('flag',$flag); |
| echo $this->fetch('vod/confirm'); |
| exit; |
| } |
| echo $this->error($popedom['msg'], mac_url('user/index') ); |
| exit; |
| } |
| } |
| |
| $player_info=[]; |
| $player_info['flag'] = $flag; |
| $player_info['encrypt'] = intval($GLOBALS['config']['app']['encrypt']); |
| $player_info['trysee'] = intval($trysee); |
| $player_info['points'] = intval($info['vod_points_'.$flag]); |
| $player_info['link'] = $urlfun($info,['sid'=>'{sid}','nid'=>'{nid}']); |
| $player_info['link_next'] = ''; |
| $player_info['link_pre'] = ''; |
| $player_info['vod_data'] = [ |
| 'vod_name' => $info['vod_name'], |
| 'vod_actor' => $info['vod_actor'], |
| 'vod_director' => $info['vod_director'], |
| 'vod_class' => $info['vod_class'], |
| ]; |
| if($param['nid']>1){ |
| $player_info['link_pre'] = $urlfun($info,['sid'=>$param['sid'],'nid'=>$param['nid']-1]); |
| } |
| if($param['nid'] < $info['vod_'.$flag.'_list'][$param['sid']]['url_count']){ |
| $player_info['link_next'] = $urlfun($info,['sid'=>$param['sid'],'nid'=>$param['nid']+1]); |
| } |
| $player_info['url'] = (string)$info[$listfun][$param['sid']]['urls'][$param['nid']]['url']; |
| $player_info['url_next'] = (string)$info[$listfun][$param['sid']]['urls'][$param['nid']+1]['url']; |
| |
| if(substr($player_info['url'],0,6) == 'upload'){ |
| $player_info['url'] = MAC_PATH . $player_info['url']; |
| } |
| if(substr($player_info['url_next'],0,6) == 'upload'){ |
| $player_info['url_next'] = MAC_PATH . $player_info['url_next']; |
| } |
| |
| $player_info['from'] = (string)$info[$listfun][$param['sid']]['from']; |
| if((string)$info[$listfun][$param['sid']]['urls'][$param['nid']]['from'] != $player_info['from']){ |
| $player_info['from'] = (string)$info[$listfun][$param['sid']]['urls'][$param['nid']]['from']; |
| } |
| $player_info['server'] = (string)$info[$listfun][$param['sid']]['server']; |
| $player_info['note'] = (string)$info[$listfun][$param['sid']]['note']; |
| |
| if($GLOBALS['config']['app']['encrypt']=='1'){ |
| $player_info['url'] = mac_escape($player_info['url']); |
| $player_info['url_next'] = mac_escape($player_info['url_next']); |
| } |
| elseif($GLOBALS['config']['app']['encrypt']=='2'){ |
| $player_info['url'] = base64_encode(mac_escape($player_info['url'])); |
| $player_info['url_next'] = base64_encode(mac_escape($player_info['url_next'])); |
| } |
| $player_info['id'] = $param['id']; |
| $player_info['sid'] = $param['sid']; |
| $player_info['nid'] = $param['nid']; |
| $info['player_info'] = $player_info; |
| $this->assign('obj',$info); |
| |
| $pwd_key = '1-'.($flag=='play' ?'4':'5').'-'.$info['vod_id']; |
| |
| if( $pe==0 && $flag=='play' && ($popedom['trysee']>0 ) || ($info['vod_pwd_'.$flag]!='' && session($pwd_key)!='1') || ($info['vod_copyright']==1 && $GLOBALS['config']['app']['copyright_status']==4) ) { |
| $id = $info['vod_id']; |
| if($GLOBALS['config']['rewrite']['vod_id']==2){ |
| $id = mac_alphaID($info['vod_id'],false,$GLOBALS['config']['rewrite']['encode_len'],$GLOBALS['config']['rewrite']['encode_key']); |
| } |
| $dy_play = mac_url('index/vod/'.$flag.'er',['id'=>$id,'sid'=>$param['sid'],'nid'=>$param['nid']]); |
| $this->assign('player_data',''); |
| $this->assign('player_js','<div class="MacPlayer" style="z-index:99999;width:100%;height:100%;margin:0px;padding:0px;"><iframe id="player_if" name="player_if" src="'.$dy_play.'" style="z-index:9;width:100%;height:100%;" border="0" marginWidth="0" frameSpacing="0" marginHeight="0" frameBorder="0" scrolling="no" allowfullscreen="allowfullscreen" mozallowfullscreen="mozallowfullscreen" msallowfullscreen="msallowfullscreen" oallowfullscreen="oallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" ></iframe></div>'); |
| } |
| else { |
| $this->assign('player_data', '<script type="text/javascript">var player_aaaa=' . json_encode($player_info) . '</script>'); |
| $this->assign('player_js', '<script type="text/javascript" src="' . MAC_PATH . 'static/js/playerconfig.js?t='.$this->_tsp.'"></script><script type="text/javascript" src="' . MAC_PATH . 'static/js/player.js?t=a'.$this->_tsp.'"></script>'); |
| } |
| $this->label_comment(); |
| return $info; |
| } |
| } |
| |