// +---------------------------------------------------------------------- namespace app\admin\logic; use think\Db; class HookLogic { /** * 导入应用钩子 * @param $app * @return array * @throws \ReflectionException * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public static function importHooks($app) { $hookConfigFile = cmf_get_app_config_file($app, 'hooks'); if (file_exists($hookConfigFile)) { $hooksInFile = include $hookConfigFile; if (empty($hooksInFile) || !is_array($hooksInFile)) { return; } foreach ($hooksInFile as $hookName => $hook) { $hook['type'] = empty($hook['type']) ? 2 : $hook['type']; if (!in_array($hook['type'], [2, 3, 4]) && !in_array($app, ['cmf', 'swoole'])) { $hook['type'] = 2; } $findHook = Db::name('hook')->where('hook', $hookName)->count(); $hook['app'] = $app; if ($findHook > 0) { Db::name('hook')->where('hook', $hookName)->strict(false)->field(true)->update($hook); } else { $hook['hook'] = $hookName; Db::name('hook')->insert($hook); } } } } }