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.

232 lines
6.7 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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 Home\Controller;
use mysql_xdevapi\Exception;
/**
* 文档模型控制器
* 文档模型列表和详情
*/
class ArticleController extends HomeController {
/* 文档模型频道页 */
public function index(){
/* 分类信息 */
$category = $this->category();
//频道页只显示模板,默认不读取任何内容
//内容可以通过模板标签自行定制
/* 模板赋值并渲染模板 */
$this->assign('category', $category);
$this->display($category['template_index']);
}
/* 文档模型列表页 */
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 game_list($p=0){
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$row = 25;
$game = M('Game','tab_');
$map['game_status']=1;
empty($_REQUEST['gt']) || $map['game_type_id']=$_REQUEST['gt'];
empty($_REQUEST['dt']) || $map['sdk_version']=$_REQUEST['dt'];
$data = $game->where($map)->order('sort desc,id desc')->page($page,$row)->select();
$count = $game->where($map)->count();
//分页
if($count > $row){
$page = new \Think\Page($count, $row);
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$this->assign('_page', $page->show());
}
$this->assign('count', $count);
$this->assign('list_data', $data);
$this->display();
}
/* 文档模型详情页 */
public function detail($id = 0, $p = 1){
/* 标识正确性检测 */
if(!($id && is_numeric($id))){
$this->error('文档ID错误');
}
$field = 'id as document_id,category_id';
$decumentData = M('document')->field($field)->where("id={$id}")->find();
$promote_id = get_pid();
if(empty($promote_id)) {
$promote_id = 0;
}
foreach ($decumentData as $key => $value) {
$decumentData['promote_id'] = $promote_id;
$decumentData['create_time'] = time();
}
M('document_read')->startTrans(); //事物
try {
$haveRead = M('document_read')->where("document_id={$id} and promote_id={$promote_id}")->find();
if (!$haveRead) {
M('document_read')->add($decumentData);
}
} catch (Exception $e) {
M('document_read')->rollback();//回滚
}
M('document_read')->commit(); //提交事物
/* 页码检测 */
$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');
/* 模板赋值并渲染模板 */
$this->assign('category', $category);
$this->assign('info', $info);
$this->assign('page', $p); //页码
$this->display($tmpl);
}
public function more_lists($type='gg',$p=1){
/* 分类信息 */
if($type=='gg'){
$category = $this->category('tui_gg');//公告
}else{
$category = $this->category('tui_zx');//资讯公告
}
/* 获取当前分类列表 */
$Document = D('Document');
$list = $Document->page($p, $category['list_row'])->lists($category['id'],'level desc,id desc');
if(false === $list){
$this->error('获取列表数据失败!');
}
$count = $Document->listCount($category['id']);
$row = $category['list_row']?$category['list_row']:10;
if($count > $row){
$page = new \Think\Page($count, $row);
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$this->assign('_page', $page->show());
}
/* 模板赋值并渲染模板 */
$this->assign('category', $category);
$this->assign('list', $list);
if(!empty($list)){//联盟公告
$Document = D('Document');
$info = $Document->detail($list[0]['id']);
if(!$info){
$this->error($Document->getError());
}
}
$this->assign('info',$info);
$this->display($category['template_lists']);
}
/* 文档模型详情页 */
public function detail_ajax($id = 0, $p = 1){
/* 标识正确性检测 */
if(!($id && is_numeric($id))){
$this->ajaxReturn(array('status'=>0,'msg'=>'文档ID错误'));
}
/* 页码检测 */
$p = intval($p);
$p = empty($p) ? 1 : $p;
/* 获取详细信息 */
$Document = D('Document');
$info = $Document->detail($id);
if(!$info){
$this->ajaxReturn(array('status'=>0,'msg'=>$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');
$info['update_time'] = set_show_time($info['update_time']);
$this->ajaxReturn(array('status'=>1,'msg'=>$info));
}
/* 文档分类检测 */
private function category($id = 0){
/* 标识正确性检测 */
$id = $id ? $id : I('get.category', 0);
if(empty($id)){
$this->error('没有指定文档分类!');
}
/* 获取分类信息 */
$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('分类不存在或被禁用!');
}
}
}