public static function glob_recursive($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) { $files = array_merge($files, utilities::glob_recursive($dir . '/' . basename($pattern), $flags)); } return $files; }
<?php require __DIR__ . '/../vendor/autoload.php'; set_error_handler(function ($error) { echo $error; }); use Klein\Klein; $app = new Klein(); $modules = array(); $module_root = __DIR__ . '/modules/'; $module_files = utilities::glob_recursive($module_root . "*.php", GLOB_NOSORT); foreach ($module_files as $mfile) { $modules[] = (include $mfile); } foreach ($modules as $mj) { if (utilities::module_valid($mj)) { $app->respond($mj['methods'], $mj['route'], function (\Klein\Request $request, \Klein\Response $response) use($mj) { /* TODO: check callback access */ $answer = $mj['callback']($mj, $request, $response); if ($mj['response_type'] === "object") { $response_json = array("result" => array("code" => $answer['code'], "object" => $answer['object']), "data" => $answer['data']); return $response->json($response_json); } else { if ($mj['response_type'] === "array") { $response_json = array("result" => array("code" => $answer['code'], "object" => $answer['object']), "pagination" => array("window" => $answer['window'], "current" => $answer['current'], "next" => $answer['next'], "total" => $answer['total'], "pages" => $answer['pages']), "data" => $answer['data']); return $response->json($response_json); } else { if ($mj['response_type'] == "file") { } } }
public function load_modules() { $modules = array(); $module_files = utilities::glob_recursive($this->root . "*.php", GLOB_NOSORT); foreach ($module_files as $mfile) { if (utilities::module_path_valid($mfile)) { try { $modules[] = (include $mfile); } catch (Exception $ex) { } } else { } } $valid_modules = array(); $invalid_modules = array(); foreach ($modules as $m) { if (utilities::module_valid($m)) { $valid_modules[] = $m; } else { $invalid_modules[] = $m; } } $this->modules = $valid_modules; $this->invalid_modules = $invalid_modules; return $this->modules; }