load(); if (php_sapi_name() != 'cli') { session_start(); $auth0_user = Auth::user(); if (!is_null($auth0_user)) { $_SESSION['user_id'] = $auth0_user['sub']; } $_REQUEST['time_zone'] = $_SERVER['HTTP_X_TIME_ZONE'] ?? 'Etc/UTC'; } Configuration::$pdoDSN = 'sqlite:' . implode(DIRECTORY_SEPARATOR, [__DIR__, 'data', 'mpj.db']); Configuration::$mode = Mode::SQLite; Definition::ensureTable(Table::REQUEST); Definition::ensureFieldIndex(Table::REQUEST, 'user', ['userId']); $_PATCH = []; if ($_SERVER['REQUEST_METHOD'] ?? '' == 'PATCH') parse_str(file_get_contents('php://input'), $_PATCH); /** * Return a 404 and exit */ function not_found(): never { http_response_code(404); die('Not found'); } /** * Return a 303 redirect ("see other" - redirects to a GET) * * @param string $url The URL to which the browser should be redirected */ function see_other(string $url): never { header('Location: ' . (str_starts_with($url, 'http') ? '/' : $url)); http_response_code(303); exit; } /** * Add a header that instructs the browser to close an open modal dialog * * @param string $name The name of the dialog to be closed */ function hide_modal(string $name): void { header("X-Hide-Modal: $name"); } /** * Validate the user, HTTP method, and request * * @param string $id The ID of the prayer request to retrieve * @param array $methods The allowable HTTP methods * @param bool $redirect Whether to redirect not-logged-on users (optional, defaults to true) * @return Request The request (failures will not return) * @throws ConfigurationException If any is encountered * @throws DocumentException If any is encountered */ function validate_request(string $id, array $methods, bool $redirect = true): Request { if (sizeof(array_filter($methods, fn($it) => $_SERVER['REQUEST_METHOD'] == $it)) == 0) not_found(); Auth::requireUser($redirect); $req = Request::byId($id); if (!$req) not_found(); return $req; }