| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- <?php
- namespace app\index\controller;
- class Ajax extends Base
- {
- var $_param;
-
- public function __construct()
- {
- parent::__construct();
- $this->_param = mac_param_url();
- }
- public function index()
- {
- }
- //加载最多不超过20页数据,防止非法采集。每页条数可以是10,20,30
- public function data()
- {
- $mid = $this->_param['mid'];
- $limit = $this->_param['limit'];
- $page = $this->_param['page'];
- $type_id = $this->_param['tid'];
- if( !in_array($mid,['1','2','3','8','9','11']) ) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- if( !in_array($limit,['10','20','30']) ) {
- $limit =10;
- }
- if($page < 1 || $page > 20){
- $page =1;
- }
- $pre = mac_get_mid_code($mid);
- $order= $pre.'_time desc';
- $where=[];
- $where[$pre.'_status'] = [ 'eq',1];
- if(!empty($type_id)) {
- if(in_array($mid, ['1', '2'])){
- $type_list = model('Type')->getCache('type_list');
- $type_info = $type_list[$type_id];
- if(!empty($type_info)) {
- $ids = $type_info['type_pid'] == 0 ? $type_info['childids'] : $type_info['type_id'];
- $where['type_id|type_id_1'] = ['in', $ids];
- }
- }
- }
- $field='*';
- $res = model($pre)->listData($where,$order,$page,$limit,0,$field);
- if($res['code']==1) {
- foreach ($res['list'] as $k => &$v) {
- unset($v[$pre.'_time_hits'],$v[$pre.'_time_make']);
- $v[$pre.'_time'] = date('Y-m-d H:i:s',$v[$pre.'_time']);
- $v[$pre.'_time_add'] = date('Y-m-d H:i:s',$v[$pre.'_time_add']);
- if($mid=='1'){
- unset($v['vod_play_from'],$v['vod_play_server'],$v['vod_play_note'],$v['vod_play_url']);
- unset($v['vod_down_from'],$v['vod_down_server'],$v['vod_down_note'],$v['vod_down_url']);
- $v['detail_link'] = mac_url_vod_detail($v);
- }
- elseif($mid=='2'){
- $v['detail_link'] = mac_url_art_detail($v);
- }
- elseif($mid=='3'){
- $v['detail_link'] = mac_url_topic_detail($v);
- }
- elseif($mid=='8'){
- $v['detail_link'] = mac_url_actor_detail($v);
- }
- elseif($mid=='9'){
- $v['detail_link'] = mac_url_role_detail($v);
- }
- elseif($mid=='11'){
- $v['detail_link'] = mac_url_website_detail($v);
- }
- $v[$pre.'_pic'] = mac_url_img($v[$pre.'_pic']);
- $v[$pre.'_pic_thumb'] = mac_url_img($v[$pre.'_pic_thumb']);
- $v[$pre.'_pic_slide'] = mac_url_img($v[$pre.'_pic_slide']);
- }
- }
- return json($res);
- }
- public function suggest()
- {
- if($GLOBALS['config']['app']['search'] !='1'){
- return json(['code'=>999,'msg'=>lang('suggest_close')]);
- }
- $mid = $this->_param['mid'];
- $wd = $this->_param['wd'];
- $limit = intval($this->_param['limit']);
- if( $wd=='' || !in_array($mid,['1','2','3','8','9','11']) ) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- $mids = [1=>'vod',2=>'art',3=>'topic',8=>'actor',9=>'role',11=>'website'];
- $pre = $mids[$mid];
- if($limit<1){
- $limit = 20;
- }
- $where = [];
- $where[$pre.'_name|'.$pre.'_en'] = ['like','%'.$wd.'%'];
- $order = $pre.'_id desc';
- $field = $pre.'_id as id,'.$pre.'_name as name,'.$pre.'_en as en,'.$pre.'_pic as pic';
- $url = mac_url_search(['wd'=>'mac_wd'],$pre);
- $res = model($pre)->listData($where,$order,1,$limit,0,$field);
- if($res['code']==1) {
- foreach ($res['list'] as $k => $v) {
- $res['list'][$k]['pic'] = mac_url_img($v['pic']);
- }
- }
- $res['url'] = $url;
- return json($res);
- }
- public function desktop()
- {
- $name = $this->_param['name'];
- $url = $this->_param['url'];
- $config = config('maccms.site');
- if(empty($name)){
- $name = $config['site_name'];
- $url = "http://".$config['site_url'];
- }
- if(substr($url,0,4)!="http"){
- $url = "http://".$url;
- }
- $Shortcut = "[InternetShortcut]
- URL=".$url."
- IDList=
- IconIndex=1
- [{000214A0-0000-0000-C000-000000000046}]
- Prop3=19,2";
- header("Content-type: application/octet-stream");
- if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")){
- header("Content-Disposition: attachment; filename=". urlencode($name) .".url;");
- }
- else{
- header("Content-Disposition: attachment; filename=". $name .".url;");
- }
- echo $Shortcut;
- }
- public function hits()
- {
- $id = $this->_param['id'];
- $mid = $this->_param['mid'];
- $type = $this->_param['type'];
- if(empty($id) || !in_array($mid,['1','2','3','8','9','11']) ) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- $pre = mac_get_mid_code($mid);
- $where = [];
- $where[$pre.'_id'] = $id;
- $field = $pre.'_hits,'.$pre.'_hits_day,'.$pre.'_hits_week,'.$pre.'_hits_month,'.$pre.'_time_hits';
- $model = model($pre);
- $res = $model->infoData($where,$field);
- if($res['code']>1) {
- return json($res);
- }
- $info = $res['info'];
- if($type == 'update'){
- //初始化值
- $update[$pre.'_hits'] = $info[$pre.'_hits'];
- $update[$pre.'_hits_day'] = $info[$pre.'_hits_day'];
- $update[$pre.'_hits_week'] = $info[$pre.'_hits_week'];
- $update[$pre.'_hits_month'] = $info[$pre.'_hits_month'];
- $new = getdate();
- $old = getdate($info[$pre.'_time_hits']);
- //月
- if($new['year'] == $old['year'] && $new['mon'] == $old['mon']){
- $update[$pre.'_hits_month'] ++;
- }else{
- $update[$pre.'_hits_month'] = 1;
- }
- //周
- $weekStart = mktime(0,0,0,$new["mon"],$new["mday"],$new["year"]) - ($new["wday"] * 86400);
- $weekEnd = mktime(23,59,59,$new["mon"],$new["mday"],$new["year"]) + ((6 - $new["wday"]) * 86400);
- if($info[$pre.'_time_hits'] >= $weekStart && $info[$pre.'_time_hits'] <= $weekEnd){
- $update[$pre.'_hits_week'] ++;
- }else{
- $update[$pre.'_hits_week'] = 1;
- }
- //日
- if($new['year'] == $old['year'] && $new['mon'] == $old['mon'] && $new['mday'] == $old['mday']){
- $update[$pre.'_hits_day'] ++;
- }else{
- $update[$pre.'_hits_day'] = 1;
- }
- //更新数据库
- $update[$pre.'_hits'] = $update[$pre.'_hits']+1;
- $update[$pre.'_time_hits'] = time();
- $model->where($where)->update($update);
- $data['hits'] = $update[$pre.'_hits'];
- $data['hits_day'] = $update[$pre.'_hits_day'];
- $data['hits_week'] = $update[$pre.'_hits_week'];
- $data['hits_month'] = $update[$pre.'_hits_month'];
- }
- else{
- $data['hits'] = $info[$pre.'_hits'];
- $data['hits_day'] = $info[$pre.'_hits_day'];
- $data['hits_week'] = $info[$pre.'_hits_week'];
- $data['hits_month'] = $info[$pre.'_hits_month'];
- }
- return json(['code'=>1,'msg'=>'ok','data'=>$data]);
- }
- public function referer()
- {
- $url = $this->_param['url'];
- $type = $this->_param['type'];
- $domain = $this->_param['domain'];
- if(empty($url)) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- if(strpos($_SERVER["HTTP_REFERER"],$_SERVER['HTTP_HOST'])===false){
- return json(['code'=>1002,'msg'=>lang('param_err')]);
- }
- if(strpos($url,$domain)===false){
- return json(['code'=>1003,'msg'=>lang('param_err')]);
- }
- $pre = 'website';
- $where=[];
- $where[$pre.'_jumpurl'] = ['like', ['http://'.$domain.'%','https://'.$domain.'%'],'OR'];
- $model = model($pre);
- $field = $pre.'_referer,'.$pre.'_referer_day,'.$pre.'_referer_week,'.$pre.'_referer_month,'.$pre.'_time_referer';
- $res = $model->infoData($where,$field);
- if($res['code']>1){
- return json($res);
- }
- $info = $res['info'];
- $id = $info[$pre.'_id'];
- //来路访问记录验证
- $res = model('Website')->visit($this->_param);
- if($res['code']>1){
- return json($res);
- }
- if($type == 'update'){
- //初始化值
- $update[$pre.'_referer'] = $info[$pre.'_referer'];
- $update[$pre.'_referer_day'] = $info[$pre.'_referer_day'];
- $update[$pre.'_referer_week'] = $info[$pre.'_referer_week'];
- $update[$pre.'_referer_month'] = $info[$pre.'_referer_month'];
- $new = getdate();
- $old = getdate($info[$pre.'_time_referer']);
- //月
- if($new['year'] == $old['year'] && $new['mon'] == $old['mon']){
- $update[$pre.'_referer_month'] ++;
- }else{
- $update[$pre.'_referer_month'] = 1;
- }
- //周
- $weekStart = mktime(0,0,0,$new["mon"],$new["mday"],$new["year"]) - ($new["wday"] * 86400);
- $weekEnd = mktime(23,59,59,$new["mon"],$new["mday"],$new["year"]) + ((6 - $new["wday"]) * 86400);
- if($info[$pre.'_time_referer'] >= $weekStart && $info[$pre.'_time_referer'] <= $weekEnd){
- $update[$pre.'_referer_week'] ++;
- }else{
- $update[$pre.'_referer_week'] = 1;
- }
- //日
- if($new['year'] == $old['year'] && $new['mon'] == $old['mon'] && $new['mday'] == $old['mday']){
- $update[$pre.'_referer_day'] ++;
- }else{
- $update[$pre.'_referer_day'] = 1;
- }
- //更新数据库
- $update[$pre.'_referer'] = $update[$pre.'_referer']+1;
- $update[$pre.'_time_referer'] = time();
- $model->where($where)->update($update);
- $data['referer'] = $update[$pre.'_referer'];
- $data['referer_day'] = $update[$pre.'_referer_day'];
- $data['referer_week'] = $update[$pre.'_referer_week'];
- $data['referer_month'] = $update[$pre.'_referer_month'];
- }
- else{
- $data['referer'] = $info[$pre.'_referer'];
- $data['referer_day'] = $info[$pre.'_referer_day'];
- $data['referer_week'] = $info[$pre.'_referer_week'];
- $data['referer_month'] = $info[$pre.'_referer_month'];
- }
- return json(['code'=>1,'msg'=>'ok','data'=>$data]);
- }
- public function digg()
- {
- $id = $this->_param['id'];
- $mid = $this->_param['mid'];
- $type = $this->_param['type'];
- if(empty($id) || !in_array($mid,['1','2','3','4','8','9','11']) ) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- $pre = mac_get_mid_code($mid);
- $where = [];
- $where[$pre.'_id'] = $id;
- $field = $pre.'_up,'.$pre.'_down';
- $model = model($pre);
- if($type) {
- $cookie = $pre . '-digg-' . $id;
- if(!empty(cookie($cookie))){
- return json(['code'=>1002,'msg'=>lang('index/haved')]);
- }
- if ($type == 'up') {
- $model->where($where)->setInc($pre.'_up');
- cookie($cookie, 't', 30);
- } elseif ($type == 'down') {
- $model->where($where)->setInc($pre.'_down');
- cookie($cookie, 't', 30);
- }
- }
- $res = $model->infoData($where,$field);
- if($res['code']>1) {
- return json($res);
- }
- $info = $res['info'];
- if ($info) {
- $data['up'] = $info[$pre.'_up'];
- $data['down'] = $info[$pre.'_down'];
- }
- else{
- $data['up'] = 0;
- $data['down'] = 0;
- }
- return json(['code'=>1,'msg'=>'ok','data'=>$data]);
- }
- public function score()
- {
- $id = $this->_param['id'];
- $mid = $this->_param['mid'];
- $score = $this->_param['score'];
- if(empty($id) || !in_array($mid,['1','2','3','8','9','11']) ) {
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- $pre = mac_get_mid_code($mid);
- $where = [];
- $where[$pre.'_id'] = $id;
- $field = $pre.'_score,'.$pre.'_score_num,'.$pre.'_score_all';
- $model = model($pre);
- $res = $model->infoData($where,$field);
- if($res['code']>1) {
- return json($res);
- }
- $info = $res['info'];
- if ($info) {
- if($score){
- $cookie = $pre.'-score-'.$id;
- if(!empty(cookie($cookie))){
- return json(['code'=>1002,'msg'=>lang('index/haved')]);
- }
- $update=[];
- $update[$pre.'_score_num'] = $info[$pre.'_score_num']+1;
- $update[$pre.'_score_all'] = $info[$pre.'_score_all']+$score;
- $update[$pre.'_score'] = number_format( $update[$pre.'_score_all'] / $update[$pre.'_score_num'] ,1,'.','');
- $model->where($where)->update($update);
- $data['score'] = $update[$pre.'_score'];
- $data['score_num'] = $update[$pre.'_score_num'];
- $data['score_all'] = $update[$pre.'_score_all'];
- cookie($cookie,'t',30);
- }
- else{
- $data['score'] = $info[$pre.'_score'];
- $data['score_num'] = $info[$pre.'_score_num'];
- $data['score_all'] = $info[$pre.'_score_all'];
- }
- }else{
- $data['score'] = 0.0;
- $data['score_num'] = 0;
- $data['score_all'] = 0;
- }
- return json(['code'=>1,'msg'=>lang('score_ok'),'data'=>$data]);
- }
- public function pwd()
- {
- $mid = $this->_param['mid'];
- $id = $this->_param['id'];
- $type = $this->_param['type'];
- $pwd = input('param.pwd');
- if( empty($id) || empty($pwd) || !in_array($mid,['1','2']) || !in_array($type,['1','4','5'])){
- return json(['code'=>1001,'msg'=>lang('param_err')]);
- }
- $key = $mid.'-'.$type.'-'.$id;
- if(session($key)=='1'){
- return json(['code'=>1002,'msg'=>lang('index/pwd_repeat')]);
- }
- if ( mac_get_time_span("last_pwd") < 5){
- return json(['code'=>1003,'msg'=>lang('index/pwd_frequently')]);
- }
- if($mid=='1'){
- $where=[];
- $where['vod_id'] = ['eq',$id];
- $info = model('Vod')->infoData($where);
- if($info['code'] >1){
- return json(['code'=>1011,'msg'=>$info['msg']]);
- }
- if($type=='1'){
- if($info['info']['vod_pwd'] != $pwd){
- return json(['code'=>1012,'msg'=>lang('pass_err')]);
- }
- }
- elseif($type=='4'){
- if($info['info']['vod_pwd_play'] != $pwd){
- return json(['code'=>1013,'msg'=>lang('pass_err')]);
- }
- }
- elseif($type=='5'){
- if($info['info']['vod_pwd_down'] != $pwd){
- return json(['code'=>1014,'msg'=>lang('pass_err')]);
- }
- }
- }
- else{
- $where=[];
- $where['art_id'] = ['eq',$id];
- $info = model('Art')->infoData($where);
- if($info['code'] >1){
- return json(['code'=>1021,'msg'=>$info['msg']]);
- }
- if($info['info']['art_pwd'] != $pwd){
- return json(['code'=>1022,'msg'=>lang('pass_err')]);
- }
- }
- session($key,'1');
- return json(['code'=>1,'msg'=>'ok']);
- }
- public function verify_check()
- {
- $param = input();
- if(!in_array($param['type'],['search','show'])){
- return ['code' => 1001, 'msg' => lang('param_err')];
- }
- if (!captcha_check($param['verify'])){
- return ['code' => 1002, 'msg' => lang('verify_err')];
- }
- session($param['type'].'_verify','1');
- return json(['code'=>1,'msg'=>lang('ok')]);
- }
- }
|