/** * 获取插件列表 */ public function getList() { $dirs = array_map('basename', glob('./plugins/*', GLOB_ONLYDIR)); if ($dirs === false) { $this->error = '插件目录不可读'; return false; } $plugins = array(); $where['name'] = array('in', $dirs); $list = $this->where($where)->field(true)->select(); foreach ($list as $plugin) { $plugins[$plugin['name']] = $plugin; } foreach ($dirs as $value) { if (!isset($plugins[$value])) { $class = sp_get_plugin_class($value); if (!class_exists($class)) { // 实例化插件失败忽略 \Think\Log::record('插件' . $value . '的入口文件不存在!'); continue; } $obj = new $class(); $plugins[$value] = $obj->info; if (!isset($obj->info['type']) || $obj->info['type'] == 1) { //只获取普通插件,微信插件在微信中使用 if ($plugins[$value]) { $plugins[$value]['status'] = 3; //未安装 } } else { unset($plugins[$value]); } } } return $plugins; }
/** * 获取插件类的配置 * @param string $name 插件名 * @return array */ function sp_get_plugin_config($name) { $class = sp_get_plugin_class($name); if (class_exists($class)) { $plugin = new $class(); return $plugin->getConfig(); } else { return array(); } }
/** * 卸载插件 */ public function uninstall() { $id = intval(I('get.id')); $find_plugin = $this->plugins_model->find($id); $class = sp_get_plugin_class($find_plugin['name']); $plugins = new $class(); $uninstall_success = $plugins->uninstall(); if (!$uninstall_success) { $this->error('插件预卸载失败'); } S('hooks', null); $delete = $this->plugins_model->where(array("name" => $find_plugin['name']))->delete(); if ($delete === false) { $this->error('卸载失败'); } else { $this->success('卸载成功'); } }