] */ public function tomb( $size ) { if( is_numeric($size) ): return sprintf('%.02fmb', ($size / 1024) / 1024 ); else: throw new \InvalidArgumentException('Must be an int in function tomb( int $size)!'); endif; } /** * @param $size * @return string */ public function togb( $size ) { return sprintf('%.02fgb', ( ($size / 1024) / 1024 ) / 1024 ); } /** * @param array $array * @param bool|false $jpp * @return string * @throws \InvalidArgumentException */ public static function tojson(array $array, $jpp = false) { if (!is_array ($array)): throw new \InvalidArgumentException; elseif (is_object ($array)): $array = (array)$array; endif; if($jpp): return json_encode ($array, JSON_NUMERIC_CHECK | JSON_PRESERVE_ZERO_FRACTION | JSON_PRETTY_PRINT ); else: return json_encode ($array, JSON_NUMERIC_CHECK | JSON_PRESERVE_ZERO_FRACTION ); endif; } } /** * Class Connection * @package Hathor * @description * Small class to connect to the database */ use \Slim\PDO\Database; class Connection extends Database { private $dsn; /** * @param none * @description * Get database information from configuration * and setup the PDO connection * @return \Slim\PDO\Database connection */ public function __construct() { global $config; $this->dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8', $config->db['host'], $config->db['db']); return parent::__construct($this->dsn, $config->db['user'], $config->db['pass']); } public function __toString() { return $this->dsn; } public function __destruct() { unset($this); } } /** * Class Log * @package Hathor */ class Log extends Hathor { public function write($message) { var_dump($message); } } /** * Class DefaultHeaders * * @package Hathor * @description * Middleware to set default headers that * we want on every request. */ use \Slim\Middleware; class DefaultHeaders extends Middleware { private $strln; public function call() { global $config; $defaults = [ 'X-Powered-By' => 'SlimPHP/2, Hathor Music Api/1.0 (gentoo)', 'X-Hathor-Version' => '1.0/gentoo', 'Allow' => 'GET, HEAD, OPTIONS', 'Content-Language' => 'en', 'Content-Type' => 'application/json; charset=utf-8', 'Server' => 'Hathor Music Api/1.0 (gentoo)', 'X-XSS-Prottection' => '1; mode=block', 'ETag' => md5(time()) ]; $env = $this->app->environment; $env['slim.errors'] = fopen($config->logs['error'], 'w'); // Loop through default headers we want set on every response and set them. foreach($defaults as $headerKey => $headerVal): $this->app->response->headers->set($headerKey, $headerVal); endforeach; // Run inner middleware and application $this->next->call(); // Set the Content-Length + 1 $this->strln = strlen($this->app->response->getBody()); // Check if it is head. If it is we don't want any content length. $this->strln = $this->app->request->isHead() ? 0 : $this->strln; // Set the Content-Length header $this->app->response->headers->set('Content-Length', $this->strln); } }