arserangel 发表于 2012-2-16 16:58:27

添加了diliCMS关于 libraries 的较详细注释,给需要的朋友参考

最近正在研究 diliCMS 的源码,看原来的注释做的不是太好,就自己加了注,刚把 libraies 里的加完,正在研究 model 部分,coronterll 部分也随后上传,如果想深入研究一下 diliCMS 的朋友,可以参考一下.

见附件,本人不平有限,有些可能理解不正确,暂作抛砖引玉吧!


arserangel 发表于 2012-2-16 17:03:37

<?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);
        }

kuailewang 发表于 2012-2-17 09:54:50

支持 大侠发布一个前台应用的实例吧 万谢   

qq402717704 发表于 2012-3-6 16:34:37

:D谢谢了!

qq402717704 发表于 2012-3-9 15:22:26

kuailewang 发表于 2012-2-17 09:54 static/image/common/back.gif
支持 大侠发布一个前台应用的实例吧 万谢

同求

minski 发表于 2012-3-13 10:52:40

等待model controller的注释 谢谢

likely_01 发表于 2012-3-16 15:00:49

前台。。。。。支持

tinsn 发表于 2012-3-16 23:04:10

这个好东西啊。。
对研究代码很有帮助。:D

datena 发表于 2012-3-22 15:09:54

。。。:@

听雨轩 发表于 2012-4-9 15:36:08

正在看,不错,算是国产的基于CI的CMS
页: [1] 2
查看完整版本: 添加了diliCMS关于 libraries 的较详细注释,给需要的朋友参考