generated from mirzaev/pot
	Initial commit
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					!.gitignore
 | 
				
			||||||
 | 
					composer.phar
 | 
				
			||||||
 | 
					composer.lock
 | 
				
			||||||
 | 
					vendor
 | 
				
			||||||
							
								
								
									
										11
									
								
								LICENSE
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								LICENSE
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 | 
				
			||||||
 | 
					Version 2, December 2004
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 | 
				
			||||||
 | 
					TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  0. You just DO WHAT THE FUCK YOU WANT TO.
 | 
				
			||||||
							
								
								
									
										126
									
								
								author/project/system/controllers/core.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										126
									
								
								author/project/system/controllers/core.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,126 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\controllers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\views\templater,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\core as models,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\session,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\enumerations\language;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for PHP
 | 
				
			||||||
 | 
					use mirzaev\minimal\core as minimal,
 | 
				
			||||||
 | 
						mirzaev\minimal\controller,
 | 
				
			||||||
 | 
						mirzaev\minimal\http\response,
 | 
				
			||||||
 | 
						mirzaev\minimal\http\enumerations\status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Controllers core
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\controllers
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param session $session Instance of the session
 | 
				
			||||||
 | 
					 * @param language $language Language
 | 
				
			||||||
 | 
					 * @param response $response Response
 | 
				
			||||||
 | 
					 * @param array $errors Registry of errors
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method void __construct(minimal $minimal, bool $initialize) Constructor
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class core extends controller
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Session
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @var session|null $session Instance of the session
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected readonly session $session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Language
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var language $language Language
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected language $language = language::en;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Response
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @see https://wiki.php.net/rfc/property-hooks (find a table about backed and virtual hooks)
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var response $response Response
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected response $response {
 | 
				
			||||||
 | 
							// Read
 | 
				
			||||||
 | 
							get => $this->response ??= $this->request->response();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var array $errors Registry of errors
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected array $errors = [
 | 
				
			||||||
 | 
							'session' => [],
 | 
				
			||||||
 | 
							'account' => []
 | 
				
			||||||
 | 
						];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Constructor
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param minimal $core Instance of the MINIMAL
 | 
				
			||||||
 | 
						 * @param bool $initialize Initialize a controller?
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __construct(minimal $core, bool $initialize = true)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Blocking requests from CloudFlare (better to write this blocking into nginx config file)
 | 
				
			||||||
 | 
							if (isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] === 'nginx-ssl early hints') return status::bruh->label;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// For the extends system
 | 
				
			||||||
 | 
							parent::__construct(core: $core);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ($initialize) {
 | 
				
			||||||
 | 
								// Requestet initializing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Initializing core of the models
 | 
				
			||||||
 | 
								new models();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Initializing of the date until which the session will be active
 | 
				
			||||||
 | 
								$expires = strtotime('+1 week');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Initializing of default value of hash of the session
 | 
				
			||||||
 | 
								$_COOKIE["session"] ??= null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Initializing of session
 | 
				
			||||||
 | 
								$this->session = new session($_COOKIE["session"], $expires, $this->errors['session']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Handle a problems with initializing a session
 | 
				
			||||||
 | 
								if (!empty($this->errors['session'])) die;
 | 
				
			||||||
 | 
								else if ($_COOKIE["session"] !== $this->session->hash) {
 | 
				
			||||||
 | 
									// Hash of the session is changed (implies that the session has expired and recreated)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Write a new hash of the session to cookies
 | 
				
			||||||
 | 
									setcookie(
 | 
				
			||||||
 | 
										'session',
 | 
				
			||||||
 | 
										$this->session->hash,
 | 
				
			||||||
 | 
										[
 | 
				
			||||||
 | 
											'expires' => $expires,
 | 
				
			||||||
 | 
											'path' => '/',
 | 
				
			||||||
 | 
											'secure' => true,
 | 
				
			||||||
 | 
											'httponly' => true,
 | 
				
			||||||
 | 
											'samesite' => 'strict'
 | 
				
			||||||
 | 
										]
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Initializing of preprocessor of views
 | 
				
			||||||
 | 
								$this->view = new templater($this->session);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										70
									
								
								author/project/system/controllers/index.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										70
									
								
								author/project/system/controllers/index.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\controllers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\controllers\core;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for PHP
 | 
				
			||||||
 | 
					use mirzaev\minimal\http\enumerations\content,
 | 
				
			||||||
 | 
					  mirzaev\minimal\http\enumerations\status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Index
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\controllers
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param array $errors Registry of errors
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method null index() Main page
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					final class index extends core
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var array $errors Registry of errors
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected array $errors = [
 | 
				
			||||||
 | 
							'session' => []
 | 
				
			||||||
 | 
						];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Main page
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return null
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function index(): null
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (str_contains($this->request->headers['accept'], content::any->value)) {
 | 
				
			||||||
 | 
								// Request for any response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Render page
 | 
				
			||||||
 | 
								$page = $this->view->render('index.html');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Sending response
 | 
				
			||||||
 | 
								$this->response
 | 
				
			||||||
 | 
									->start()
 | 
				
			||||||
 | 
									->clean()
 | 
				
			||||||
 | 
									->sse()
 | 
				
			||||||
 | 
									->write($page)
 | 
				
			||||||
 | 
									->validate($this->request)
 | 
				
			||||||
 | 
									?->body()
 | 
				
			||||||
 | 
									->end();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Deinitializing rendered page
 | 
				
			||||||
 | 
								unset($page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Exit (success)
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										230
									
								
								author/project/system/models/core.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										230
									
								
								author/project/system/models/core.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,230 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for PHP
 | 
				
			||||||
 | 
					use mirzaev\minimal\model,
 | 
				
			||||||
 | 
						mirzaev\minimal\http\enumerations\status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for ArangoDB
 | 
				
			||||||
 | 
					use mirzaev\arangodb\connection as arangodb,
 | 
				
			||||||
 | 
						mirzaev\arangodb\collection,
 | 
				
			||||||
 | 
						mirzaev\arangodb\document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Library for ArangoDB
 | 
				
			||||||
 | 
					use ArangoDBClient\Document as _document,
 | 
				
			||||||
 | 
						ArangoDBClient\DocumentHandler as _document_handler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Models core
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param public ARANGODB Path to the file with ArangoDB session connection data
 | 
				
			||||||
 | 
					 * @param arangodb $arangodb Instance of the ArangoDB session
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method void __construct(bool $initialize, ?arangodb $arangodb) Constructor
 | 
				
			||||||
 | 
					 * @method _document|static|array|null read(string $filter, string $sort, int $amount, int $page, string $return, array $parameters, array &$errors) Read document from ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class core extends model
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * ArangoDB connection daa
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var string ARANGODB Path to the file with ArangoDB session connection data	 
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						final public const string ARANGODB = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'settings' . DIRECTORY_SEPARATOR . 'arangodb.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * ArangoDB
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var arangodb $arangodb Instance of the ArangoDB session
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected static arangodb $arangodb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Constructor
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param bool $initialize Initialize a model?
 | 
				
			||||||
 | 
						 * @param ?arangodb $arangodb Instance of the ArangoDB session
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __construct(bool $initialize = true, ?arangodb $arangodb = null)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// For the extends system
 | 
				
			||||||
 | 
							parent::__construct($initialize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ($initialize) {
 | 
				
			||||||
 | 
								// Initializing is requested
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Writing an instance of a session of ArangoDB to the property
 | 
				
			||||||
 | 
								self::$arangodb = $arangodb ?? new arangodb(require static::ARANGODB);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Read document from ArangoDB
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $filter Expression for filtering (AQL)
 | 
				
			||||||
 | 
						 * @param string $sort Expression for sorting (AQL)
 | 
				
			||||||
 | 
						 * @param int $amount Amount of documents for collect
 | 
				
			||||||
 | 
						 * @param int $page Page
 | 
				
			||||||
 | 
						 * @param string $return Expression describing the parameters to return (AQL)
 | 
				
			||||||
 | 
						 * @param array $parameters Binded parameters for placeholders ['placeholder' => parameter]
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed An array of instances of documents from ArangoDB, if they are found
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static function _read(
 | 
				
			||||||
 | 
							string $filter = '',
 | 
				
			||||||
 | 
							string $sort = 'd.created DESC, d._key DESC',
 | 
				
			||||||
 | 
							int $amount = 1,
 | 
				
			||||||
 | 
							int $page = 1,
 | 
				
			||||||
 | 
							string $return = 'd',
 | 
				
			||||||
 | 
							array $parameters = [],
 | 
				
			||||||
 | 
							array &$errors = []
 | 
				
			||||||
 | 
						): _document|static|array|null {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE)) {
 | 
				
			||||||
 | 
									// Initialized the collection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Read from ArangoDB
 | 
				
			||||||
 | 
									$result = collection::execute(
 | 
				
			||||||
 | 
										sprintf(
 | 
				
			||||||
 | 
											<<<'AQL'
 | 
				
			||||||
 | 
												FOR d IN @@collection
 | 
				
			||||||
 | 
													%s
 | 
				
			||||||
 | 
													%s
 | 
				
			||||||
 | 
													LIMIT @offset, @amount
 | 
				
			||||||
 | 
													RETURN %s
 | 
				
			||||||
 | 
											AQL,
 | 
				
			||||||
 | 
											empty($filter) ? '' : "FILTER $filter",
 | 
				
			||||||
 | 
											empty($sort) ? '' : "SORT $sort",
 | 
				
			||||||
 | 
											empty($return) ? 'd' : $return
 | 
				
			||||||
 | 
										),
 | 
				
			||||||
 | 
										[
 | 
				
			||||||
 | 
											'@collection' => static::COLLECTION,
 | 
				
			||||||
 | 
											'offset' => --$page <= 0 ? 0 : $page * $amount,
 | 
				
			||||||
 | 
											'amount' => $amount
 | 
				
			||||||
 | 
										] + $parameters,
 | 
				
			||||||
 | 
										errors: $errors
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ($amount === 1 && $result instanceof _document) {
 | 
				
			||||||
 | 
										// Received only 1 document and @todo rebuild 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// Initializing the object
 | 
				
			||||||
 | 
										$object = new static;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										if (method_exists($object, '__document')) {
 | 
				
			||||||
 | 
											// Object can implement a document from ArangoDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											// Writing the instance of document from ArangoDB to the implement object
 | 
				
			||||||
 | 
											$object->__document($result);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											// Exit (success)
 | 
				
			||||||
 | 
											return $object;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Exit (success)
 | 
				
			||||||
 | 
									return $result;
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Write
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 * @param mixed $value Value of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __set(string $name, mixed $value = null): void
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							match ($name) {
 | 
				
			||||||
 | 
								'arangodb' => (function () use ($value) {
 | 
				
			||||||
 | 
									if (isset(static::$arangodb)) throw new exception('Forbidden to reinitialize the ArangoDB session($this::$arangodb)', status::internal_server_error->value);
 | 
				
			||||||
 | 
									else if ($value instanceof arangodb) self::$arangodb = $value;
 | 
				
			||||||
 | 
									else throw new exception('Session of connection to ArangoDB ($this::$arangodb) is need to be mirzaev\arangodb\connection', status::internal_server_error->value);
 | 
				
			||||||
 | 
								})(),
 | 
				
			||||||
 | 
								default => parent::__set($name, $value)
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Read
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed Content of the property, if they are found
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __get(string $name): mixed
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return match ($name) {
 | 
				
			||||||
 | 
								default => parent::__get($name)
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Delete
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property 
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __unset(string $name): void
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Deleting a property and exit (success)
 | 
				
			||||||
 | 
							parent::__unset($name);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Check of initialization
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return bool The property is initialized?
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __isset(string $name): bool
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Check of initialization of the property and exit (success)
 | 
				
			||||||
 | 
							return parent::__isset($name);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Call a static property or method
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property or the method
 | 
				
			||||||
 | 
						 * @param array $arguments Arguments for the method
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static function __callStatic(string $name, array $arguments): mixed
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return match ($name) {
 | 
				
			||||||
 | 
								'arangodb' => (new static)->__get('arangodb'),
 | 
				
			||||||
 | 
								default => throw new exception("Not found: $name", 500)
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										50
									
								
								author/project/system/models/enumerations/language.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								author/project/system/models/enumerations/language.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\enumerations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Language
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Types of languages by ISO 639-1 standart
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\enumerations
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					enum language
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						case en;
 | 
				
			||||||
 | 
						case ru;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
					   * Label
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
						 * Initialize label of the language
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param language|null $language Language into which to translate
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return string Translated label of the language
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
						 * @todo
 | 
				
			||||||
 | 
						 * 1. More languages
 | 
				
			||||||
 | 
						 * 2. Cases???
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function label(?language $language = language::en): string
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Exit (success)
 | 
				
			||||||
 | 
							return match ($this) {
 | 
				
			||||||
 | 
								language::en =>	match ($language) {
 | 
				
			||||||
 | 
									language::en => 'English',
 | 
				
			||||||
 | 
									language::ru => 'Английский'
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								language::ru => match ($language) {
 | 
				
			||||||
 | 
									language::en => 'Russian',
 | 
				
			||||||
 | 
									language::ru => 'Русский'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								author/project/system/models/enumerations/session.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								author/project/system/models/enumerations/session.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\enumerations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Session
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Types of session verification
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\enumerations
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					enum session
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    case hash_only;
 | 
				
			||||||
 | 
					    case hash_else_address;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								author/project/system/models/interfaces/collection.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								author/project/system/models/interfaces/collection.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\interfaces;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for ArangoDB
 | 
				
			||||||
 | 
					use mirzaev\arangodb\enumerations\collection\type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Collection
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Interface for implementing a collection from ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\interfaces
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					interface collection
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Name of the collection in ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public const string COLLECTION = 'THIS_COLLECTION_SHOULD_NOT_EXIST';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Type of the collection in ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public const type TYPE = type::document;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										81
									
								
								author/project/system/models/interfaces/document.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										81
									
								
								author/project/system/models/interfaces/document.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,81 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\interfaces;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Library для ArangoDB
 | 
				
			||||||
 | 
					use ArangoDBClient\Document as _document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Document
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Interface for implementing a document instance from ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param _document $document An instance of the ArangoDB document from ArangoDB (protected readonly)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\interfaces
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					interface document
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Write
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Write a property into an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 * @param mixed $value Content of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __set(string $name, mixed $value = null): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Read
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Read a property from an instance of the ArangoDB docuemnt
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed Content of the property
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __get(string $name): mixed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Delete
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Deinitialize the property in an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __unset(string $name): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Check of initialization
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Check of initialization of the property into an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return bool The property is initialized?
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __isset(string $name): bool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Execute a method
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Execute a method from an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the method
 | 
				
			||||||
 | 
						 * @param array $arguments Arguments for the method
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed Result of execution of the method
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __call(string $name, array $arguments = []): mixed;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										233
									
								
								author/project/system/models/session.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										233
									
								
								author/project/system/models/session.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,233 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\models\traits\status,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\traits\buffer,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\traits\document as document_trait,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\document as document_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\collection as collection_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\enumerations\session as verification,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\enumerations\language;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for ArangoDB
 | 
				
			||||||
 | 
					use mirzaev\arangodb\collection,
 | 
				
			||||||
 | 
						mirzaev\arangodb\document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Library для ArangoDB
 | 
				
			||||||
 | 
					use ArangoDBClient\Document as _document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Session model
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param string COLLECTION Name of the collection in ArangoDB
 | 
				
			||||||
 | 
					 * @param verification VERIFICATION Type of session verification
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method void __construct(?string $hash, ?int $expires, array &$errors) Constructor
 | 
				
			||||||
 | 
					 * @method document|null hash(string $hash, array &$errors) Search by hash
 | 
				
			||||||
 | 
					 * @method document|null address(string $address, array &$errors) Search by IP-address
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					final class session extends core implements document_interface, collection_interface
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						use status, document_trait, buffer, cart {
 | 
				
			||||||
 | 
							buffer::write as write;
 | 
				
			||||||
 | 
							cart::initialize as cart;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Collection name
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @var string COLLECTION Name of the collection in ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						final public const string COLLECTION = 'session';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Session verification type
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @var verification VERIFICATION Type of session verification
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						final public const verification VERIFICATION = verification::hash_else_address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Constructor
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Initialize session and write into the $this->document property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param ?string $hash Hash of the session in ArangoDB
 | 
				
			||||||
 | 
						 * @param ?int $expires Date of expiring of the session (used for creating a new session)
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __construct(?string $hash = null, ?int $expires = null, array &$errors = [])
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
									// Initialized the collection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (isset($hash) && $document = $this->hash($hash, errors: $errors)) {
 | 
				
			||||||
 | 
										// Found the instance of the ArangoDB document of session and received a session hash
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
										// Writing document instance of the session from ArangoDB to the property of the implementing object 
 | 
				
			||||||
 | 
										$this->__document($document);
 | 
				
			||||||
 | 
									} else if (static::VERIFICATION === verification::hash_else_address && $document = $this->address($_SERVER['REMOTE_ADDR'], errors: $errors)) {
 | 
				
			||||||
 | 
										// Found the instance of the ArangoDB document of session and received a session hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// Writing document instance of the session from ArangoDB to the property of the implementing object 
 | 
				
			||||||
 | 
										$this->__document($document);
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										// Not found the instance of the ArangoDB document of session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// Initializing a new session and write they into ArangoDB
 | 
				
			||||||
 | 
										$_id = document::write(
 | 
				
			||||||
 | 
											static::COLLECTION,
 | 
				
			||||||
 | 
											[
 | 
				
			||||||
 | 
												'active' => true,
 | 
				
			||||||
 | 
												'expires' => $expires ?? time() + 604800,
 | 
				
			||||||
 | 
												'address' => $_SERVER['REMOTE_ADDR'],
 | 
				
			||||||
 | 
												'x-forwarded-for' => $_SERVER['HTTP_X_FORWARDED_FOR'] ?? null,
 | 
				
			||||||
 | 
												'referer' => $_SERVER['HTTP_REFERER'] ?? null,
 | 
				
			||||||
 | 
												'useragent' => $_SERVER['HTTP_USER_AGENT'] ?? null
 | 
				
			||||||
 | 
											]
 | 
				
			||||||
 | 
										);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										if ($session = collection::execute(
 | 
				
			||||||
 | 
											<<<'AQL'
 | 
				
			||||||
 | 
												FOR d IN @@collection
 | 
				
			||||||
 | 
													FILTER d._id == @_id && d.expires > @time && d.active == true
 | 
				
			||||||
 | 
													RETURN d
 | 
				
			||||||
 | 
											AQL,
 | 
				
			||||||
 | 
											[
 | 
				
			||||||
 | 
												'@collection' => static::COLLECTION,
 | 
				
			||||||
 | 
												'_id' => $_id,
 | 
				
			||||||
 | 
												'time' =>	time()
 | 
				
			||||||
 | 
											],
 | 
				
			||||||
 | 
											errors: $errors
 | 
				
			||||||
 | 
										)) {
 | 
				
			||||||
 | 
											// Found the instance of just created new session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											// Generating a hash and write into the instance of the ArangoDB document of session property
 | 
				
			||||||
 | 
											$session->hash = sodium_bin2hex(sodium_crypto_generichash($_id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											if (document::update($session, errors: $errors)) {
 | 
				
			||||||
 | 
												// Writed to ArangoDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												// Writing instance of the session document from ArangoDB to the property of the implementing object 
 | 
				
			||||||
 | 
												$this->__document($session);
 | 
				
			||||||
 | 
											} else throw new exception('Failed to write the session data');
 | 
				
			||||||
 | 
										} else throw new exception('Failed to create or find just created session');
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Search by hash
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Search for the session in ArangoDB by hash
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $hash Hash of the session in ArangoDB
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return _document|null instance of document of the session in ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static function hash(string $hash, array &$errors = []): ?_document
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
									// Collection initialized
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Search the session data in ArangoDB
 | 
				
			||||||
 | 
									return collection::execute(
 | 
				
			||||||
 | 
										<<<'AQL'
 | 
				
			||||||
 | 
										FOR d IN @@collection
 | 
				
			||||||
 | 
											FILTER d.hash == @hash && d.expires > @time && d.active == true
 | 
				
			||||||
 | 
											RETURN d
 | 
				
			||||||
 | 
										AQL,
 | 
				
			||||||
 | 
										[
 | 
				
			||||||
 | 
											'@collection' => static::COLLECTION,
 | 
				
			||||||
 | 
											'hash' => $hash,
 | 
				
			||||||
 | 
											'time' => time()
 | 
				
			||||||
 | 
										],
 | 
				
			||||||
 | 
										errors: $errors
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Search by IP-address
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Search for the session in ArangoDB by IP-address
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $address IP-address writed to the session in ArangoDB
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return _document|null instance of document of the session in ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static function address(string $address, array &$errors = []): ?_document
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
									// Collection initialized
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Search the session data in ArangoDB
 | 
				
			||||||
 | 
									return collection::execute(
 | 
				
			||||||
 | 
										<<<'AQL'
 | 
				
			||||||
 | 
										FOR d IN @@collection
 | 
				
			||||||
 | 
											FILTER d.address == @address && d.expires > @time && d.active == true
 | 
				
			||||||
 | 
											SORT d.updated DESC
 | 
				
			||||||
 | 
											LIMIT 1
 | 
				
			||||||
 | 
											RETURN d
 | 
				
			||||||
 | 
										AQL,
 | 
				
			||||||
 | 
										[
 | 
				
			||||||
 | 
											'@collection' => static::COLLECTION,
 | 
				
			||||||
 | 
											'address' => $address,
 | 
				
			||||||
 | 
											'time' =>	time()
 | 
				
			||||||
 | 
										],
 | 
				
			||||||
 | 
										errors: $errors
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
							
								
								
									
										84
									
								
								author/project/system/models/traits/buffer.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								author/project/system/models/traits/buffer.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\traits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\models\traits\document as document_trait,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\document as document_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\collection as collection_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\enumerations\language;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Library for ArangoDB
 | 
				
			||||||
 | 
					use ArangoDBClient\Document as _document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for ArangoDB
 | 
				
			||||||
 | 
					use mirzaev\arangodb\collection,
 | 
				
			||||||
 | 
						mirzaev\arangodb\document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Buffer
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Storage of data in the document from ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @uses document
 | 
				
			||||||
 | 
					 * @uses document_interface
 | 
				
			||||||
 | 
					 * @uses collection_interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param static COLLECTION Name of the collection in ArangoDB
 | 
				
			||||||
 | 
					 * @param static TYPE Type of the collection in ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\traits
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait buffer
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Write to buffer of the document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param array $data Data for writing (merge)
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return bool Is data has written into the document from ArangoDB?
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function write(array $data, array &$errors = []): bool
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
									// Initialized the collection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Is the instance of the document from ArangoDB are initialized?
 | 
				
			||||||
 | 
									if (!isset($this->document)) throw new exception('The instance of the sessoin document from ArangoDB is not initialized');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Writing data into buffer of the instance of the document from ArangoDB
 | 
				
			||||||
 | 
									$this->document->buffer = array_replace_recursive($this->document->buffer ?? [], $data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Is the buffer of the instance of the document from ArangoDB exceed 10 megabytes?
 | 
				
			||||||
 | 
									if (mb_strlen(json_encode($this->document->buffer)) > 10485760) throw new exception('The buffer size exceeds 10 megabytes');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Serializing parameters
 | 
				
			||||||
 | 
									if ($this->document->language instanceof language) $this->document->language = $this->document->language->name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Writing to ArangoDB and exit (success)
 | 
				
			||||||
 | 
									return document::update($this->document, errors: $errors);
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										206
									
								
								author/project/system/models/traits/document.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										206
									
								
								author/project/system/models/traits/document.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,206 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\traits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\models\interfaces\document as document_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\collection as collection_interface,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\connect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Library для ArangoDB
 | 
				
			||||||
 | 
					use ArangoDBClient\Document as _document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Framework for ArangoDB
 | 
				
			||||||
 | 
					use mirzaev\arangodb\connection as arangodb,
 | 
				
			||||||
 | 
						mirzaev\arangodb\document as framework_document,
 | 
				
			||||||
 | 
						mirzaev\arangodb\collection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Trait for implementing a document instance from ArangoDB
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @uses document_interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @var protected readonly _document|null $document An instance of the ArangoDB document
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\traits
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait document
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @var _document $document An instance of the document from ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						protected readonly _document $document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Constructor
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param bool $initialize Initialize a model?
 | 
				
			||||||
 | 
						 * @param ?arangodb $arangodb Instance of a session of ArangoDB
 | 
				
			||||||
 | 
						 * @param _document|null|false $document An instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __construct(
 | 
				
			||||||
 | 
							bool $initialize = true,
 | 
				
			||||||
 | 
							?arangodb $arangodb = null,
 | 
				
			||||||
 | 
							_document|null|false $document = false
 | 
				
			||||||
 | 
						) {
 | 
				
			||||||
 | 
							// For the extends system
 | 
				
			||||||
 | 
							parent::__construct($initialize, $arangodb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Writing to the property
 | 
				
			||||||
 | 
							if ($document instanceof _document) $this->__document($document);
 | 
				
			||||||
 | 
							else if ($document === null) throw new exception('Failed to initialize an instance of the document from ArangoDB');
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Write or read document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param _document|null $document Instance of document from ArangoDB
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return _document|null Instance of document from ArangoDB
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __document(?_document $document = null): ?_document
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Writing a property storing a document instance to ArangoDB
 | 
				
			||||||
 | 
							if ($document) $this->document ??= $document;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Read a property storing a document instance to ArangoDB and exit (success)
 | 
				
			||||||
 | 
							return $this->document ?? null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Connect
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param collecton_interface $document Document
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return string|null The identifier of the created edge of the "connect" collection, if created
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function connect(collection_interface $document, array &$errors = []): ?string
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (collection::initialize(static::COLLECTION, static::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
									if (collection::initialize(connect::COLLECTION, connect::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
										if (collection::initialize($document::COLLECTION, $document::TYPE, errors: $errors)) {
 | 
				
			||||||
 | 
											// Initialized collections 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											if ($this->document instanceof _document) {
 | 
				
			||||||
 | 
												// Initialized instance of the document from ArangoDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												// Writing document and exit (success)
 | 
				
			||||||
 | 
												return framework_document::write(
 | 
				
			||||||
 | 
													connect::COLLECTION,
 | 
				
			||||||
 | 
													[
 | 
				
			||||||
 | 
														'_from' => $document->getId(),
 | 
				
			||||||
 | 
														'_to' => $this->document->getId()
 | 
				
			||||||
 | 
													],
 | 
				
			||||||
 | 
													errors: $errors
 | 
				
			||||||
 | 
												);
 | 
				
			||||||
 | 
											} else  throw new exception('The instance of the document from ArangoDB is not initialized');
 | 
				
			||||||
 | 
										} else throw new exception('Failed to initialize ' . $document::TYPE . ' collection: ' . $document::COLLECTION);
 | 
				
			||||||
 | 
									} else throw new exception('Failed to initialize ' . connect::TYPE . ' collection: ' . connect::COLLECTION);
 | 
				
			||||||
 | 
								} else throw new exception('Failed to initialize ' . static::TYPE . ' collection: ' . static::COLLECTION);
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Write
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Write a property into an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 * @param mixed $value Content of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __set(string $name, mixed $value = null): void
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Writing to the property into an instance of the ArangoDB document and exit (success)
 | 
				
			||||||
 | 
							$this->document->{$name} = $value;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Read
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Read a property from an instance of the ArangoDB docuemnt
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed Content of the property
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __get(string $name): mixed
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Read a property from an instance of the ArangoDB document and exit (success)
 | 
				
			||||||
 | 
							return match ($name) {
 | 
				
			||||||
 | 
								default => $this->document->{$name}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Delete
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Deinitialize the property in an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __unset(string $name): void
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Delete the property in an instance of the ArangoDB document and exit (success)
 | 
				
			||||||
 | 
							unset($this->document->{$name});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Check of initialization
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Check of initialization of the property into an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the property
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return bool The property is initialized?
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __isset(string $name): bool
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Check of initializatio nof the property and exit (success)
 | 
				
			||||||
 | 
							return isset($this->document->{$name});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Execute a method
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Execute a method from an instance of the ArangoDB document
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param string $name Name of the method
 | 
				
			||||||
 | 
						 * @param array $arguments Arguments for the method
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return mixed Result of execution of the method
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __call(string $name, array $arguments = []): mixed
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Execute the method and exit (success)
 | 
				
			||||||
 | 
							return method_exists($this->document, $name) ? $this->document->{$name}($arguments) ?? null : null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								author/project/system/models/traits/files.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								author/project/system/models/traits/files.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\traits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Files
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Trait with files handlers
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method static void delete(string $directory, array &$errors)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\traits
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait files
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Delete
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Delete files recursively
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param string $directory Directory
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return void
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static function delete(string $directory, array &$errors = []): void
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (file_exists($directory)) {
 | 
				
			||||||
 | 
									// Directory exists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Deleting descendant files and directories (enter to the recursion)
 | 
				
			||||||
 | 
									foreach (scandir($directory) as $file) {
 | 
				
			||||||
 | 
										if ($file === '.' || $file === '..') continue;
 | 
				
			||||||
 | 
										else if (is_dir("$directory/$file")) static::delete("$directory/$file", $errors);
 | 
				
			||||||
 | 
										else unlink("$directory/$file");
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Deleting the directory
 | 
				
			||||||
 | 
									rmdir($directory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Exit (success)
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								} else throw new exception('Directory does not exist');
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										59
									
								
								author/project/system/models/traits/status.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										59
									
								
								author/project/system/models/traits/status.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mirzaev\shabashka\models\traits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Files of the project
 | 
				
			||||||
 | 
					use mirzaev\shabashka\models\traits\document as document_trait,
 | 
				
			||||||
 | 
						mirzaev\shabashka\models\interfaces\document as document_interface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Built-in libraries
 | 
				
			||||||
 | 
					use exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Status (DUMB SHIT)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Trait for initialization of a status
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @uses document_trait
 | 
				
			||||||
 | 
					 * @uses document_interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @method bool|null status(array &$errors) Check document by its status
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package mirzaev\shabashka\models\traits
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
 | 
				
			||||||
 | 
					 * @author mirzaev <mail@domain.zone>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait status
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Status
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * Check document by its status
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param array &$errors Registry of errors
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return ?bool Status, if found
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function status(array &$errors = []): ?bool
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								// Read from ArangoDB and exit (success)
 | 
				
			||||||
 | 
								return $this->document->active ?? false;
 | 
				
			||||||
 | 
							} catch (exception $e) {
 | 
				
			||||||
 | 
								// Writing to the registry of errors
 | 
				
			||||||
 | 
								$errors[] = [
 | 
				
			||||||
 | 
									'text' => $e->getMessage(),
 | 
				
			||||||
 | 
									'file' => $e->getFile(),
 | 
				
			||||||
 | 
									'line' => $e->getLine(),
 | 
				
			||||||
 | 
									'stack' => $e->getTrace()
 | 
				
			||||||
 | 
								];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Exit (fail)
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								author/project/system/public/css/fonts/dejavu.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								author/project/system/public/css/fonts/dejavu.css
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
						font-family: 'DejaVu';
 | 
				
			||||||
 | 
						src: url("/fonts/dejavu/DejaVuLGCSans-ExtraLight.ttf");
 | 
				
			||||||
 | 
						font-weight: 200;
 | 
				
			||||||
 | 
						font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
						font-family: 'DejaVu';
 | 
				
			||||||
 | 
						src: url("/fonts/dejavu/DejaVuLGCSans.ttf");
 | 
				
			||||||
 | 
						font-weight: 400;
 | 
				
			||||||
 | 
						font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
						font-family: 'DejaVu';
 | 
				
			||||||
 | 
						src: url("/fonts/dejavu/DejaVuLGCSans-Oblique.ttf");
 | 
				
			||||||
 | 
						font-weight: 400;
 | 
				
			||||||
 | 
						font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
						font-family: 'DejaVu';
 | 
				
			||||||
 | 
						src: url("/fonts/dejavu/DejaVuLGCSans-Bold.ttf");
 | 
				
			||||||
 | 
						font-weight: 500;
 | 
				
			||||||
 | 
						font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
						font-family: 'DejaVu';
 | 
				
			||||||
 | 
						src: url("/fonts/dejavu/DejaVuLGCSans-BoldOblique.ttf");
 | 
				
			||||||
 | 
						font-weight: 500;
 | 
				
			||||||
 | 
						font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										139
									
								
								author/project/system/public/css/fonts/fira.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										139
									
								
								author/project/system/public/css/fonts/fira.css
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,139 @@
 | 
				
			|||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Hair.woff2') format('woff2'), url('/fonts/fira/FiraSans-Hair.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 100;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-HairItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-HairItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 100;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-UltraLight.woff2') format('woff2'), url('/fonts/fira/FiraSans-UltraLight.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 200;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-UltraLightItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-UltraLightItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 200;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Light.woff2') format('woff2'), url('/fonts/fira/FiraSans-Light.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 300;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-LightItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-LightItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 300;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Regular.woff2') format('woff2'), url('/fonts/fira/FiraSans-Regular.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Italic.woff2') format('woff2'), url('/fonts/fira/FiraSans-Italic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraMono-Medium.woff2') format('woff2'), url('/fonts/fira/FiraMono-Medium.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 500;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-MediumItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-MediumItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 500;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-SemiBold.woff2') format('woff2'), url('/fonts/fira/FiraSans-SemiBold.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 600;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-SemiBoldItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-SemiBoldItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 600;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Bold.woff2') format('woff2'), url('/fonts/fira/FiraSans-Bold.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 700;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-BoldItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-BoldItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 700;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-ExtraBold.woff2') format('woff2'), url('/fonts/fira/FiraSans-ExtraBold.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 800;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-ExtraBoldItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-ExtraBoldItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 800;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-Heavy.woff2') format('woff2'), url('/fonts/fira/FiraSans-Heavy.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 900;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira';
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraSans-HeavyItalic.woff2') format('woff2'), url('/fonts/fira/FiraSans-HeavyItalic.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 900;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira' Mono;
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraMono-Regular.woff2') format('woff2'), url('/fonts/fira/FiraMono-Regular.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Fira' Mono;
 | 
				
			||||||
 | 
					  src: url('/fonts/fira/FiraMono-Bold.woff2') format('woff2'), url('/fonts/fira/FiraMono-Bold.woff') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 600;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								author/project/system/public/css/fonts/hack.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								author/project/system/public/css/fonts/hack.css
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Hack';
 | 
				
			||||||
 | 
					  src: url('/fonts/hack/hack-regular.woff2?sha=3114f1256') format('woff2'), url('/fonts/hack/hack-regular.woff?sha=3114f1256') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					  font-display: swap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Hack';
 | 
				
			||||||
 | 
					  src: url('/fonts/hack/hack-bold.woff2?sha=3114f1256') format('woff2'), url('/fonts/hack/hack-bold.woff?sha=3114f1256') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 700;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					  font-display: swap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Hack';
 | 
				
			||||||
 | 
					  src: url('/fonts/hack/hack-italic.woff2?sha=3114f1256') format('woff2'), url('/fonts/hack/hack-italic.woff?sha=3114f1256') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					  font-display: swap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'Hack';
 | 
				
			||||||
 | 
					  src: url('/fonts/hack/hack-bolditalic.woff2?sha=3114f1256') format('woff2'), url('/fonts/hack/hack-bolditalic.woff?sha=3114f1256') format('woff');
 | 
				
			||||||
 | 
					  font-weight: 700;
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					  font-display: swap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/commissioner.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/commissioner.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-ExtraLight.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-ExtraLight.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSans.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansCondensed.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-BoldOblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono-Oblique.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSansMono.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-BoldItalic.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-BoldItalic.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-Italic.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif-Italic.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerif.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-Bold.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-BoldItalic.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-BoldItalic.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-Italic.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed-Italic.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/dejavu/DejaVuLGCSerifCondensed.ttf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Bold.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Bold.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Bold.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Bold.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Medium.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Medium.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Medium.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Medium.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Regular.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Regular.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Regular.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraMono-Regular.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Bold.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Bold.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Bold.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Bold.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Book.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Book.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Book.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Book.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BookItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BookItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BookItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-BookItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Eight.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Eight.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Eight.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Eight.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-EightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-EightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-EightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-EightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBold.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBold.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBold.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBold.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraBoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLight.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLight.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLight.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLight.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ExtraLightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Four.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Four.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Four.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Four.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-FourItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-FourItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-FourItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-FourItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Hair.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Hair.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Hair.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Hair.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HairItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HairItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HairItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HairItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Heavy.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Heavy.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Heavy.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Heavy.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HeavyItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HeavyItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HeavyItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-HeavyItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Italic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Italic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Italic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Italic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Light.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Light.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Light.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Light.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-LightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-LightItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-LightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-LightItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Medium.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Medium.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Medium.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Medium.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-MediumItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-MediumItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-MediumItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-MediumItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Regular.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Regular.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Regular.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Regular.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBold.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBold.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBold.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBold.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBoldItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-SemiBoldItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Thin.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Thin.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Thin.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Thin.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ThinItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ThinItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ThinItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-ThinItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Two.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Two.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Two.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Two.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user