<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------

namespace Media\Controller;
/**
 * 文档模型控制器
 * 文档模型列表和详情
 */
class ArticleController extends HomeController {
	protected function _initialize(){
        /* 读取站点配置 */
        $config = api('Config/lists');
        C($config); //添加配置
    }
    /* 文档模型频道页 */
	public function index($p=1){
		
		/* 分类信息 */
		$category = $this->category();
        $this->hot();
		//频道页只显示模板,默认不读取任何内容
		//内容可以通过模板标签自行定制


        $sc=new IndexController();
		$sc->newgame(3,'dow_num desc');
		$adv = M("Adv","tab_");
        $map['status'] = 1;
        $map['pos_id'] = $pos_id; #首页轮播图广告id
        $map['start_time']=array(array('lt',time()),array('eq',0), 'or') ;
        $map['end_time']=array(array('gt',time()),array('eq',0), 'or') ;
        $map['pos_id']=5;
        $carousel = $adv->where($map)->order('sort desc')->select();

        $gift_limit = empty($carousel)?10:6;
		/* 模板赋值并渲染模板 */
		$gift=new GameController();
		$gift_list=get_gift_list('all','',DISPLAY_SITE);
		if(count($gift_list)<$gift_limit){
			$limit=count($gift_list);
		}else{
			$limit=$gift_limit;
		}

        $gift_keys=array_rand($gift_list,$limit);
        // 当只有一个数数组对象时  返回0 
		if( $gift_keys != 0){
	        foreach ($gift_keys as $val) {
	            $gift_like[]=$gift_list[$val];
	        }
		}else{
			$gift_like= $gift_list;
		}
		
		$this->assign('gift_like', $gift_like);
		$this->assign('carousel', $carousel);
		$this->assign('category', $category);
		

		$documentmodel= D('Document');
		$categorymodel= D('Category');
		
		$row = 5;
		
		$cate= $categorymodel->getChildrenId($category['id'],array('media_activity','media_new','media_gg'));
		
		$list = $documentmodel->lists2($cate,$p,$row,'`id` DESC, `level` DESC');
		$data = $list['list'];				
		$count = $list['count'];				
	

		
		if($count > $row){
			$page = new \Think\Page($count, $row);
			$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% ');
			$this->assign('_page', $page->show());
		}
		
		$this->assign("count",$count);
		$this->assign('list', $data);
		
		$this->display($category['template_index']);
	}
	 /***
	*热门游戏
    */
    public function hot(){
    	$model = array(
            'm_name'=>'Game',
            'prefix'=>'tab_',
            'map'   =>array('game_status'=>1,'recommend_status'=>2,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
            'field' =>'*,min(id) as id,@counter:=@counter+1 AS Rank',
            'order' =>"sort desc,id desc",
            'group' =>'relation_game_id',
            'limit' =>9,
        );
    	$hot = $this->list_data($model);
        $hot=game_merge($hot,$model['map']);
    	$this->assign('hot',$hot);
    }

	/* 文档模型列表页 */
	public function lists($p = 1){
		/* 分类信息 */
		$category = $this->category();

		/* 获取当前分类列表 */
		$Document = D('Document');
		$list = $Document->page($p, $category['list_row'])->lists($category['id']);
		if(false === $list){
			$this->error('获取列表数据失败!');
		}

		/* 模板赋值并渲染模板 */
		$this->assign('category', $category);
		$this->assign('list', $list);
		$this->display($category['template_lists']);
	}

	public function news($type='') {
        if (empty($type)) {return;}
        $name = 'media_'.$type;
        $news = M("Document")->field("d.id")->table("__DOCUMENT__ as d")
            ->join("__CATEGORY__ as c on(c.id=d.category_id and c.name='$name')",'right')
            ->where("d.status>0 and d.display=1")->find();
        $this->detail($news['id']);
    }

	/* 文档模型详情页 */
	public function detail($id = 0, $p = 1){
		/* 标识正确性检测 */
		if(!($id && is_numeric($id))){
			$this->error('文档ID错误!');
		}

		/* 页码检测 */
		$p = intval($p);
		$p = empty($p) ? 1 : $p;

		/* 获取详细信息 */
		$Document = D('Document');
		$info = $Document->detail($id);
		if(!$info){
			$this->error($Document->getError());
		}

		/* 分类信息 */
		$category = $this->category($info['category_id']);

		/* 获取模板 */
		if(!empty($info['template'])){//已定制模板
			$tmpl = $info['template'];
		} elseif (!empty($category['template_detail'])){ //分类已定制模板
			$tmpl = $category['template_detail'];
		} else { //使用默认模板
			$tmpl = 'Article/'. get_document_model($info['model_id'],'name') .'/detail';
		}

		/* 更新浏览数 */
		$map = array('id' => $id);
		$Document->where($map)->setInc('view');
		/* 模板赋值并渲染模板 */
		$map['id']=array('lt',$info['id']);
		$map['status']=1;
		$map['display']=1;
		$map['deadline']=array(array('gt',time()),array('eq',0), 'or') ;
		$map['category_id']=$info['category_id'];
		$data=M('document')->where($map)->order('id desc')->find();
		if(!$data){
            unset($map['id']);
			$map['status']=1;
			$map['display']=1;
			$map['deadline']=array(array('gt',time()),array('eq',0), 'or') ;
			$data=M('document')->where($map)->order('id desc')->find();
			$data['datatype']=1;
		}else{
			$data['datatype']=1;
		}
		$gift=new GameController();
		$gift_list=get_gift_list('all','',DISPLAY_SITE);
		if(count($gift_list) < 10){
			$limit=count($gift_list);
		}else{
			$limit=10;
		}
        $gift_keys=array_rand($gift_list,$limit);
        // 当只有一个数数组对象时  返回0 
		if( $gift_keys != 0){
	        foreach ($gift_keys as $val) {
	            $gift_like[]=$gift_list[$val];
	        }
		}else{
			$gift_like= $gift_list;
		}

		$sc=new IndexController();
		$sc->newgame(3,'dow_num desc');
		$adv = M("Adv","tab_");
        $map['status'] = 1;
        $map['pos_id'] = $pos_id; #首页轮播图广告id
        $map['start_time']=array(array('lt',time()),array('eq',0), 'or') ;
        $map['end_time']=array(array('gt',time()),array('eq',0), 'or') ;
        $map['pos_id']=5;
        $carousel = $adv->where($map)->order('sort desc')->select();
        $this->hot();
		$this->assign('gift_like', $gift_like);
		$this->assign('carousel', $carousel);
		$this->assign('category', $category);
		$this->assign('info', $info);
		$this->assign('data', $data);
		$this->assign('page', $p); //页码
		$this->display($tmpl);
	}

	public function news1($type='') {
        if (empty($type)) {return;}
        $name = 'media_'.$type;
        $news = M("Document")->field("d.id")->table("__DOCUMENT__ as d")
            ->join("__CATEGORY__ as c on(c.id=d.category_id and c.name='$name')",'right')
            ->where("d.status>0 and d.display=1")->find();
        $this->detail1($news['id']);
    }

	/* 文档模型详情页 */
	public function detail1($id = 0, $p = 1){
		/* 标识正确性检测 */
		if(!($id && is_numeric($id))){
			$this->error('文档ID错误!');
		}

		/* 页码检测 */
		$p = intval($p);
		$p = empty($p) ? 1 : $p;

		/* 获取详细信息 */
		$Document = D('Document');
		$info = $Document->detail($id);
		if(!$info){
			$this->error($Document->getError());
		}

		/* 分类信息 */
		$category = $this->category($info['category_id']);

		/* 获取模板 */
		if(!empty($info['template'])){//已定制模板
			$tmpl = $info['template'];
		} elseif (!empty($category['template_detail'])){ //分类已定制模板
			$tmpl = $category['template_detail'];
		} else { //使用默认模板
			$tmpl = 'Article/'. get_document_model($info['model_id'],'name') .'/detail1';
		}

		/* 更新浏览数 */
		$map = array('id' => $id);
		$Document->where($map)->setInc('view');
		/* 模板赋值并渲染模板 */
		$map['id']=array('gt',$info['id']);
		$map['status']=1;
		$map['display']=1;
		$map['deadline']=array(array('gt',time()),array('eq',0), 'or') ;
		$data=M('document')->where($map)->order('id asc')->find();
		if(!$data){
			$map['id']=array('lt',$info['id']);
			$map['status']=1;
			$map['display']=1;
			$map['deadline']=array(array('gt',time()),array('eq',0), 'or') ;
			$data=M('document')->where($map)->order('id asc')->find();
			$data['datatype']=0;
		}else{
			$data['datatype']=1;

		}
		$gift=new GameController();
		$gift_list=get_gift_list('all');
		if(count($gift_list)<6){
			$limit=count($gift_list);
		}else{
			$limit=6;
		}
        $gift_keys=array_rand($gift_list,$limit);
        foreach ($gift_keys as $val) {
            $gift_like[]=$gift_list[$val];
        }
		$sc=new IndexController();
		$sc->newgame(3,'dow_num desc');
		$adv = M("Adv","tab_");
        $map['status'] = 1;
        $map['pos_id'] = $pos_id; #首页轮播图广告id
        $map['start_time']=array(array('lt',time()),array('eq',0), 'or') ;
        $map['end_time']=array(array('gt',time()),array('eq',0), 'or') ;
        $map['pos_id']=5;
        $carousel = $adv->where($map)->order('sort desc')->select();
		$this->assign('info', $info);
		$this->assign('data', $data);
		$this->assign('page', $p); //页码
		$this->assign('mate_title',$info['title']);
		
		$this->display($tmpl);
	}
	/* 文档模型详情页 */
	public function supervise(){
		$category=D('category')->where(array('name'=>'media_supervise'))->find();
		$map['status']=1;
		$map['category_id']=$category['id'];
		$map['display']=1;
		$map['deadline']=array(array('gt',time()),array('eq',0), 'or') ;
        $docu=D('document')->where($map)->find();
    	$document_article=D('document_article')->where(array('id'=>$docu['id']))->find();
		$gift=new GameController();
		$gift_list=get_gift_list('all');
		if(count($gift_list)<6){
			$limit=count($gift_list);
		}else{
			$limit=6;
		}
        $gift_keys=array_rand($gift_list,$limit);
        foreach ($gift_keys as $val) {
            $gift_like[]=$gift_list[$val];
        }
		$sc=new IndexController();
		$sc->newgame(3,'dow_num desc');
		$adv = M("Adv","tab_");
        $map['status'] = 1;
        $map['pos_id'] = $pos_id; #首页轮播图广告id
        $map['start_time']=array(array('lt',time()),array('eq',0), 'or') ;
        $map['end_time']=array(array('gt',time()),array('eq',0), 'or') ;
        $map['pos_id']=5;
        $carousel = $adv->where($map)->order('sort desc')->select();
		$this->assign('gift_like', $gift_like);
		$this->assign('carousel', $carousel);
		$this->assign('article',$document_article['content']); 
    	$this->assign('docu',$docu); 
		$this->display();
	}

	/* 文档分类检测 */
	private function category($id = 0){
		/* 标识正确性检测 */
		$id = $id ? $id : I('get.category', 0);
		if(empty($id)){
			$this->error('没有指定文档分类!'.$id);
		}

		/* 获取分类信息 */
		$category = D('Category')->info($id);
		if($category && 1 == $category['status']){
			switch ($category['display']) {
				case 0:
					$this->error('该分类禁止显示!');
					break;
				//TODO: 更多分类显示状态判断
				default:
					return $category;
			}
		} else {
			$this->error('分类不存在或被禁用!');
		}
	}
    
    public function agreement() {
    	$category=D('category')->where(array('name'=>'agreement'))->find();
        $docu=D('document')->where(array('category_id'=>$category['id'],'status'=>1))->find();
    	$document_article=D('document_article')->where(array('id'=>$docu['id']))->find();
    	$this->assign('article',$document_article['content']); 
        $this->display();
    }
    protected function list_data($model){
		$game  = M($model['m_name'],$model['prefix']);
		$map = $model['map'];
		$data  = $game
		->field($model['field'])
		->limit($model['limit'])
		->where($map)
		->group($model['group'])
		->order($model['order'])
		->select();
		return $data;
	}
}