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.

226 lines
6.2 KiB
PHTML

5 years ago
<?php
namespace Mobile\Event;
use Think\Controller;
/**
* 事件控制器
*/
class DocumentEvent extends BaseEvent {
public function lists($p = 0,$extend = array(),$flag = false) {
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
//获取模型信息
$model = M('Model')->getByName("Document");
$model || $this->error('模型不存在!');
$prefix = $model['prefix']?$model['prefix']:C("DB_PREFIX");
$dbFields = M($model['name'],$prefix)->getDbFields();
$fields = !empty($extend) && !empty($extend['fields']) ?$extend['fields']:array();
if ($fields) {
foreach ($fields as $k => $v) {
if (!array_search($v,$dbFields)) {
unset($fields[$k]);
}
}
$fields = array_unique(array_merge($fields,$dbFields));
} else {
$fields = $dbFields;
}
// 条件搜索
$map = !empty($extend) && !empty($extend['map']) ?$extend['map']:array();
unset($_REQUEST['name']);
unset($_REQUEST['id']);
foreach($_REQUEST as $name=>$val){
if(in_array($name,$fields)){
$map[$name] = array('like', '%'.$val.'%');
}
}
$row = !empty($extend) && !empty($extend['num']) ? $extend['num']:10;
$name = parse_name(get_table_name($model['id']), true);
$entity = M($name,$prefix);
$data = $entity
->field(empty($fields) ? true : $fields)
->where($map)
->order(empty($extend['order'])?"id desc":$extend['order'])
->page($page, $row)
->select();
if ($flag) {
$count = $entity->where($map)->count();
$total = intval(ceil($count/$row));
$this->assign('total',$total);
}
$this->assign('model', $model);
return $data;
}
public function news_lists($name='',$id='',$p=0,$flag = false) {
if (empty($id)) {return '';}
$category = $this->category('media_'.$name);
$cate = D("Category")->getChildrenId($category['id'],true);
$map = array(
'map' => array(
'status' => 1,
'display' => 1,
'category_id'=> array('in',$cate),
'game_id' => $id,
),
'num' => 10
);
$lists = $this->lists($p,$map,$flag);
foreach ($lists as $k => $v) {
$lists[$k]['datetime'] = date('Y-m-d H:i:s',$v['update_time']);
}
return $lists;
}
public function special_lists($name='',$p=0,$flag = false) {
$category = $this->category('media_'.$name);
$cate = D("Category")->getChildrenId($category['id'],true);
$map = array(
'map' => array(
'status' => 1,
'display' => 1,
'category_id'=> array('in',$cate),
'game_id' => array('neq',''),
),
'num' => 10
);
$lists = $this->lists($p,$map,$flag);
foreach ($lists as $k => $v) {
$lists[$k]['datetime'] = date('Y-m-d H:i:s',$v['update_time']);
$lists[$k]['picrul'] = get_cover($v['cover_id'],'path');
}
return $lists;
}
public function news_detail($name='',$id='') {
if(!($id && is_numeric($id))){
$this->error('文档ID错误');
}
$Document = D('Document');
$data = $Document->detail($id);
if(!$data){
$this->error($Document->getError());
}
$category = $this->category($data['category_id']);
$map = array('id' => $id);
$Document->where($map)->setInc('view');
if ($data['tag'])
$data['taga']=explode(',',$data['tag']);
if ($data['taga']) {
foreach ($data['taga'] as $v) {
$where .= " d.title like '%$v%' or d.tag like '%$v%' or";
}
$where = 'and ( '.substr($where,0,-2).")";
$model = array(
'field' => "d.id,d.title,d.category_id,c.name,c.title as ctitle,d.game_id",
'where' => "d.status=1 and d.display=1 and d.id <> ".$data['id']." $where and c.name like 'media_%'",
);
$this->assign('article',D('Document')->multiple($model,5,true));
}
$game_name = get_game_name($data['game_id']);
$arr = array('news' => '游戏新闻','video'=>'游戏视频','strategy'=>'游戏攻略','activity'=>'游戏活动');
$category['subtitle'] = $arr[$name];
$category['game_name'] = $game_name;
$category['title'] = $game_name.'专区';
$category['url'] = U('Game/detail?id='.$data['game_id']);
$scate = D("Category")->getChildrenInfo(50);
shuffle($scate);
array_splice($scate,3);
$category['scate'] = $scate;
$this->assign('category', $category);
$this->assign('data', $data);
$this->assign('name', $name);
return ;
}
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('分类不存在或被禁用!');
}
}
}