generated from mirzaev/pot
	Initial commit
This commit is contained in:
		
							
								
								
									
										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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-TwoItalic.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-TwoItalic.woff
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-TwoItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-TwoItalic.woff2
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Ultra.woff
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								author/project/system/public/fonts/fira/FiraSans-Ultra.woff
									
									
									
									
									
										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