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.

898 lines
34 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 Admin\Controller;
/**
* 模型数据管理控制器
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class ThinkController extends AdminController {
/**
* 显示指定模型列表数据
* @param String $model 模型标识
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function lists($model = null, $p = 0,$extend_map = array()){
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
//获取模型信息
$model = M('Model')->getByName($model);
$model || $this->error('模型不存在!');
//解析列表规则
$fields = array();
$grids = preg_split('/[;\r\n]+/s', trim($model['list_grid']));
foreach ($grids as &$value) {
if(trim($value) === ''){
continue;
}
// 字段:标题:链接
$val = explode(':', $value);
// 支持多个字段显示
$field = explode(',', $val[0]);
$value = array('field' => $field, 'title' => $val[1]);
if(isset($val[2])){
// 链接信息
$value['href'] = $val[2];
// 搜索链接信息中的字段信息
preg_replace_callback('/\[([a-z_]+)\]/', function($match) use(&$fields){$fields[]=$match[1];}, $value['href']);
}
if(strpos($val[1],'|')){
// 显示格式定义
list($value['title'],$value['format']) = explode('|',$val[1]);
}
foreach($field as $val){
$array = explode('|',$val);
$fields[] = $array[0];
}
}
// 过滤重复字段信息
$fields = array_unique($fields);
// 关键字搜索
$map = $extend_map;
$key = $model['search_key']?$model['search_key']:'title';
if(isset($_REQUEST[$key])){
$map[$key] = array('like','%'.$_GET[$key].'%');
unset($_REQUEST[$key]);
}
// 条件搜索
foreach($_REQUEST as $name=>$val){
if(in_array($name,$fields)){
$map[$name] = $val;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
if($model['extend']){
$name = get_table_name($model['id']);
$parent = get_table_name($model['extend']);
$fix = C("DB_PREFIX");
$key = array_search('id', $fields);
if(false === $key){
array_push($fields, "{$fix}{$parent}.id as id");
} else {
$fields[$key] = "{$fix}{$parent}.id as id";
}
/* 查询记录数 */
$count = D($parent)->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")->where($map)->count();
// 查询数据
$data = D($parent)
->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order("{$fix}{$parent}.id DESC")
/* 数据分页 */
->page($page, $row)
/* 执行查询 */
->select();
} else {
if($model['need_pk']){
in_array('id', $fields) || array_push($fields, 'id');
}
$name = parse_name(get_table_name($model['id']), true);
$data = D($name)
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order(empty($map['order'])?"id desc":$map['order'])
/* 数据分页 */
->page($page, $row)
/* 执行查询 */
->select();
/* 查询记录总数 */
$count = D($name)->where($map)->count();
}
//分页
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$data = $this->parseDocumentList($data,$model['id']);
if(isset($extend_map['for_show_pic_list'])){
if($extend_map['for_show_pic_list']=='icon'){
foreach ($data as $key => $value) {
$data[$key]['pic_path']=get_cover($value['icon'],'path');
}
}
}
$this->assign('model', $model);
$this->assign('list_grids', $grids);
$this->assign('list_data', $data);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
/**
* [数组分页,二维数组字段排序]
* @param [type] $model [description]
* @param integer $p [description]
* @param array $extend_map [description]
* @return [type] [description]
* @author [yyh] <[email address]>
*/
public function order_lists($model = null, $p = 0,$extend_map = array()){
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$arraypage = $page; //默认显示第一页数据
//获取模型信息
$model = M('Model')->getByName($model);
$model || $this->error('模型不存在!');
//解析列表规则
$fields = array();
$grids = preg_split('/[;\r\n]+/s', trim($model['list_grid']));
foreach ($grids as &$value) {
if(trim($value) === ''){
continue;
}
// 字段:标题:链接
$val = explode(':', $value);
// 支持多个字段显示
$field = explode(',', $val[0]);
$value = array('field' => $field, 'title' => $val[1]);
if(isset($val[2])){
// 链接信息
$value['href'] = $val[2];
// 搜索链接信息中的字段信息
preg_replace_callback('/\[([a-z_]+)\]/', function($match) use(&$fields){$fields[]=$match[1];}, $value['href']);
}
if(strpos($val[1],'|')){
// 显示格式定义
list($value['title'],$value['format']) = explode('|',$val[1]);
}
foreach($field as $val){
$array = explode('|',$val);
$fields[] = $array[0];
}
}
// 过滤重复字段信息
$fields = array_unique($fields);
// 关键字搜索
$map = $extend_map;
$key = $model['search_key']?$model['search_key']:'title';
if(isset($_REQUEST[$key])){
$map[$key] = array('like','%'.$_GET[$key].'%');
unset($_REQUEST[$key]);
}
// 条件搜索
foreach($_REQUEST as $name=>$val){
if(in_array($name,$fields)){
$map[$name] = $val;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
if($model['extend']){
$name = get_table_name($model['id']);
$parent = get_table_name($model['extend']);
$fix = C("DB_PREFIX");
$key = array_search('id', $fields);
if(false === $key){
array_push($fields, "{$fix}{$parent}.id as id");
} else {
$fields[$key] = "{$fix}{$parent}.id as id";
}
/* 查询记录数 */
$count = D($parent)->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")->where($map)->count();
// 查询数据
$data = D($parent)
->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order("{$fix}{$parent}.id DESC")
/* 数据分页 */
// ->page($page, $row) 需要查询所有数据 后面用数组分页,原因: 页面要排序
/* 执行查询 */
->select();
} else {
if($model['need_pk']){
in_array('id', $fields) || array_push($fields, 'id');
}
$name = parse_name(get_table_name($model['id']), true);
$data = D($name)
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order(empty($map['order'])?"id desc":$map['order'])
/* 数据分页 */
// ->page($page, $row)//需要查询所有数据 后面用数组分页,原因: 页面要排序
/* 执行查询 */
->select();
/* 查询记录总数 */
$count = count($data);
}
//分页
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$data = $this->parseDocumentList($data,$model['id']);
if(isset($extend_map['for_show_pic_list'])){
if($extend_map['for_show_pic_list']=='icon'){
foreach ($data as $key => $value) {
$data[$key]['pic_path']=get_cover($value['icon'],'path');
}
}
if($extend_map['for_show_pic_list']=='novice'){
foreach ($data as $key => $value) {
$data[$key]['novice']=arr_count($value['novice']);
}
}
}
if($_REQUEST['data_order']!=''){
$data_order=reset(explode(',',$_REQUEST['data_order']));
$data_order_type=end(explode(',',$_REQUEST['data_order']));
$this->assign('userarpu_order',$data_order);
$this->assign('userarpu_order_type',$data_order_type);
}
$data=my_sort($data,$data_order_type,(int)$data_order);
$size=$row;//每页显示的记录数
$pnum = ceil(count($data) / $size); //总页数ceil()函数用于求大于数字的最小整数
//用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度)
$data = array_slice($data, ($arraypage-1)*$size, $size);
$this->assign('model', $model);
$this->assign('list_grids', $grids);
$this->assign('list_data', $data);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
/**
* [数组分页,二维数组字段排序]
* @param [type] $model [description]
* @param integer $p [description]
* @param array $extend_map [description]
* @return [type] [description]
* @author [yyh] <[email address]>
*/
public function order_lists2($model = null, $p = 0,$extend_map = array()){
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$arraypage = $page; //默认显示第一页数据
//获取模型信息
$model = M('Model')->getByName($model);
$model || $this->error('模型不存在!');
//解析列表规则
$fields = array();
$grids = preg_split('/[;\r\n]+/s', trim($model['list_grid']));
foreach ($grids as &$value) {
if(trim($value) === ''){
continue;
}
// 字段:标题:链接
$val = explode(':', $value);
// 支持多个字段显示
$field = explode(',', $val[0]);
$value = array('field' => $field, 'title' => $val[1]);
if(isset($val[2])){
// 链接信息
$value['href'] = $val[2];
// 搜索链接信息中的字段信息
preg_replace_callback('/\[([a-z_]+)\]/', function($match) use(&$fields){$fields[]=$match[1];}, $value['href']);
}
if(strpos($val[1],'|')){
// 显示格式定义
list($value['title'],$value['format']) = explode('|',$val[1]);
}
foreach($field as $val){
$array = explode('|',$val);
$fields[] = $array[0];
}
}
// 过滤重复字段信息
$fields = array_unique($fields);
// 关键字搜索
$map = $extend_map['where'];
$key = $model['search_key']?$model['search_key']:'title';
if(isset($_REQUEST[$key])){
$map[$key] = array('like','%'.$_GET[$key].'%');
unset($_REQUEST[$key]);
}
// 条件搜索
foreach($_REQUEST as $name=>$val){
if(in_array($name,$fields)){
$map[$name] = $val;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
if($model['extend']){
$name = get_table_name($model['id']);
$parent = get_table_name($model['extend']);
$fix = C("DB_PREFIX");
$key = array_search('id', $fields);
if(false === $key){
array_push($fields, "{$fix}{$parent}.id as id");
} else {
$fields[$key] = "{$fix}{$parent}.id as id";
}
/* 查询记录数 */
$count = D($parent)->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")->where($map)->count();
// 查询数据
$data = D($parent)
->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order("{$fix}{$parent}.id DESC")
/* 数据分页 */
// ->page($page, $row) 需要查询所有数据 后面用数组分页,原因: 页面要排序
/* 执行查询 */
->select();
} else {
if($model['need_pk']){
in_array('id', $fields) || array_push($fields, 'id');
}
$name = parse_name(get_table_name($model['id']), true);
$data = D($name)
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order(empty($extend_map['order'])?"id desc":$extend_map['order'])
/* 数据分页 */
// ->page($page, $row)//需要查询所有数据 后面用数组分页,原因: 页面要排序
/* 执行查询 */
->select();
/* 查询记录总数 */
$count = count($data);
}
//分页
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$data = $this->parseDocumentList($data,$model['id']);
if(isset($extend_map['where']['for_show_pic_list'])){
if($extend_map['where']['for_show_pic_list']=='icon'){
foreach ($data as $key => $value) {
$data[$key]['pic_path']=get_cover($value['icon'],'path');
}
}
if($extend_map['where']['for_show_pic_list']=='novice'){
foreach ($data as $key => $value) {
$data[$key]['novice']=arr_count($value['novice']);
}
}
}
if($_REQUEST['data_order']!=''){
$data_order=reset(explode(',',$_REQUEST['data_order']));
$data_order_type=end(explode(',',$_REQUEST['data_order']));
$this->assign('userarpu_order',$data_order);
$this->assign('userarpu_order_type',$data_order_type);
}
$data=my_sort($data,$data_order_type,(int)$data_order);
$size=$row;//每页显示的记录数
$pnum = ceil(count($data) / $size); //总页数ceil()函数用于求大于数字的最小整数
//用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度)
$data = array_slice($data, ($arraypage-1)*$size, $size);
$this->assign('model', $model);
$this->assign('list_grids', $grids);
$this->assign('list_data', $data);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
public function del($model = null, $ids=null,$url=null){
$model = M('Model')->find($model);
$model || $this->error('模型不存在!');
$ids = array_unique((array)I('ids',null));
if (empty($ids)) {
$this->error('请选择要操作的数据!');
}
$Model = D(get_table_name($model['id']));
$map = array('id' => array('in', $ids) );
if(CONTROLLER_NAME == "GameType"){
$yres = $Model->where($map)->select();
}
if(CONTROLLER_NAME == "ServerNotice"){
$yres = $Model->where($map)->select();
}
if(CONTROLLER_NAME == "Giftbag"){
$yres = $Model->where($map)->select();
}
if($Model->where($map)->delete()){
if(CONTROLLER_NAME == "GameType"){
foreach ($yres as $k => $v) {
addOperationLog(array(
"op_type"=>2,
"key"=>$v['type_name'],
"url"=>U("GameType/lists")
));
}
}
if(CONTROLLER_NAME == "ServerNotice"){
foreach ($yres as $k => $v) {
addOperationLog(array(
"op_type"=>2,
"key"=>$v['game_name']."/".$v['server_name'],
"url"=>U("ServerNotice/lists")
));
}
}
if(CONTROLLER_NAME == "Giftbag"){
foreach ($yres as $k => $v) {
addOperationLog(array(
"op_type"=>2,
"key"=>$v['game_name']."/".$v['giftbag_name'],
"url"=>U("Giftbag/lists")
));
}
}
$this->success('删除成功',$url);
} else {
$this->error('删除失败!');
}
}
/**
* 设置一条或者多条数据的状态
* @author huajie <banhuajie@163.com>
*/
public function setStatus($model='Document'){
return parent::setStatus($model);
}
public function edit($model = null, $id = 0,$url=null){
//获取模型信息
$model = M('Model')->find($model);
$model || $this->error('模型不存在!');
if(IS_POST){
$Model = D(parse_name(get_table_name($model['id']),1));
// 获取模型的字段信息
$Model = $this->checkAttr($Model,$model['id']);
if($Model->create() && $Model->save() !== false){
\Think\Log::actionLog(CONTROLLER_NAME.'/edit',$model,1);
if(CONTROLLER_NAME == "GameType"){
addOperationLog(array(
"op_type"=>1,
"key"=>$_POST['type_name'],
"url"=>U("GameType/lists")
));
}
if(CONTROLLER_NAME == "ServerNotice"){
addOperationLog(array(
"op_type"=>1,
"key"=>$_POST['game_name']."/".$_POST['server_name'],
"url"=>U("ServerNotice/lists",array("server_name"=>$_POST['server_name']))
));
}
$this->success('保存'.$model['title'].'成功!',empty($url)? U('lists?model='.$model['name']):$url);
} else {
$this->error($Model->getError());//,empty($url)? U('lists?model='.$model['name']):$url
}
} else {
$fields = get_model_attribute($model['id']);
//获取数据
$data = D(get_table_name($model['id']))->find($id);
$data || $this->error('数据不存在!');
$this->assign('model', $model);
$this->assign('fields', $fields);
$this->assign('data', $data);
$this->meta_title = '编辑'.$model['title'];
$this->display($model['template_edit']);
}
}
public function add($model = null,$url=''){
//获取模型信息
$model = M('Model')->where(array('status' => 1))->find($model);
$model || $this->error('模型不存在!');
if(IS_POST){
$Model = D(parse_name(get_table_name($model['id']),1));
// 获取模型的字段信息
$Model = $this->checkAttr($Model,$model['id']);
if($Model->create() && $Model->add()){//
\Think\Log::actionLog(CONTROLLER_NAME.'/add',$model,1);
//操作日志
if(CONTROLLER_NAME == "GameType"){
addOperationLog(array(
"op_type"=>0,
"key"=>$_POST['type_name'],
"url"=>U("GameType/lists")
));
}
if(CONTROLLER_NAME == "ServerNotice"){
addOperationLog(array(
"op_type"=>0,
"key"=>$_POST['game_name']."/".$_POST['server_name'],
"url"=>U("ServerNotice/lists",array("server_name"=>$_POST['server_name']))
));
}
$this->success('添加'.$model['title'].'成功!', empty($url)? U('lists?model='.$model['name']):$url);
} else {
$this->error($Model->getError());
}
} else {
$fields = get_model_attribute($model['id']);
$this->assign('model', $model);
$this->assign('fields', $fields);
$this->meta_title = '新增'.$model['title'];
$this->display($model['template_add']);
}
}
public function remove($model = null,$model1=null, $ids=null,$prefix='tab_'){
$model = M('Model')->find($model);
$model || $this->error('模型不存在!');
$ids = array_unique((array)I('request.ids',null));
if ( empty($ids) ) {
$this->error('请选择要操作的数据!');
}
$Model = M(get_table_name($model['id']),$prefix);
$map = array('id' => array('in', $ids) );
if($Model->where($map)->delete()){
$info = D($model1,'Logic');
$info->deletes($ids);
$this->success('删除成功');
} else {
$this->error('删除失败!');
}
}
/**
* 设置一条或者多条数据的状态
*/
public function set_status($Model=CONTROLLER_NAME){
$ids = I('request.ids');
$status = I('request.status');
$msg_type = I('request.msg_type',1);
$field = I('request.field','status');
if(empty($ids)){
$this->error('请选择要操作的数据');
}
$msg = array(
0=>array('success'=>'推荐成功','error'=>'推荐失败'),
1=>array('success'=>'启用成功','error'=>'启用失败'),
2=>array('success'=>'开启成功','error'=>'开启失败'),
3=>array('success'=>'关闭成功','error'=>'关闭失败'),
4=>array('success'=>'删除成功','error'=>'删除失败'),
5=>array('success'=>'审核成功','error'=>'审核失败'),
6=>array('success'=>'拒绝成功','error'=>'拒绝失败'),
7=>array('success'=>'修复成功','error'=>'修复失败'),
8=>array('success'=>'操作成功','error'=>'操作失败'),
9=>array('success'=>'取消成功','error'=>'取消失败'),
10=>array('success'=>'拉黑成功','error'=>'拉黑失败'),
11=>array('success'=>'锁定成功','error'=>'锁定失败'),
12=>array('success'=>'解锁成功','error'=>'解锁失败'),
13=>array('success'=>'处理成功','error'=>'处理失败'),
14=>array('success'=>'忽略成功','error'=>'忽略失败'),
15=>array('success'=>'驳回成功','error'=>'驳回失败'),
16=>array('success'=>'显示成功','error'=>'显示失败'),
);
$map['id'] = array('in',$ids);
switch ($status){
case -1 :
$this->delete($Model, $map, $msg[$msg_type], $field);
break;
case 0 :
$this->forbid($Model, $map, $msg[$msg_type], $field);
break;
case 1 :
$this->resume($Model, $map, $msg[$msg_type], $field);
break;
case 2 :
$this->reject($Model, $map, $msg[$msg_type],$field);
break;
default :
$this->error('参数错误');
break;
}
}
protected function checkAttr($Model,$model_id){
$fields = get_model_attribute($model_id,false);
$validate = $auto = array();
foreach($fields as $key=>$attr){
if($attr['is_must']){// 必填字段
$validate[] = array($attr['name'],'require',$attr['title'].'必须!');
}
// 自动验证规则
if(!empty($attr['validate_rule'])) {
$validate[] = array($attr['name'],$attr['validate_rule'],$attr['error_info']?$attr['error_info']:$attr['title'].'验证错误',0,$attr['validate_type'],$attr['validate_time']);
}
// 自动完成规则
if(!empty($attr['auto_rule'])) {
$auto[] = array($attr['name'],$attr['auto_rule'],$attr['auto_time'],$attr['auto_type']);
}elseif('checkbox'==$attr['type']){ // 多选型
$auto[] = array($attr['name'],'arr2str',3,'function');
}elseif('date' == $attr['type']){ // 日期型
$auto[] = array($attr['name'],'strtotime',3,'function');
}elseif('datetime' == $attr['type']){ // 时间型
$auto[] = array($attr['name'],'strtotime',3,'function');
}
}
return $Model->validate($validate)->auto($auto);
}
/**
* 显示指定模型列表数据
* @param String $model 模型标识
* @author
*/
public function flists($model = null, $p = 0,$extend_map = array(),$field=''){
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
//获取模型信息
$model = M('Model')->getByName($model);
$model || $this->error('模型不存在!');
//解析列表规则
$fields = array();
$fields[] = $field;
$grids = preg_split('/[;\r\n]+/s', trim($model['list_grid']));
foreach ($grids as &$value) {
if(trim($value) === ''){
continue;
}
// 字段:标题:链接
$val = explode(':', $value);
// 支持多个字段显示
$field = explode(',', $val[0]);
$value = array('field' => $field, 'title' => $val[1]);
if(isset($val[2])){
// 链接信息
$value['href'] = $val[2];
// 搜索链接信息中的字段信息
preg_replace_callback('/\[([a-z_]+)\]/', function($match) use(&$fields){$fields[]=$match[1];}, $value['href']);
}
if(strpos($val[1],'|')){
// 显示格式定义
list($value['title'],$value['format']) = explode('|',$val[1]);
}
foreach($field as $val){
$array = explode('|',$val);
$fields[] = $array[0];
}
}
// 过滤重复字段信息
$fields = array_unique($fields);
// 关键字搜索
$map = $extend_map;
$key = $model['search_key']?$model['search_key']:'title';
if(isset($_REQUEST[$key])){
$map[$key] = array('like','%'.$_GET[$key].'%');
unset($_REQUEST[$key]);
}
// 条件搜索
foreach($_REQUEST as $name=>$val){
if(in_array($name,$fields)){
$map[$name] = $val;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
if($model['extend']){
$name = get_table_name($model['id']);
$parent = get_table_name($model['extend']);
$fix = C("DB_PREFIX");
$key = array_search('id', $fields);
if(false === $key){
array_push($fields, "{$fix}{$parent}.id as id");
} else {
$fields[$key] = "{$fix}{$parent}.id as id";
}
/* 查询记录数 */
$count = D($parent)->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")->where($map)->count();
// 查询数据
$data = D($parent)
->join("INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id")
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order("{$fix}{$parent}.id DESC")
/* 数据分页 */
->page($page, $row)
/* 执行查询 */
->select();
} else {
if($model['need_pk']){
in_array('id', $fields) || array_push($fields, 'id');
}
$name = parse_name(get_table_name($model['id']), true);
$data = D($name)
/* 查询指定字段,不指定则查询所有字段 */
->field(empty($fields) ? true : $fields)
// 查询条件
->where($map)
/* 默认通过id逆序排列 */
->order(empty($map['order'])?"id desc":$map['order'])
/* 数据分页 */
->page($page, $row)
/* 执行查询 */
->select();
/* 查询记录总数 */
$count = D($name)->where($map)->count();
}
//分页
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$data = $this->parseDocumentList($data,$model['id']);
if(isset($extend_map['for_show_pic_list'])){
if($extend_map['for_show_pic_list']=='icon'){
foreach ($data as $key => $value) {
$data[$key]['pic_path']=get_cover($value['icon'],'path');
}
}
}
$this->assign('model', $model);
$this->assign('list_grids', $grids);
$this->assign('list_data', $data);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
/**
* 添加快捷图标
* @author 鹿文学
*/
public function addShortcutIcon() {
$Kuaijieicon = M('Kuaijieicon');
$result = $Kuaijieicon->where(['url'=>$_REQUEST['url']])->find();
if ($result) {
if ($result['status'] == 0) {
$data = array('status'=>1,'id'=>$result['id']);
$id = $Kuaijieicon->save($data);
if($id){
//记录行为
action_log('Kuaijie/edit', 'Kuaijieicon', $result['id'], UID);
$this->success('添加成功');
} else {
$this->error('添加失败');
}
} else {
$this->error('已添加过常用设置');
}
} else {
$data = array('title'=>$_REQUEST['title'],'status'=>1,'url'=>$_REQUEST['url'],'value'=>0);
$id = $Kuaijieicon->add($data);
if($id){
//记录行为
action_log('Kuaijie/add', 'Kuaijieicon', $id, UID);
$this->success('添加成功');
} else {
$this->error('添加失败');
}
}
}
/**
* 删除快捷图标
* @param integer $id 快捷图标编号
* @author 鹿文学
*/
public function delShortcutIcon($id=0) {
if (!is_numeric($id) || $id<1) {$this->error('参数错误');}
$Kuaijieicon = M('Kuaijieicon');
$data = array('status'=>0,'id'=>$id);
$res = $Kuaijieicon->save($data);
if($res){
//记录行为
action_log('Kuaijie/del', 'Kuaijieicon', $id, UID);
$this->success('删除成功');
} else {
$this->error('删除失败');
}
}
}