router = $router; $request = $this->router->request()->uri(); $request = parse_url($request)['path']; $request = explode("/", $request); if (array_key_exists(1, $request)) { $this->section = $request[1]; } if (array_key_exists(2, $request)) { $this->page = $request[2]; } // Set login status $this->loggedIn = User::check(); $this->router->service()->loggedIn = $this->loggedIn; // Set url https://site.com/section/page $this->url = Config::c('APP_URL'); $this->url .= _exists([$this->section]) ? '/' . $this->section : ''; $this->url .= _exists([$this->page]) ? '/' . $this->page : ''; $this->router->service()->url = $this->url; // If Admin section $this->adminSection = $this->section == 'admin'; $this->router->service()->adminSection = $this->adminSection; // Clear alert $this->setAlert('', ''); // Load alert set on the previous page $this->loadAlert(); // View helper method $this->router->service()->escape = function (?string $string) { return htmlentities($string, ENT_QUOTES | ENT_HTML5, 'UTF-8'); }; } //-------------------------------------// public function throw404(): void { $this->router->response()->sendHeaders(true, true); $service = $this->router->service(); $service->pageTitle = 'Error 404 (Not Found)'; $service->render('../app/views/errors/404.php'); exit(); } /** * Set alert for the current page * * @param string $type Color of the message (success/danger/warning/info) * @param string $message The message to display * * @return void */ public function setAlert(string $type, string $message): void { $this->router->service()->type = $type; $this->router->service()->message = $message; } /** * Set alert for the next page * * @param string $type Color of the message (success/danger/warning/info) * @param string $message The message to display * * @return void */ public function setAlertNext(string $type, string $message): void { Session::put('type', $type); Session::put('message', $message); } /** * Load alert set on the previous page * * @return void */ public function loadAlert(): void { if (Session::exists('type') && Session::exists('message')) { $this->setAlert(Session::get('type'), Session::get('message')); Session::delete(['type', 'message']); } } //-------------------------------------// public function getSection(): string { return $this->section; } public function getLoggedIn(): bool { return $this->loggedIn; } public function getAdminSection(): bool { return $this->adminSection; } } // @Todo // - Image lazy loading