2022-09-01 15:15:53 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require __DIR__ . '/vendor/autoload.php';
|
|
|
|
require __DIR__ . '/utils/cors.php';
|
|
|
|
|
2022-09-01 15:44:33 +00:00
|
|
|
use Medoo\Medoo;
|
|
|
|
|
2022-09-01 15:15:53 +00:00
|
|
|
cors();
|
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
|
|
|
|
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
|
|
|
|
$dotenv->load();
|
|
|
|
|
|
|
|
function env($key) {
|
|
|
|
global $_ENV;
|
|
|
|
return array_key_exists($key, $_ENV) ? $_ENV[$key] : null;
|
|
|
|
}
|
|
|
|
|
|
|
|
$router = new \Bramus\Router\Router();
|
|
|
|
|
2022-09-01 15:44:33 +00:00
|
|
|
$conn = new mysqli(env("DB_HOST"), env("DB_USER"), env("DB_PASSWORD"), env("DB_DATABASE"));
|
|
|
|
/*
|
|
|
|
$database = new Medoo([
|
|
|
|
'type' => 'mysql',
|
|
|
|
'host' => env("DB_HOST"),
|
|
|
|
'database' => env("DB_DATABASE"),
|
|
|
|
'username' => env("DB_USER"),
|
|
|
|
'password' => env("DB_PASSWORD")
|
|
|
|
]);
|
|
|
|
*/
|
2022-09-01 15:15:53 +00:00
|
|
|
$data = json_decode(file_get_contents("php://input"), true);
|
|
|
|
$routesDirectory = __DIR__ . "/routes";
|
|
|
|
|
|
|
|
$getFolderContentUtil = null;
|
2022-09-01 15:44:33 +00:00
|
|
|
$getFolderContentUtil = function($dir) use($routesDirectory, &$getFolderContentUtil, $router, $data, $database) {
|
2022-09-01 15:15:53 +00:00
|
|
|
$files = scandir($dir);
|
|
|
|
$filter = '/\.php$/';
|
|
|
|
|
|
|
|
foreach($files as $key => $value) {
|
|
|
|
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
|
|
|
|
$pathWithoutRoot = str_replace($routesDirectory, '', $path);
|
|
|
|
$pathWithoutRelativeRoot = str_replace($dir, '', $path);
|
|
|
|
|
|
|
|
if(!is_dir($path)) {
|
|
|
|
if(empty($filter) || preg_match($filter, $path)) {
|
|
|
|
$error = false;
|
2022-09-01 15:44:33 +00:00
|
|
|
$response = require $path;
|
2022-09-01 15:15:53 +00:00
|
|
|
|
|
|
|
if(!empty($response) && is_array($response)) {
|
|
|
|
foreach($response as $key => $fn) {
|
2022-09-01 15:44:33 +00:00
|
|
|
$router->{$key}(str_replace(".php", '', $pathWithoutRelativeRoot), function() use($router, $fn, $data, $error, $database) {
|
|
|
|
$responseResult = $fn($data, getallheaders(), $database, $error, $router);
|
2022-09-01 15:15:53 +00:00
|
|
|
if($responseResult) {
|
|
|
|
echo json_encode($responseResult);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if($value != "." && $value != "..") {
|
|
|
|
$router->mount($pathWithoutRelativeRoot, function() use($getFolderContentUtil, $path, $filter) {
|
|
|
|
$getFolderContentUtil($path);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$getFolderContentUtil($routesDirectory);
|
|
|
|
|
|
|
|
$router->run();
|