|
|
|
|
<?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('分类不存在或被禁用!');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|