You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

387 lines
12 KiB
PHTML

5 years ago
<?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;
}
}