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