Initial commit
Couldnt keep the history unfortunately.
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use App\Classes\Config;
|
||||
use App\Classes\Db;
|
||||
use App\Classes\Session;
|
||||
use App\Classes\User;
|
||||
|
||||
class BaseController {
|
||||
|
||||
protected $router;
|
||||
protected $section;
|
||||
protected $page;
|
||||
protected $loggedIn;
|
||||
protected $url;
|
||||
protected $adminSection;
|
||||
|
||||
//-------------------------------------//
|
||||
|
||||
public function __construct(\Klein\Klein $router = null)
|
||||
{
|
||||
$this->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
|
||||
Reference in New Issue
Block a user