138 lines
3.5 KiB
PHP
138 lines
3.5 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | 小说系统 [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\common\controller;
|
|
|
|
/**
|
|
* 插件类
|
|
* @author yangweijie <yangweijiester@gmail.com>
|
|
*/
|
|
class Addons extends Base {
|
|
|
|
public $info = array();
|
|
public $addon_path = '';
|
|
public $config_file = '';
|
|
public $custom_config = '';
|
|
public $admin_list = array();
|
|
public $custom_adminlist = '';
|
|
public $access_url = array();
|
|
|
|
public function _initialize() {
|
|
$mc = $this->getAddonsName();
|
|
|
|
$this->addon_path = ROOT_PATH . "/addons/{$mc}/";
|
|
if (is_file($this->addon_path . 'config.php')) {
|
|
$this->config_file = $this->addon_path . 'config.php';
|
|
}
|
|
}
|
|
|
|
public function template($template) {
|
|
$mc = $this->getAddonsName();
|
|
$ac = input('ac', '', 'trim,strtolower');
|
|
$parse_str = \think\Config::get('parse_str');
|
|
$parse_str['__ADDONROOT__'] = ROOT_PATH . "/addons/{$mc}";
|
|
\think\Config::set('parse_str', $parse_str);
|
|
|
|
if ($template) {
|
|
$template = $template;
|
|
} else {
|
|
$template = $mc . "/" . $ac;
|
|
}
|
|
|
|
$this->view->engine(
|
|
array('view_path' => "addons/" . $mc . "/view/")
|
|
);
|
|
echo $this->fetch($template);
|
|
}
|
|
|
|
final public function getAddonsName() {
|
|
$mc = input('mc', '', 'trim,strtolower');
|
|
if ($mc) {
|
|
return $mc;
|
|
} else {
|
|
$class = get_class($this);
|
|
return strtolower(substr($class, strrpos($class, '\\') + 1));
|
|
}
|
|
}
|
|
|
|
final public function checkInfo() {
|
|
$info_check_keys = array('name', 'title', 'description', 'status', 'author', 'version');
|
|
foreach ($info_check_keys as $value) {
|
|
if (!array_key_exists($value, $this->info)) {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function getConfig() {
|
|
|
|
static $_config = array();
|
|
if (empty($name)) {
|
|
$name = $this->getAddonsName();
|
|
}
|
|
if (isset($_config[$name])) {
|
|
return $_config[$name];
|
|
}
|
|
$config = array();
|
|
$map['name'] = $name;
|
|
$map['status'] = 1;
|
|
$config = db('Addons')->where($map)->value('config');
|
|
if ($config) {
|
|
$config = json_decode($config, true);
|
|
} else {
|
|
$config = array();
|
|
$temp_arr = include $this->config_file;
|
|
foreach ($temp_arr as $key => $value) {
|
|
if ($value['type'] == 'group') {
|
|
foreach ($value['options'] as $gkey => $gvalue) {
|
|
foreach ($gvalue['options'] as $ikey => $ivalue) {
|
|
$config[$ikey] = $ivalue['value'];
|
|
}
|
|
}
|
|
} else {
|
|
$config[$key] = $value['value'];
|
|
}
|
|
}
|
|
}
|
|
$_config[$name] = $config;
|
|
return $config;
|
|
}
|
|
|
|
/**
|
|
* 获取插件所需的钩子是否存在,没有则新增
|
|
* @param string $str 钩子名称
|
|
* @param string $addons 插件名称
|
|
* @param string $addons 插件简介
|
|
*/
|
|
public function getisHook($str, $addons, $msg = '') {
|
|
$hook_mod = db('Hooks');
|
|
$where['name'] = $str;
|
|
$gethook = $hook_mod->where($where)->find();
|
|
if (!$gethook || empty($gethook) || !is_array($gethook)) {
|
|
$data['name'] = $str;
|
|
$data['description'] = $msg;
|
|
$data['type'] = 1;
|
|
$data['update_time'] = time();
|
|
$data['addons'] = $addons;
|
|
if (false !== $hook_mod->create($data)) {
|
|
$hook_mod->add();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除钩子
|
|
* @param string $hook 钩子名称
|
|
*/
|
|
public function deleteHook($hook) {
|
|
$model = db('hooks');
|
|
$condition = array(
|
|
'name' => $hook,
|
|
);
|
|
$model->where($condition)->delete();
|
|
}
|
|
} |