|
楼主 |
发表于 2012-2-16 17:03:37
|
显示全部楼层
PHP复制代码 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
define('IN_DiliCMS',TRUE);
define('DiliCMS_VERSION','V2.0.0');
define('DiliCMS_BUILDTIME','2011年11月16日 20:01:37');
if(!defined('EXT')) { define('EXT','.php'); } //CI从2.0.3开始放弃该常量,这里做个兼容
/**
* 控制器基类
*/
abstract class Dili_Controller extends CI_Controller {
function __construct () {
parent ::__construct ();
$this->load->library('dili/platform');
$this->load->library('dili/settings');
$this->load->helper('url');
}
}
/**
* 原注:前台控制器扩展例子
*/
abstract class Front_Controller extends Dili_Controller {
function __construct () {
parent ::__construct ();
$this->load->switch_theme('on',setting ('site_theme'));
}
function _template ($template, $data = array()) {
$data['tpl'] = $template;
$this->load->view('default',$data);
}
}
/**
* dili 本身后台基类
* 原注:后台控制器扩展,如果您不了解其作用,请不要随意更改此处
*/
abstract class Admin_Controller extends Dili_Controller {
/**
* 构造函数
*/
function __construct () {
parent ::__construct ();
date_default_timezone_set('PRC');//强制时区为PRC,以后可增加配置变量
$this->settings->load('backend');
$this->load->switch_theme('on',setting ('backend_theme'),'admincp/');
//设置session参数
$this->config->set_item('sess_cookie_name' ,'dili_session');
$this->config->set_item('sess_expiration' , 7200);
$this->config->set_item('sess_expire_on_close' ,FALSE);
$this->config->set_item('sess_encrypt_cookie' ,FALSE);
$this->config->set_item('sess_use_database' ,TRUE);
$this->config->set_item('sess_table_name' ,'dili_sessions') ;
$this->config->set_item('sess_match_ip' ,FALSE) ;
$this->config->set_item('sess_match_useragent' ,TRUE) ;
$this->config->set_item('sess_time_to_update' ,300) ;
//
$this->load->database();
$this->load->library('session');
$this->_check_login (); //检测是否登录
$this->load->library('dili/acl'); //处理访问权限
$this->load->library('dili/plugin_manager'); //处理插件
}
/**
* 检测是否登录
*/
function _check_login () {
if(! $this->session->userdata('uid')) { //如果没有用户登录过,则转向登录页面
redirect (setting ('backend_access_point').'/login');
}
else { //否则取用户信息、角色等相关信息
$this->_admin = $this->db->select('dili_admins.uid , dili_admins.username, dili_admins.role , dili_roles.name')
->from('dili_admins')
->join('dili_roles','dili_roles.id = dili_admins.role')
->where('dili_admins.uid' , $this->session->userdata('uid') )
->get()
->row();
}
}
/**
* 设置渲染模板
*
* @param string $template 模板名称
* @param array $data 渲染数据
*/
function _template ($template, $data = array()) {
$data['tpl'] = $template;
$this->load->view('sys_entry',$data);
}
/**
* 检测某个方法的访问权限
*
* @param string $action 方法(动作)名称
*/
function _check_permit ($action = '') {
if(!$this->acl->permit($action)) {
$this->_message ('对不起,你没有访问这里的权限!','',false);
}
}
/**
* 打印信息并转向
*
* @param string $msg 显示信息
* @param string $goto 转向地址
* @param bool $auto 是否有自动跳转,比如 js 读秒
* @param string $fix URL的附加信息
*/
function _message ($msg, $goto = '',$auto = true,$fix = '') {
if($goto == '') { //如果没有设置转向页面,则返回,如果不能获取来源页,则返回首页
$goto = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : site_url ();
}
else { //如果没有设置 http 前缀,则添加
$goto = strpos($goto,'http') !== false ? $goto : backend_url ($goto);
}
$goto .= $fix;
$this->_template ('sys_message',array('msg'=>$msg,'goto'=>$goto,'auto'=>$auto));
echo $this->output->get_output();
exit();
}
}
/**
* 后台URI生成函数
*
* @param string $uri 基本url地址
* @param string $qs 附加的字符串
* @return string 生成的地址
*/
function backend_url ($uri,$qs = '') {
return site_url (setting ('backend_access_point').'/'.$uri).($qs == '' ? '' : '?'.$qs);
} 复制代码 |
|