<?php
namespace HomeController; //命名空间
use ThinkController; //引用系统控制器
/**
* 扩展控制器
* 用于调度各个扩展的URL访问需求
*/
class AddonsController extends Controller { //插件扩展控制器
protected $addons = null; //受保护的字段$addons为空
protected $addon, $model; //受保护的字段$addon,$model
function _initialize() { //初始化方法
$this->initFollow (); // 公众号粉丝信息初始化
C ( 'EDITOR_UPLOAD.rootPath', './Uploads/Editor/' . get_token () . '/' ); //设置EDITOR_UPLOAD.rootPath值
}
public function execute($_addons = null, $_controller = null, $_action = null) { //定义execute方法
if (! empty ( $_action ) && ! empty ( $_addons ) && empty ( $_controller )) { //如果传参全不为空
$_controller = $_GET ['_controller'] = $_addons; //设置$_controller、$_addons的值相等且等于传过来的_controller的值
$_REQUEST ['_controller'] = $_REQUEST ['_addons']; //全局变量中_controller和_addons相等
}
if (C ( 'URL_CASE_INSENSITIVE' )) {
$_addons = ucfirst ( parse_name ( $_addons, 1 ) ); //转换$_addons串风格,并让首字母大写
$_controller = parse_name ( $_controller, 1 ); //转换$_addons串风格
}
define ( 'ADDON_PUBLIC_PATH', __ROOT__ . '/Addons/' . $_addons . '/View/default/Public' ); //定义ADDON_PUBLIC_PATH
defined ( '_ADDONS' ) or define ( '_ADDONS', $_addons ); //判断并定义_ADDONS
defined ( '_CONTROLLER' ) or define ( '_CONTROLLER', $_controller ); //判断并定义_CONTROLLER
defined ( '_ACTION' ) or define ( '_ACTION', $_action ); //判断并定义_ACTION
$token = get_token (); //获取token
if (in_array ( $_action, array ( //判断$_action是在数组中
'lists',
'config',
'nulldeal'
) ) && (empty ( $token ) || $token == '-1')) { //$token 为空或者等于-1
$this->error ( '请先增加公众号!', U ( 'Home/MemberPublic/lists' ) ); //提示并跳转到会员列表页
}
$this->_nav (); //调用 _nav()方法
if (! empty ( $_addons ) && ! empty ( $_controller ) && ! empty ( $_action )) { //都不为空
tongji ( $_addons ); //统计插件
A ( "Addons://{$_addons}/{$_controller}" )->$_action (); //实例化控制器
} else {
$this->error ( '没有指定插件名称,控制器或操作!' ); //报错
}
}
function _nav() {
$map ['name'] = _ADDONS; //设置查询条件
$this->addon = $addon = M ( 'Addons' )->where ( $map )->find (); //查询Addons表,给本 对象下addon赋值
$nav = array (); //准备空数组
if ($addon ['has_adminlist']) {//判断并组成数组
$res ['title'] = $addon ['title'];
$res ['url'] = U ( 'lists' );
$res ['class'] = _ACTION == 'lists' ? 'current' : '';
$nav [] = $res;
}
if (file_exists ( ONETHINK_ADDON_PATH . _ADDONS . '/config.php' )) {//检查插件目录下confing文件是否存在
$res ['title'] = '功能配置';
$res ['url'] = U ( 'config' );
$res ['class'] = _ACTION == 'config' ? 'current' : '';
$nav [] = $res;
}
if (empty ( $nav ) && _ACTION != 'nulldeal') { //数组为空且者_ACTION不等于‘nulldeal’
U ( 'nulldeal', '', true ); /
}
$this->assign ( 'nav', $nav ); //交$nav数据给模板
return $nav; //返回该值
}