diff --git a/flextype/core/Cache.php b/flextype/core/Cache.php index 6f3d4ecd..0a003d81 100755 --- a/flextype/core/Cache.php +++ b/flextype/core/Cache.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,8 +11,18 @@ namespace Flextype; +use Doctrine\Common\Cache as DoctrineCache; use Flextype\Component\Filesystem\Filesystem; -use \Doctrine\Common\Cache as DoctrineCache; +use Memcached; +use Redis; +use RedisException; +use SQLite3; +use function clearstatcache; +use function extension_loaded; +use function function_exists; +use function md5; +use function opcache_reset; +use function time; class Cache { @@ -60,7 +69,7 @@ class Cache $this->flextype = $flextype; // Create Cache Directory - !Filesystem::has(PATH['cache']) and Filesystem::createDir(PATH['cache']); + ! Filesystem::has(PATH['cache']) and Filesystem::createDir(PATH['cache']); // Set current time $this->now = time(); @@ -79,9 +88,8 @@ class Cache * Get Cache Driver * * @access public - * @return object */ - public function getCacheDriver() + public function getCacheDriver() : object { // Try to set default cache driver name $driver_name = $this->setDefaultCacheDriverName($this->flextype['registry']->get('settings.cache.driver')); @@ -94,29 +102,29 @@ class Cache { switch ($driver_name) { case 'apcu': - $driver = $this->setApcuCacheDriver(); - break; + $driver = $this->setApcuCacheDriver(); + break; case 'array': $driver = $this->setArrayCacheDriver(); - break; + break; case 'wincache': - $driver = $this->setWinCacheDriver(); - break; + $driver = $this->setWinCacheDriver(); + break; case 'memcached': $driver = $this->setMemcachedCacheDriver(); - break; + break; case 'sqlite3': $driver = $this->setSQLite3CacheDriver(); - break; + break; case 'zend': $driver = $this->setZendDataCacheDriver(); - break; + break; case 'redis': $driver = $this->setRedisCacheDriver(); - break; + break; default: $driver = $this->setFilesystemCacheDriver(); - break; + break; } return $driver; @@ -129,9 +137,7 @@ class Cache */ protected function setZendDataCacheDriver() { - $driver = new DoctrineCache\ZendDataCache(); - - return $driver; + return new DoctrineCache\ZendDataCache(); } /** @@ -146,12 +152,11 @@ class Cache $cache_directory = PATH['cache'] . '/doctrine/'; // Create doctrine cache directory if its not exists - !Filesystem::has($cache_directory) and Filesystem::createDir($cache_directory); + ! Filesystem::has($cache_directory) and Filesystem::createDir($cache_directory); - $db = new \SQLite3($cache_directory . $this->flextype['registry']->get('settings.cache.sqlite3.database', 'flextype') . '.db'); - $driver = new DoctrineCache\SQLite3Cache($db, $this->flextype['registry']->get('settings.cache.sqlite3.table', 'flextype')); + $db = new SQLite3($cache_directory . $this->flextype['registry']->get('settings.cache.sqlite3.database', 'flextype') . '.db'); - return $driver; + return new DoctrineCache\SQLite3Cache($db, $this->flextype['registry']->get('settings.cache.sqlite3.table', 'flextype')); } /** @@ -161,7 +166,7 @@ class Cache */ protected function setMemcachedCacheDriver() { - $memcached = new \Memcached(); + $memcached = new Memcached(); $memcached->addServer( $this->flextype['registry']->get('settings.cache.memcached.server', 'localhost'), $this->flextype['registry']->get('settings.cache.memcache.port', 11211) @@ -181,21 +186,18 @@ class Cache */ protected function setWinCacheDriver() { - $driver = new DoctrineCache\WinCacheCache(); - - return $driver; + return new DoctrineCache\WinCacheCache(); } /** * The ArrayCache driver stores the cache data in PHPs memory and is not persisted anywhere. * This can be useful for caching things in memory for a single process when you don't need the cache to be persistent across processes. + * * @access protected */ protected function setArrayCacheDriver() { - $driver = new DoctrineCache\ArrayCache(); - - return $driver; + return new DoctrineCache\ArrayCache(); } /** @@ -206,9 +208,7 @@ class Cache */ protected function setApcuCacheDriver() { - $driver = new DoctrineCache\ApcuCache(); - - return $driver; + return new DoctrineCache\ApcuCache(); } /** @@ -219,7 +219,7 @@ class Cache */ protected function setRedisCacheDriver() { - $redis = new \Redis(); + $redis = new Redis(); $socket = $this->flextype['registry']->get('settings.cache.redis.socket', false); $password = $this->flextype['registry']->get('settings.cache.redis.password', false); @@ -233,8 +233,8 @@ class Cache } // Authenticate with password if set - if ($password && !$redis->auth($password)) { - throw new \RedisException('Redis authentication failed'); + if ($password && ! $redis->auth($password)) { + throw new RedisException('Redis authentication failed'); } $driver = new DoctrineCache\RedisCache(); @@ -254,22 +254,21 @@ class Cache $cache_directory = PATH['cache'] . '/doctrine/'; // Create doctrine cache directory if its not exists - !Filesystem::has($cache_directory) and Filesystem::createDir($cache_directory); - $driver = new DoctrineCache\FilesystemCache($cache_directory); + ! Filesystem::has($cache_directory) and Filesystem::createDir($cache_directory); - return $driver; + return new DoctrineCache\FilesystemCache($cache_directory); } /** * Set Default Cache Driver Name * - * @access protected * @param string $driver_name Driver name. - * @return string + * + * @access protected */ - protected function setDefaultCacheDriverName(string $driver_name) + protected function setDefaultCacheDriverName(string $driver_name) : string { - if (!$driver_name || $driver_name == 'auto') { + if (! $driver_name || $driver_name === 'auto') { if (extension_loaded('apcu')) { $driver_name = 'apcu'; } elseif (extension_loaded('wincache')) { @@ -286,9 +285,8 @@ class Cache * Returns driver variable * * @access public - * @return object */ - public function driver() + public function driver() : object { return $this->driver; } @@ -297,7 +295,6 @@ class Cache * Get cache key. * * @access public - * @return string */ public function getKey() : string { @@ -307,52 +304,58 @@ class Cache /** * Fetches an entry from the cache. * - * @access public * @param string $id The id of the cache entry to fetch. + * * @return mixed The cached data or FALSE, if no cache entry exists for the given id. + * + * @access public */ public function fetch(string $id) { if ($this->flextype['registry']->get('settings.cache.enabled')) { return $this->driver->fetch($id); - } else { - return false; } + + return false; } /** * Returns a boolean state of whether or not the item exists in the cache based on id key * - * @param string $id the id of the cached data entry + * @param string $id the id of the cached data entry + * * @return bool true if the cached items exists */ - public function contains($id) + public function contains(string $id) : bool { if ($this->flextype['registry']->get('settings.cache.enabled')) { return $this->driver->contains($id); - } else { - return false; } + + return false; } /** * Puts data into the cache. * - * @access public * @param string $id The cache id. * @param mixed $data The cache entry/data. * @param int $lifetime The lifetime in number of seconds for this cache entry. * If zero (the default), the entry never expires (although it may be deleted from the cache * to make place for other entries). + * + * @access public */ - public function save(string $id, $data, $lifetime = null) + public function save(string $id, $data, ?int $lifetime = null) : void { - if ($this->flextype['registry']->get('settings.cache.enabled')) { - if ($lifetime === null) { - $lifetime = $this->getLifetime(); - } - $this->driver->save($id, $data, $lifetime); + if (! $this->flextype['registry']->get('settings.cache.enabled')) { + return; } + + if ($lifetime === null) { + $lifetime = $this->getLifetime(); + } + $this->driver->save($id, $data, $lifetime); } /** @@ -388,27 +391,31 @@ class Cache /** * Set the cache lifetime. * - * @access public * @param int $future timestamp + * + * @access public */ - public function setLifetime(int $future) + public function setLifetime(int $future) : void { - if (!$future) { + if (! $future) { return; } $interval = $future-$this->now; - if ($interval > 0 && $interval < $this->getLifetime()) { - $this->lifetime = $interval; + if ($interval <= 0 || $interval >= $this->getLifetime()) { + return; } + + $this->lifetime = $interval; } /** * Retrieve the cache lifetime (in seconds) * - * @access public * @return mixed + * + * @access public */ public function getLifetime() { diff --git a/flextype/core/Controller.php b/flextype/core/Controller.php index c3c07917..fc904a31 100644 --- a/flextype/core/Controller.php +++ b/flextype/core/Controller.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE diff --git a/flextype/core/Entries.php b/flextype/core/Entries.php index 4bbb7723..7ddec908 100755 --- a/flextype/core/Entries.php +++ b/flextype/core/Entries.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,11 +11,16 @@ namespace Flextype; -use Flextype\Component\Arr\Arr; -use Flextype\Component\Filesystem\Filesystem; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Expr\Comparison; +use Flextype\Component\Filesystem\Filesystem; +use function ltrim; +use function md5; +use function rename; +use function rtrim; +use function str_replace; +use function strpos; class Entries { @@ -56,9 +60,11 @@ class Entries /** * Fetch single entry * - * @access public * @param string $id Entry ID + * * @return array|false The entry contents or false on failure. + * + * @access public */ public function fetch(string $id) { @@ -67,7 +73,6 @@ class Entries // If requested entry founded then process it if (Filesystem::has($entry_file)) { - // Create unique entry cache_id // Entry Cache ID = entry + entry file + entry file time stamp if ($timestamp = Filesystem::getTimestamp($entry_file)) { @@ -78,71 +83,65 @@ class Entries // Try to get the requested entry from cache if ($this->flextype['cache']->contains($entry_cache_id)) { - // Try to fetch requested entry from the cache if ($entry = $this->flextype['cache']->fetch($entry_cache_id)) { - // Run event onEntryAfterInitialized $this->flextype['emitter']->emit('onEntryAfterInitialized'); // Return entry return $entry; - } else { - return false; } + return false; + // else Try to get requested entry from the filesystem - } else { - - // Try to get requested entry body content - if ($entry_body = Filesystem::read($entry_file)) { - - // Try to decode requested entry body content - if ($entry_decoded = JsonParser::decode($entry_body)) { - - // - // Add predefined entry items - // - - // Entry Date - $entry_decoded['published_at'] = $entry_decoded['published_at'] ? $entry_decoded['published_at'] : Filesystem::getTimestamp($entry_file); - $entry_decoded['created_at'] = $entry_decoded['created_at'] ? $entry_decoded['created_at'] : Filesystem::getTimestamp($entry_file); - - // Entry Timestamp - $entry_decoded['modified_at'] = Filesystem::getTimestamp($entry_file); - - // Entry Slug - $entry_decoded['slug'] = $entry_decoded['slug'] ?? ltrim(rtrim($id, '/'), '/'); - - // Save decoded entry content into the cache - $this->flextype['cache']->save($entry_cache_id, $entry_decoded); - - // Set entry to the Entry class property $entry - $this->entry = $entry_decoded; - - // Run event onEntryAfterInitialized - $this->flextype['emitter']->emit('onEntryAfterInitialized'); - - // Return entry from the Entry class property $entry - return $this->entry; - } else { - return false; - } - } else { - return false; - } } - } else { + + // Try to get requested entry body content + if ($entry_body = Filesystem::read($entry_file)) { + // Try to decode requested entry body content + if ($entry_decoded = JsonParser::decode($entry_body)) { + // Add predefined entry items + // Entry Date + $entry_decoded['published_at'] = $entry_decoded['published_at'] ? $entry_decoded['published_at'] : Filesystem::getTimestamp($entry_file); + $entry_decoded['created_at'] = $entry_decoded['created_at'] ? $entry_decoded['created_at'] : Filesystem::getTimestamp($entry_file); + + // Entry Timestamp + $entry_decoded['modified_at'] = Filesystem::getTimestamp($entry_file); + + // Entry Slug + $entry_decoded['slug'] = $entry_decoded['slug'] ?? ltrim(rtrim($id, '/'), '/'); + + // Save decoded entry content into the cache + $this->flextype['cache']->save($entry_cache_id, $entry_decoded); + + // Set entry to the Entry class property $entry + $this->entry = $entry_decoded; + + // Run event onEntryAfterInitialized + $this->flextype['emitter']->emit('onEntryAfterInitialized'); + + // Return entry from the Entry class property $entry + return $this->entry; + } + + return false; + } + return false; } + + return false; } /** * Fetch entries collection * - * @access public * @param array $args Query arguments + * * @return array The entries + * + * @access public */ public function fetchAll(string $id, array $args = []) : array { @@ -151,44 +150,44 @@ class Entries // Set Expression $expression = [ - '=' => Comparison::EQ, - '<>' => Comparison::NEQ, - '<' => Comparison::LT, - '<=' => Comparison::LTE, - '>' => Comparison::GT, - '>=' => Comparison::GTE, - 'is' => Comparison::IS, - 'in' => Comparison::IN, - 'nin' => Comparison::NIN, - 'contains' => Comparison::CONTAINS, - 'member_of' => Comparison::MEMBER_OF, - 'start_with' => Comparison::STARTS_WITH, - 'ends_with' => Comparison::ENDS_WITH, - ]; + '=' => Comparison::EQ, + '<>' => Comparison::NEQ, + '<' => Comparison::LT, + '<=' => Comparison::LTE, + '>' => Comparison::GT, + '>=' => Comparison::GTE, + 'is' => Comparison::IS, + 'in' => Comparison::IN, + 'nin' => Comparison::NIN, + 'contains' => Comparison::CONTAINS, + 'member_of' => Comparison::MEMBER_OF, + 'start_with' => Comparison::STARTS_WITH, + 'ends_with' => Comparison::ENDS_WITH, + ]; // Set Direction $direction = [ 'asc' => Criteria::ASC, - 'desc' => Criteria::DESC + 'desc' => Criteria::DESC, ]; // Bind: entry id $bind_id = $id; // Bind: recursive - $bind_recursive = (isset($args['recursive'])) ? $args['recursive'] : false; + $bind_recursive = $args['recursive'] ?? false; // Bind: set first result - $bind_set_first_result = (isset($args['set_first_result'])) ? $args['set_first_result'] : false; + $bind_set_first_result = $args['set_first_result'] ?? false; // Bind: set max result - $bind_set_max_result = (isset($args['set_max_result'])) ? $args['set_max_result'] : false; + $bind_set_max_result = $args['set_max_result'] ?? false; // Bind: where if (isset($args['where']['key']) && isset($args['where']['expr']) && isset($args['where']['value'])) { - $bind_where = []; - $bind_where['where']['key'] = $args['where']['key']; - $bind_where['where']['expr'] = $expression[$args['where']['expr']]; + $bind_where = []; + $bind_where['where']['key'] = $args['where']['key']; + $bind_where['where']['expr'] = $expression[$args['where']['expr']]; $bind_where['where']['value'] = $args['where']['value']; } else { $bind_where = false; @@ -196,9 +195,9 @@ class Entries // Bind: and where if (isset($args['and_where']['key']) && isset($args['and_where']['expr']) && isset($args['and_where']['value'])) { - $bind_and_where = []; - $bind_and_where['and_where']['key'] = $args['and_where']['key']; - $bind_and_where['and_where']['expr'] = $expression[$args['and_where']['expr']]; + $bind_and_where = []; + $bind_and_where['and_where']['key'] = $args['and_where']['key']; + $bind_and_where['and_where']['expr'] = $expression[$args['and_where']['expr']]; $bind_and_where['and_where']['value'] = $args['and_where']['value']; } else { $bind_and_where = false; @@ -206,9 +205,9 @@ class Entries // Bind: or where if (isset($args['or_where']['key']) && isset($args['or_where']['expr']) && isset($args['or_where']['value'])) { - $bind_or_where = []; - $bind_or_where['or_where']['key'] = $args['or_where']['key']; - $bind_or_where['or_where']['expr'] = $expression[$args['or_where']['expr']]; + $bind_or_where = []; + $bind_or_where['or_where']['key'] = $args['or_where']['key']; + $bind_or_where['or_where']['expr'] = $expression[$args['or_where']['expr']]; $bind_or_where['or_where']['value'] = $args['or_where']['value']; } else { $bind_or_where = false; @@ -216,8 +215,8 @@ class Entries // Bind: order by if (isset($args['order_by']['field']) && isset($args['order_by']['direction'])) { - $bind_order_by = []; - $bind_order_by['order_by']['field'] = $args['order_by']['field']; + $bind_order_by = []; + $bind_order_by['order_by']['field'] = $args['order_by']['field']; $bind_order_by['order_by']['direction'] = $args['order_by']['direction']; } else { $bind_order_by = false; @@ -237,7 +236,7 @@ class Entries if (strpos($current_entry['path'], $bind_id . '/entry.json') !== false) { // ignore ... } else { - if ($current_entry['type'] == 'dir' && Filesystem::has($current_entry['path'] . '/entry.json')) { + if ($current_entry['type'] === 'dir' && Filesystem::has($current_entry['path'] . '/entry.json')) { if ($timestamp = Filesystem::getTimestamp($current_entry['path'] . '/entry.json')) { $_entries_ids .= 'entry:' . ltrim(rtrim(str_replace(PATH['entries'], '', $current_entry['path']), '/'), '/') . ' timestamp:' . $timestamp; } else { @@ -250,28 +249,26 @@ class Entries // Create unique entries $cache_id $cache_id = md5($_entries_ids . $bind_id . - (($bind_recursive) ? 'true' : 'false') . - (($bind_set_max_result) ? $bind_set_max_result : 'false') . - (($bind_set_first_result) ? $bind_set_first_result : 'false') . - (($bind_where['where']['key']) ? $bind_where['where']['key'] : 'false') . - (($bind_where['where']['expr']) ? $bind_where['where']['expr'] : 'false') . - (($bind_where['where']['value']) ? $bind_where['where']['value'] : 'false') . - (($bind_and_where['and_where']['key']) ? $bind_and_where['and_where']['key'] : 'false') . - (($bind_and_where['and_where']['expr']) ? $bind_and_where['and_where']['expr'] : 'false') . - (($bind_and_where['and_where']['value']) ? $bind_and_where['and_where']['value'] : 'false') . - (($bind_or_where['or_where']['key']) ? $bind_or_where['or_where']['key'] : 'false') . - (($bind_or_where['or_where']['expr']) ? $bind_or_where['or_where']['expr'] : 'false') . - (($bind_or_where['or_where']['value']) ? $bind_or_where['or_where']['value'] : 'false') . - (($bind_order_by['order_by']['field']) ? $bind_order_by['order_by']['field'] : 'false') . - (($bind_order_by['order_by']['direction']) ? $bind_order_by['order_by']['direction'] : 'false') - ); + ($bind_recursive ? 'true' : 'false') . + ($bind_set_max_result ? $bind_set_max_result : 'false') . + ($bind_set_first_result ? $bind_set_first_result : 'false') . + ($bind_where['where']['key'] ? $bind_where['where']['key'] : 'false') . + ($bind_where['where']['expr'] ? $bind_where['where']['expr'] : 'false') . + ($bind_where['where']['value'] ? $bind_where['where']['value'] : 'false') . + ($bind_and_where['and_where']['key'] ? $bind_and_where['and_where']['key'] : 'false') . + ($bind_and_where['and_where']['expr'] ? $bind_and_where['and_where']['expr'] : 'false') . + ($bind_and_where['and_where']['value'] ? $bind_and_where['and_where']['value'] : 'false') . + ($bind_or_where['or_where']['key'] ? $bind_or_where['or_where']['key'] : 'false') . + ($bind_or_where['or_where']['expr'] ? $bind_or_where['or_where']['expr'] : 'false') . + ($bind_or_where['or_where']['value'] ? $bind_or_where['or_where']['value'] : 'false') . + ($bind_order_by['order_by']['field'] ? $bind_order_by['order_by']['field'] : 'false') . + ($bind_order_by['order_by']['direction'] ? $bind_order_by['order_by']['direction'] : 'false')); // If requested entries exist with a specific cache_id, // then we take them from the cache otherwise we look for them. if ($this->flextype['cache']->contains($cache_id)) { $entries = $this->flextype['cache']->fetch($cache_id); } else { - // Create entries array from entries list and ignore current requested entry foreach ($entries_list as $current_entry) { if (strpos($current_entry['path'], $bind_id . '/entry.json') !== false) { @@ -279,8 +276,7 @@ class Entries } else { // We are checking... // Whether the requested entry is a director and whether the file entry.json is in this directory. - if ($current_entry['type'] == 'dir' && Filesystem::has($current_entry['path'] . '/entry.json')) { - + if ($current_entry['type'] === 'dir' && Filesystem::has($current_entry['path'] . '/entry.json')) { // Get entry uid // 1. Remove entries path // 2. Remove left and right slashes @@ -357,10 +353,12 @@ class Entries /** * Rename entry. * - * @access public * @param string $id Entry id * @param string $new_id New entry id + * * @return bool True on success, false on failure. + * + * @access public */ public function rename(string $id, string $new_id) : bool { @@ -370,10 +368,10 @@ class Entries /** * Update entry * + * @param string $id Entry + * @param array $data Data + * * @access public - * @param string $id Entry - * @param array $data Data - * @return bool */ public function update(string $id, array $data) : bool { @@ -381,52 +379,52 @@ class Entries if (Filesystem::has($entry_file)) { return Filesystem::write($entry_file, JsonParser::encode($data)); - } else { - return false; } + + return false; } /** * Create entry * + * @param string $id Entry id + * @param array $data Data + * * @access public - * @param string $id Entry id - * @param array $data Data - * @return bool */ public function create(string $id, array $data) : bool { $entry_dir = $this->_dir_location($id); // Check if new entry directory exists - if (!Filesystem::has($entry_dir)) { - + if (! Filesystem::has($entry_dir)) { // Try to create directory for new entry if (Filesystem::createDir($entry_dir)) { - // Entry file path $entry_file = $entry_dir . '/entry.json'; // Check if new entry file exists - if (!Filesystem::has($entry_file)) { + if (! Filesystem::has($entry_file)) { return Filesystem::write($entry_file, JsonParser::encode($data)); - } else { - return false; } - } else { + return false; } - } else { + return false; } + + return false; } /** * Delete entry. * - * @access public * @param string $id Entry id + * * @return bool True on success, false on failure. + * + * @access public */ public function delete(string $id) : bool { @@ -436,13 +434,15 @@ class Entries /** * Copy entry(s) * - * @access public - * @param string $id Entry id - * @param string $new_id New entry id - * @param bool $recursive Recursive copy entries. + * @param string $id Entry id + * @param string $new_id New entry id + * @param bool $recursive Recursive copy entries. + * * @return bool True on success, false on failure. + * + * @access public */ - public function copy(string $id, string $new_id, bool $recursive = false) + public function copy(string $id, string $new_id, bool $recursive = false) : bool { return Filesystem::copy($this->_dir_location($id), $this->_dir_location($new_id), $recursive); } @@ -450,9 +450,9 @@ class Entries /** * Check whether entry exists. * - * @access public * @param string $id Entry - * @return bool + * + * @access public */ public function has(string $id) : bool { @@ -462,9 +462,9 @@ class Entries /** * Helper method _file_location * - * @access private * @param string $id Entry id - * @return string + * + * @access private */ private function _file_location(string $id) : string { @@ -474,9 +474,9 @@ class Entries /** * Helper method _dir_location * - * @access private * @param string $id Entry id - * @return string + * + * @access private */ private function _dir_location(string $id) : string { diff --git a/flextype/core/Fieldsets.php b/flextype/core/Fieldsets.php index b3539895..fef17cce 100644 --- a/flextype/core/Fieldsets.php +++ b/flextype/core/Fieldsets.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -13,6 +12,8 @@ namespace Flextype; use Flextype\Component\Filesystem\Filesystem; +use function count; +use function rename; class Fieldsets { @@ -34,9 +35,11 @@ class Fieldsets /** * Fetch fieldset * - * @access public * @param string $id Fieldset id + * * @return array|false The entry contents or false on failure. + * + * @access public */ public function fetch(string $id) { @@ -46,22 +49,23 @@ class Fieldsets if ($fieldset_body = Filesystem::read($fieldset_file)) { if ($fieldset_decoded = JsonParser::decode($fieldset_body)) { return $fieldset_decoded; - } else { - return false; } - } else { + return false; } - } else { + return false; } + + return false; } /** * Fetch all fieldsets * - * @access public * @return array + * + * @access public */ public function fetchAll() : array { @@ -74,10 +78,12 @@ class Fieldsets // If there is any fieldsets file then go... if (count($_fieldsets) > 0) { foreach ($_fieldsets as $fieldset) { - if ($fieldset['type'] == 'file' && $fieldset['extension'] == 'json') { - $fieldset_content = JsonParser::decode(Filesystem::read($fieldset['path'])); - $fieldsets[$fieldset['basename']] = $fieldset_content['title']; + if ($fieldset['type'] !== 'file' || $fieldset['extension'] !== 'json') { + continue; } + + $fieldset_content = JsonParser::decode(Filesystem::read($fieldset['path'])); + $fieldsets[$fieldset['basename']] = $fieldset_content['title']; } } @@ -88,10 +94,12 @@ class Fieldsets /** * Rename fieldset * - * @access public * @param string $id Fieldset id * @param string $new_id New fieldset id + * * @return bool True on success, false on failure. + * + * @access public */ public function rename(string $id, string $new_id) : bool { @@ -101,10 +109,12 @@ class Fieldsets /** * Update fieldset * - * @access public - * @param string $id Fieldset id - * @param array $data Fieldset data to save + * @param string $id Fieldset id + * @param array $data Fieldset data to save + * * @return bool True on success, false on failure. + * + * @access public */ public function update(string $id, array $data) : bool { @@ -112,36 +122,40 @@ class Fieldsets if (Filesystem::has($fieldset_file)) { return Filesystem::write($fieldset_file, JsonParser::encode($data)); - } else { - return false; } + + return false; } /** * Create fieldset * - * @access public - * @param string $id Fieldset id - * @param array $data Fieldset data to save + * @param string $id Fieldset id + * @param array $data Fieldset data to save + * * @return bool True on success, false on failure. + * + * @access public */ public function create(string $id, array $data) : bool { $fieldset_file = $this->_file_location($id); - if (!Filesystem::has($fieldset_file)) { + if (! Filesystem::has($fieldset_file)) { return Filesystem::write($fieldset_file, JsonParser::encode($data)); - } else { - return false; } + + return false; } /** * Delete fieldset * - * @access public * @param string $id Fieldset id + * * @return bool True on success, false on failure. + * + * @access public */ public function delete(string $id) : bool { @@ -151,10 +165,12 @@ class Fieldsets /** * Copy fieldset * - * @access public - * @param string $id Fieldset id - * @param string $new_id New fieldset id + * @param string $id Fieldset id + * @param string $new_id New fieldset id + * * @return bool True on success, false on failure. + * + * @access public */ public function copy(string $id, string $new_id) : bool { @@ -164,9 +180,11 @@ class Fieldsets /** * Check whether fieldset exists. * - * @access public * @param string $id Fieldset id + * * @return bool True on success, false on failure. + * + * @access public */ public function has(string $id) : bool { @@ -177,7 +195,6 @@ class Fieldsets * Helper method _dir_location * * @access private - * @return string */ private function _dir_location() : string { @@ -187,9 +204,9 @@ class Fieldsets /** * Helper method _file_location * - * @access private * @param string $id Fieldsets id - * @return string + * + * @access private */ private function _file_location(string $id) : string { diff --git a/flextype/core/Middleware.php b/flextype/core/Middleware.php index d6ca4417..9ea0743a 100644 --- a/flextype/core/Middleware.php +++ b/flextype/core/Middleware.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE diff --git a/flextype/core/Plugins.php b/flextype/core/Plugins.php index 18f95194..773d17c4 100755 --- a/flextype/core/Plugins.php +++ b/flextype/core/Plugins.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,9 +11,15 @@ namespace Flextype; +use Flextype\Component\Arr\Arr; use Flextype\Component\Filesystem\Filesystem; use Flextype\Component\I18n\I18n; -use Flextype\Component\Arr\Arr; +use RuntimeException; +use function array_merge; +use function count; +use function filemtime; +use function is_array; +use function md5; class Plugins { @@ -38,7 +43,7 @@ class Plugins public function __construct($flextype, $app) { $this->flextype = $flextype; - $this->locales = JsonParser::decode(Filesystem::read(ROOT_DIR . '/flextype/config/locales.json')); + $this->locales = JsonParser::decode(Filesystem::read(ROOT_DIR . '/flextype/config/locales.json')); } public function getLocales() @@ -50,7 +55,6 @@ class Plugins * Init Plugins * * @access private - * @return void */ public function init($flextype, $app) : void { @@ -59,96 +63,103 @@ class Plugins // Get Plugins List $_plugins_list = Filesystem::listContents(PATH['plugins']); - $plugins_list = []; + $plugins_list = []; - foreach($_plugins_list as $plugin) { - if ($plugin['type'] == 'dir') { - $plugins_list[] = $plugin; + foreach ($_plugins_list as $plugin) { + if ($plugin['type'] !== 'dir') { + continue; } + + $plugins_list[] = $plugin; } // Get plugins cache ID $plugins_cache_id = $this->getPluginsCacheID($plugins_list); // If Plugins List isnt empty then create plugin cache ID - if (is_array($plugins_list) && count($plugins_list) > 0) { + if (! is_array($plugins_list) || count($plugins_list) <= 0) { + return; + } - // Get plugins list from cache or scan plugins folder and create new plugins cache item - if ($this->flextype['cache']->contains($plugins_cache_id)) { - $this->flextype['registry']->set('plugins', $this->flextype['cache']->fetch($plugins_cache_id)); - } else { + // Get plugins list from cache or scan plugins folder and create new plugins cache item + if ($this->flextype['cache']->contains($plugins_cache_id)) { + $this->flextype['registry']->set('plugins', $this->flextype['cache']->fetch($plugins_cache_id)); + } else { + // If Plugins List isnt empty + if (is_array($plugins_list) && count($plugins_list) > 0) { + // Init plugin configs + $_plugins_config = []; + $plugin_settings = []; + $plugin_config = []; - // If Plugins List isnt empty - if (is_array($plugins_list) && count($plugins_list) > 0) { - - // Init plugin configs - $_plugins_config = []; - $plugin_settings = []; - $plugin_config = []; - - // Go through... - foreach ($plugins_list as $plugin) { - if (Filesystem::has($_plugin_settings = PATH['plugins'] . '/' . $plugin['dirname'] . '/settings.json')) { - if (($content = Filesystem::read($_plugin_settings)) === false) { - throw new \RuntimeException('Load file: ' . $_plugin_settings . ' - failed!'); - } else { - $plugin_settings = JsonParser::decode($content); - } + // Go through... + foreach ($plugins_list as $plugin) { + if (Filesystem::has($_plugin_settings = PATH['plugins'] . '/' . $plugin['dirname'] . '/settings.json')) { + if (($content = Filesystem::read($_plugin_settings)) === false) { + throw new RuntimeException('Load file: ' . $_plugin_settings . ' - failed!'); } - if (Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.json')) { - if (($content = Filesystem::read($_plugin_config)) === false) { - throw new \RuntimeException('Load file: ' . $_plugin_config . ' - failed!'); - } else { - $plugin_config = JsonParser::decode($content); - } - } - - $_plugins_config[$plugin['dirname']] = array_merge($plugin_settings, $plugin_config); - - // Set default plugin priority 0 - if (!isset($_plugins_config[$plugin['dirname']]['priority'])) { - $_plugins_config[$plugin['dirname']]['priority'] = 0; - } + $plugin_settings = JsonParser::decode($content); } - // Sort plugins list by priority. - $_plugins_config = Arr::sort($_plugins_config, 'priority', 'DESC'); + if (Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.json')) { + if (($content = Filesystem::read($_plugin_config)) === false) { + throw new RuntimeException('Load file: ' . $_plugin_config . ' - failed!'); + } - $this->flextype['registry']->set('plugins', $_plugins_config); - $this->flextype['cache']->save($plugins_cache_id, $_plugins_config); + $plugin_config = JsonParser::decode($content); + } + + $_plugins_config[$plugin['dirname']] = array_merge($plugin_settings, $plugin_config); + + // Set default plugin priority 0 + if (isset($_plugins_config[$plugin['dirname']]['priority'])) { + continue; + } + + $_plugins_config[$plugin['dirname']]['priority'] = 0; } + + // Sort plugins list by priority. + $_plugins_config = Arr::sort($_plugins_config, 'priority', 'DESC'); + + $this->flextype['registry']->set('plugins', $_plugins_config); + $this->flextype['cache']->save($plugins_cache_id, $_plugins_config); } - - $this->createPluginsDictionary($plugins_list); - - $this->includeEnabledPlugins($flextype, $app); - - $this->flextype['emitter']->emit('onPluginsInitialized'); } + + $this->createPluginsDictionary($plugins_list); + + $this->includeEnabledPlugins($flextype, $app); + + $this->flextype['emitter']->emit('onPluginsInitialized'); } /** * Create plugins dictionary * * @param array $plugins_list Plugins list + * * @access protected - * @return void */ private function createPluginsDictionary(array $plugins_list) : void { - if (is_array($plugins_list) && count($plugins_list) > 0) { - foreach ($this->locales as $locale => $locale_title) { - foreach ($plugins_list as $plugin) { - $language_file = PATH['plugins'] . '/' . $plugin['dirname'] . '/lang/' . $locale . '.json'; - if (Filesystem::has($language_file)) { - if (($content = Filesystem::read($language_file)) === false) { - throw new \RuntimeException('Load file: ' . $language_file . ' - failed!'); - } else { - I18n::add(JsonParser::decode($content), $locale); - } - } + if (! is_array($plugins_list) || count($plugins_list) <= 0) { + return; + } + + foreach ($this->locales as $locale => $locale_title) { + foreach ($plugins_list as $plugin) { + $language_file = PATH['plugins'] . '/' . $plugin['dirname'] . '/lang/' . $locale . '.json'; + if (! Filesystem::has($language_file)) { + continue; } + + if (($content = Filesystem::read($language_file)) === false) { + throw new RuntimeException('Load file: ' . $language_file . ' - failed!'); + } + + I18n::add(JsonParser::decode($content), $locale); } } } @@ -157,8 +168,8 @@ class Plugins * Get plugins cache ID * * @param array $plugins_list Plugins list + * * @access protected - * @return string */ private function getPluginsCacheID(array $plugins_list) : string { @@ -168,10 +179,12 @@ class Plugins // Go through... if (is_array($plugins_list) && count($plugins_list) > 0) { foreach ($plugins_list as $plugin) { - if (Filesystem::has($_plugin_settings = PATH['plugins'] . '/' . $plugin['dirname'] . '/settings.json') and - Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.json')) { - $_plugins_cache_id .= filemtime($_plugin_settings) . filemtime($_plugin_config); + if (! Filesystem::has($_plugin_settings = PATH['plugins'] . '/' . $plugin['dirname'] . '/settings.json') or + ! Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.json')) { + continue; } + + $_plugins_cache_id .= filemtime($_plugin_settings) . filemtime($_plugin_config); } } @@ -186,16 +199,19 @@ class Plugins * Include enabled plugins * * @access protected - * @return void */ private function includeEnabledPlugins($flextype, $app) : void { - if (is_array($this->flextype['registry']->get('plugins')) && count($this->flextype['registry']->get('plugins')) > 0) { - foreach ($this->flextype['registry']->get('plugins') as $plugin_name => $plugin) { - if ($this->flextype['registry']->get('plugins.' . $plugin_name . '.enabled')) { - include_once PATH['plugins'] . '/' . $plugin_name . '/bootstrap.php'; - } + if (! is_array($this->flextype['registry']->get('plugins')) || count($this->flextype['registry']->get('plugins')) <= 0) { + return; + } + + foreach ($this->flextype['registry']->get('plugins') as $plugin_name => $plugin) { + if (! $this->flextype['registry']->get('plugins.' . $plugin_name . '.enabled')) { + continue; } + + include_once PATH['plugins'] . '/' . $plugin_name . '/bootstrap.php'; } } } diff --git a/flextype/core/Snippets.php b/flextype/core/Snippets.php index a13c070e..e5c95fd3 100644 --- a/flextype/core/Snippets.php +++ b/flextype/core/Snippets.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -13,6 +12,13 @@ namespace Flextype; use Flextype\Component\Filesystem\Filesystem; +use RuntimeException; +use const EXTR_PREFIX_ALL; +use function count; +use function extract; +use function ob_get_clean; +use function ob_start; +use function rename; class Snippets { @@ -34,16 +40,18 @@ class Snippets public function __construct($flextype, $app) { $this->flextype = $flextype; - $this->app = $app; + $this->app = $app; } /** * Exec snippet * - * @access public - * @param string $id Snippet id + * @param string $id Snippet id + * * @return string|bool Returns the contents of the output buffer and end output buffering. * If output buffering isn't active then FALSE is returned. + * + * @access public */ public function exec(string $id) { @@ -53,9 +61,11 @@ class Snippets /** * Fetch snippet * - * @access public * @param string $id Snippet id + * * @return string|false The snippet contents or false on failure. + * + * @access public */ public function fetch(string $id) { @@ -64,19 +74,20 @@ class Snippets if (Filesystem::has($snippet_file)) { if ($snippet_body = Filesystem::read($snippet_file)) { return $snippet_body; - } else { - return false; } - } else { + return false; } + + return false; } /** * Fetch Snippets * - * @access public * @return array + * + * @access public */ public function fetchAll() : array { @@ -88,9 +99,11 @@ class Snippets // If there is any snippets file then go... if (count($_snippets) > 0) { foreach ($_snippets as $snippet) { - if ($snippet['type'] == 'file' && $snippet['extension'] == 'php') { - $snippets[$snippet['basename']] = $snippet['basename']; + if ($snippet['type'] !== 'file' || $snippet['extension'] !== 'php') { + continue; } + + $snippets[$snippet['basename']] = $snippet['basename']; } } @@ -101,10 +114,12 @@ class Snippets /** * Rename snippet * - * @access public * @param string $id Snippet id * @param string $new_id New snippet id + * * @return bool True on success, false on failure. + * + * @access public */ public function rename(string $id, string $new_id) : bool { @@ -114,10 +129,12 @@ class Snippets /** * Update Snippet * - * @access public * @param string $id Snippet id * @param string $data Data + * * @return bool True on success, false on failure. + * + * @access public */ public function update(string $id, string $data) : bool { @@ -125,37 +142,41 @@ class Snippets if (Filesystem::has($snippet_file)) { return Filesystem::write($snippet_file, $data); - } else { - return false; } + + return false; } /** * Create snippet * - * @access public * @param string $id Snippet id * @param string $data Data + * * @return bool True on success, false on failure. + * + * @access public */ public function create(string $id, string $data = '') : bool { $snippet_file = $this->_file_location($id); // Check if new entry file exists - if (!Filesystem::has($snippet_file)) { + if (! Filesystem::has($snippet_file)) { return Filesystem::write($snippet_file, $data); - } else { - return false; } + + return false; } /** * Delete snippet. * - * @access public * @param string $id Snippet id + * * @return bool True on success, false on failure. + * + * @access public */ public function delete(string $id) : bool { @@ -165,10 +186,12 @@ class Snippets /** * Copy snippet * - * @access public - * @param string $id Snippet id - * @param string $new_id New snippet id + * @param string $id Snippet id + * @param string $new_id New snippet id + * * @return bool True on success, false on failure. + * + * @access public */ public function copy(string $id, string $new_id) : bool { @@ -178,9 +201,11 @@ class Snippets /** * Check whether snippet exists. * - * @access public * @param string $id Snippet id + * * @return bool True on success, false on failure. + * + * @access public */ public function has(string $id) : bool { @@ -190,10 +215,12 @@ class Snippets /** * Helper private method _exec_snippet * - * @access private - * @param array $vars Vars + * @param array $vars Vars + * * @return string|bool Returns the contents of the output buffer and end output buffering. * If output buffering isn't active then FALSE is returned. + * + * @access private */ private function _exec_snippet(array $vars) { @@ -208,7 +235,6 @@ class Snippets // Process snippet if (Filesystem::has($snippet_file)) { - // Turn on output buffering ob_start(); @@ -223,17 +249,17 @@ class Snippets // Output... return ob_get_clean(); - } else { - throw new \RuntimeException("Snippet {$snippet_id} does not exist."); } + + throw new RuntimeException("Snippet {$snippet_id} does not exist."); } /** * Helper method _file_location * - * @access private * @param string $id Snippet id - * @return string + * + * @access private */ private function _file_location(string $id) : string { @@ -244,7 +270,6 @@ class Snippets * Helper method _dir_location * * @access private - * @return string */ private function _dir_location() : string { diff --git a/flextype/core/Themes.php b/flextype/core/Themes.php index 6a0727fc..c8e67ad8 100644 --- a/flextype/core/Themes.php +++ b/flextype/core/Themes.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -13,6 +12,12 @@ namespace Flextype; use Flextype\Component\Filesystem\Filesystem; +use RuntimeException; +use function array_merge; +use function count; +use function filemtime; +use function is_array; +use function md5; class Themes { @@ -34,7 +39,7 @@ class Themes /** * Init themes */ - public function init($flextype, $app) + public function init($flextype, $app) : void { // Set empty themes list item $this->flextype['registry']->set('themes', []); @@ -44,7 +49,6 @@ class Themes // If themes list isnt empty then create themes cache ID and go through the themes list... if (is_array($themes_list) && count($themes_list) > 0) { - // Get themes cache ID $themes_cache_id = $this->getThemesCacheID($themes_list); @@ -52,31 +56,29 @@ class Themes if ($this->flextype['cache']->contains($themes_cache_id)) { $this->flextype['registry']->set('themes', $this->flextype['cache']->fetch($themes_cache_id)); } else { - // Go through the themes list... - foreach ($themes_list as $theme) { - - // Get theme settings - if (Filesystem::has($theme_settings_file = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json')) { - if (($content = Filesystem::read($theme_settings_file)) === false) { - throw new \RuntimeException('Load file: ' . $theme_settings_file . ' - failed!'); - } else { - $theme_settings = JsonParser::decode($content); - } + foreach ($themes_list as $theme) { + // Get theme settings + if (Filesystem::has($theme_settings_file = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json')) { + if (($content = Filesystem::read($theme_settings_file)) === false) { + throw new RuntimeException('Load file: ' . $theme_settings_file . ' - failed!'); } - // Get theme manifest - if (Filesystem::has($theme_manifest_file = PATH['themes'] . '/' . $theme['dirname'] . '/theme.json')) { - if (($content = Filesystem::read($theme_manifest_file)) === false) { - throw new \RuntimeException('Load file: ' . $theme_manifest_file . ' - failed!'); - } else { - $theme_manifest = JsonParser::decode($content); - } - } - - $themes[$theme['dirname']] = array_merge($theme_settings, $theme_manifest); + $theme_settings = JsonParser::decode($content); } + // Get theme manifest + if (Filesystem::has($theme_manifest_file = PATH['themes'] . '/' . $theme['dirname'] . '/theme.json')) { + if (($content = Filesystem::read($theme_manifest_file)) === false) { + throw new RuntimeException('Load file: ' . $theme_manifest_file . ' - failed!'); + } + + $theme_manifest = JsonParser::decode($content); + } + + $themes[$theme['dirname']] = array_merge($theme_settings, $theme_manifest); + } + // Save parsed themes list in the registry themes $this->flextype['registry']->set('themes', $themes); @@ -89,13 +91,12 @@ class Themes $this->flextype['emitter']->emit('onThemesInitialized'); } - /** * Get themes cache ID * * @param array $themes_list Themes list + * * @access protected - * @return string */ private function getThemesCacheID(array $themes_list) : string { @@ -105,10 +106,12 @@ class Themes // Go through themes list... if (is_array($themes_list) && count($themes_list) > 0) { foreach ($themes_list as $theme) { - if (Filesystem::has($_themes_settings = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json') and - Filesystem::has($_themes_manifest = PATH['themes'] . '/' . $theme['dirname'] . '/plugin.json')) { - $_themes_cache_id .= filemtime($_themes_settings) . filemtime($_themes_manifest); + if (! Filesystem::has($_themes_settings = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json') or + ! Filesystem::has($_themes_manifest = PATH['themes'] . '/' . $theme['dirname'] . '/plugin.json')) { + continue; } + + $_themes_cache_id .= filemtime($_themes_settings) . filemtime($_themes_manifest); } } @@ -119,12 +122,12 @@ class Themes return $themes_cache_id; } - /** * Get list of themes * - * @access public * @return array + * + * @access public */ public function getThemes() : array { @@ -135,10 +138,12 @@ class Themes $_themes_list = Filesystem::listContents(PATH['themes']); // Go through founded themes - foreach($_themes_list as $theme) { - if ($theme['type'] == 'dir' && Filesystem::has($theme['path'] . '/' . 'theme.json')) { - $themes_list[] = $theme; + foreach ($_themes_list as $theme) { + if ($theme['type'] !== 'dir' || ! Filesystem::has($theme['path'] . '/' . 'theme.json')) { + continue; } + + $themes_list[] = $theme; } return $themes_list; @@ -147,9 +152,11 @@ class Themes /** * Get partials for theme * - * @access public * @param string $theme Theme id + * * @return array + * + * @access public */ public function getPartials(string $theme) : array { @@ -162,9 +169,11 @@ class Themes // If there is any partials file then go... if (count($_partials_list) > 0) { foreach ($_partials_list as $partial) { - if ($partial['type'] == 'file' && $partial['extension'] == 'html') { - $partials_list[] = $partial; + if ($partial['type'] !== 'file' || $partial['extension'] !== 'html') { + continue; } + + $partials_list[] = $partial; } } @@ -175,9 +184,11 @@ class Themes /** * Get templates for theme * - * @access public * @param string $theme Theme id + * * @return array + * + * @access public */ public function getTemplates(string $theme) : array { @@ -190,9 +201,11 @@ class Themes // If there is any template file then go... if (count($_templates_list) > 0) { foreach ($_templates_list as $template) { - if ($template['type'] == 'file' && $template['extension'] == 'html') { - $templates_list[] = $template; + if ($template['type'] !== 'file' || $template['extension'] !== 'html') { + continue; } + + $templates_list[] = $template; } } diff --git a/flextype/shortcodes/BaseUrlShortcode.php b/flextype/shortcodes/BaseUrlShortcode.php index d3dcb99e..2c731ae4 100644 --- a/flextype/shortcodes/BaseUrlShortcode.php +++ b/flextype/shortcodes/BaseUrlShortcode.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,10 +11,10 @@ namespace Flextype; -use Thunder\Shortcode\ShortcodeFacade; -use Thunder\Shortcode\Shortcode\ShortcodeInterface; +use Slim\Http\Environment; +use Slim\Http\Uri; // Shortcode: [base_url] -$flextype['shortcodes']->addHandler('base_url', function () { - return \Slim\Http\Uri::createFromEnvironment(new \Slim\Http\Environment($_SERVER))->getBaseUrl(); +$flextype['shortcodes']->addHandler('base_url', static function () { + return Uri::createFromEnvironment(new Environment($_SERVER))->getBaseUrl(); }); diff --git a/flextype/shortcodes/EntriesShortcode.php b/flextype/shortcodes/EntriesShortcode.php index 0df8022e..f8db37ec 100644 --- a/flextype/shortcodes/EntriesShortcode.php +++ b/flextype/shortcodes/EntriesShortcode.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,11 +11,10 @@ namespace Flextype; -use Thunder\Shortcode\ShortcodeFacade; -use Thunder\Shortcode\Shortcode\ShortcodeInterface; use Flextype\Component\Arr\Arr; +use Thunder\Shortcode\Shortcode\ShortcodeInterface; // Shortcode: [entries_fetch id="entry-id" field="field-name" default="default-value"] -$flextype['shortcodes']->addHandler('entries_fetch', function (ShortcodeInterface $s) use ($flextype) { +$flextype['shortcodes']->addHandler('entries_fetch', static function (ShortcodeInterface $s) use ($flextype) { return Arr::get($flextype['entries']->fetch($s->getParameter('id')), $s->getParameter('field'), $s->getParameter('default')); }); diff --git a/flextype/shortcodes/RegistryShortcode.php b/flextype/shortcodes/RegistryShortcode.php index 8a784909..93927ca1 100644 --- a/flextype/shortcodes/RegistryShortcode.php +++ b/flextype/shortcodes/RegistryShortcode.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,10 +11,9 @@ namespace Flextype; -use Thunder\Shortcode\ShortcodeFacade; use Thunder\Shortcode\Shortcode\ShortcodeInterface; // Shortcode: [registry_get name="item-name" default="default-value"] -$flextype['shortcodes']->addHandler('registry_get', function (ShortcodeInterface $s) use ($flextype) { +$flextype['shortcodes']->addHandler('registry_get', static function (ShortcodeInterface $s) use ($flextype) { return $flextype['registry']->get($s->getParameter('name'), $s->getParameter('default')); }); diff --git a/flextype/shortcodes/SnippetsShortcode.php b/flextype/shortcodes/SnippetsShortcode.php index 7baf3b86..0b04bcdc 100644 --- a/flextype/shortcodes/SnippetsShortcode.php +++ b/flextype/shortcodes/SnippetsShortcode.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,10 +11,9 @@ namespace Flextype; -use Thunder\Shortcode\ShortcodeFacade; use Thunder\Shortcode\Shortcode\ShortcodeInterface; // Shortcode: [snippets_exec id="snippet-name"] -$flextype['shortcodes']->addHandler('snippets_exec', function (ShortcodeInterface $s) use ($flextype) { +$flextype['shortcodes']->addHandler('snippets_exec', static function (ShortcodeInterface $s) use ($flextype) { return $flextype['snippets']->exec($s->getParameter('id')); }); diff --git a/site/plugins/admin/app/Controllers/DashboardController.php b/site/plugins/admin/app/Controllers/DashboardController.php index 2913447a..9dccd83e 100644 --- a/site/plugins/admin/app/Controllers/DashboardController.php +++ b/site/plugins/admin/app/Controllers/DashboardController.php @@ -1,5 +1,7 @@ 'fieldsets', - 'fieldsets_list' => $this->fieldsets->fetchAll(), - 'links' => [ - 'fieldsets' => [ - 'link' => $this->router->pathFor('admin.fieldsets.index'), - 'title' => __('admin_fieldsets'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'fieldsets_add' => [ - 'link' => $this->router->pathFor('admin.fieldsets.add'), - 'title' => __('admin_create_new_fieldset'), - 'attributes' => ['class' => 'float-right btn'] - ] - ] - ] + 'menu_item' => 'fieldsets', + 'fieldsets_list' => $this->fieldsets->fetchAll(), + 'links' => [ + 'fieldsets' => [ + 'link' => $this->router->pathFor('admin.fieldsets.index'), + 'title' => __('admin_fieldsets'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'fieldsets_add' => [ + 'link' => $this->router->pathFor('admin.fieldsets.add'), + 'title' => __('admin_create_new_fieldset'), + 'attributes' => ['class' => 'float-right btn'], + ], + ], + ] ); } @@ -48,21 +50,21 @@ class FieldsetsController extends Controller $response, 'plugins/admin/views/templates/extends/fieldsets/add.html', [ - 'menu_item' => 'fieldsets', - 'fieldsets_list' => $this->fieldsets->fetchAll(), - 'links' => [ - 'fieldsets' => [ - 'link' => $this->router->pathFor('admin.fieldsets.index'), - 'title' => __('admin_fieldsets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'fieldsets_add' => [ - 'link' => $this->router->pathFor('admin.fieldsets.add'), - 'title' => __('admin_create_new_fieldset'), - 'attributes' => ['class' => 'navbar-item active'] - ] - ], - ] + 'menu_item' => 'fieldsets', + 'fieldsets_list' => $this->fieldsets->fetchAll(), + 'links' => [ + 'fieldsets' => [ + 'link' => $this->router->pathFor('admin.fieldsets.index'), + 'title' => __('admin_fieldsets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'fieldsets_add' => [ + 'link' => $this->router->pathFor('admin.fieldsets.add'), + 'title' => __('admin_create_new_fieldset'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -73,7 +75,7 @@ class FieldsetsController extends Controller Arr::delete($data, 'csrf_name'); Arr::delete($data, 'csrf_value'); - $id = $this->slugify->slugify($data['id']); + $id = $this->slugify->slugify($data['id']); $data = ['title' => $data['title']]; if ($this->fieldsets->create($id, $data)) { @@ -91,39 +93,38 @@ class FieldsetsController extends Controller $response, 'plugins/admin/views/templates/extends/fieldsets/edit.html', [ - 'menu_item' => 'fieldsets', - 'id' => $request->getQueryParams()['id'], - 'data' => JsonParser::encode($this->fieldsets->fetch($request->getQueryParams()['id'])), - 'links' => [ - 'fieldsets' => [ - 'link' => $this->router->pathFor('admin.fieldsets.index'), - 'title' => __('admin_fieldsets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'fieldsets_editor' => [ - 'link' => $this->router->pathFor('admin.fieldsets.edit') . '?id=' . $request->getQueryParams()['id'], - 'title' => __('admin_editor'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'save_entry' => [ - 'link' => 'javascript:;', - 'title' => __('admin_save'), - 'attributes' => ['class' => 'js-save-form-submit float-right btn'] - ], - ] - ] + 'menu_item' => 'fieldsets', + 'id' => $request->getQueryParams()['id'], + 'data' => JsonParser::encode($this->fieldsets->fetch($request->getQueryParams()['id'])), + 'links' => [ + 'fieldsets' => [ + 'link' => $this->router->pathFor('admin.fieldsets.index'), + 'title' => __('admin_fieldsets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'fieldsets_editor' => [ + 'link' => $this->router->pathFor('admin.fieldsets.edit') . '?id=' . $request->getQueryParams()['id'], + 'title' => __('admin_editor'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'save_entry' => [ + 'link' => 'javascript:;', + 'title' => __('admin_save'), + 'attributes' => ['class' => 'js-save-form-submit float-right btn'], + ], + ], + ] ); } public function editProcess($request, $response) { - $id = $request->getParsedBody()['id']; + $id = $request->getParsedBody()['id']; $data = $request->getParsedBody()['data']; if (v::json()->validate($data)) { - if ($this->fieldsets->update($request->getParsedBody()['id'], JsonParser::decode($data))) { $this->flash->addMessage('success', __('admin_message_fieldset_saved')); } else { @@ -131,11 +132,11 @@ class FieldsetsController extends Controller } return $response->withRedirect($this->router->pathFor('admin.fieldsets.edit') . '?id=' . $id); - - } else { - $this->flash->addMessage('error', __('admin_message_json_invalid')); - return $response->withRedirect($this->router->pathFor('admin.fieldsets.edit') . '?id=' . $id); } + + $this->flash->addMessage('error', __('admin_message_json_invalid')); + + return $response->withRedirect($this->router->pathFor('admin.fieldsets.edit') . '?id=' . $id); } public function rename($request, $response) @@ -144,21 +145,21 @@ class FieldsetsController extends Controller $response, 'plugins/admin/views/templates/extends/fieldsets/rename.html', [ - 'menu_item' => 'fieldsets', - 'id' => $request->getQueryParams()['id'], - 'links' => [ - 'fieldsets' => [ - 'link' => $this->router->pathFor('admin.fieldsets.index'), - 'title' => __('admin_fieldsets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'fieldsets_rename' => [ - 'link' => $this->router->pathFor('admin.fieldsets.rename') . '?id=' . $request->getQueryParams()['id'], - 'title' => __('admin_rename'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - ] + 'menu_item' => 'fieldsets', + 'id' => $request->getQueryParams()['id'], + 'links' => [ + 'fieldsets' => [ + 'link' => $this->router->pathFor('admin.fieldsets.index'), + 'title' => __('admin_fieldsets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'fieldsets_rename' => [ + 'link' => $this->router->pathFor('admin.fieldsets.rename') . '?id=' . $request->getQueryParams()['id'], + 'title' => __('admin_rename'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -186,7 +187,7 @@ class FieldsetsController extends Controller public function duplicateProcess($request, $response) { - if ($this->fieldsets->copy($request->getParsedBody()['fieldset-id'], $request->getParsedBody()['fieldset-id'] . '-duplicate-' . date("Ymd_His"))) { + if ($this->fieldsets->copy($request->getParsedBody()['fieldset-id'], $request->getParsedBody()['fieldset-id'] . '-duplicate-' . date('Ymd_His'))) { $this->flash->addMessage('success', __('admin_message_fieldset_duplicated')); } else { $this->flash->addMessage('error', __('admin_message_fieldset_was_not_duplicated')); diff --git a/site/plugins/admin/app/Controllers/PluginsController.php b/site/plugins/admin/app/Controllers/PluginsController.php index be09c197..2e9440af 100644 --- a/site/plugins/admin/app/Controllers/PluginsController.php +++ b/site/plugins/admin/app/Controllers/PluginsController.php @@ -1,13 +1,14 @@ $this->registry->get('plugins'), - 'menu_item' => 'plugins', - 'links' => [ - 'plugins' => [ - 'link' => $this->router->pathFor('admin.plugins.index'), - 'title' => __('admin_plugins'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'plugins_get_more' => [ - 'link' => 'https://github.com/flextype/plugins', - 'title' => __('admin_get_more_plugins'), - 'attributes' => ['class' => 'float-right btn', 'target' => '_blank'] - ], - ] - ] + 'plugins_list' => $this->registry->get('plugins'), + 'menu_item' => 'plugins', + 'links' => [ + 'plugins' => [ + 'link' => $this->router->pathFor('admin.plugins.index'), + 'title' => __('admin_plugins'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'plugins_get_more' => [ + 'link' => 'https://github.com/flextype/plugins', + 'title' => __('admin_get_more_plugins'), + 'attributes' => ['class' => 'float-right btn', 'target' => '_blank'], + ], + ], + ] ); } @@ -56,8 +55,6 @@ class PluginsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function pluginStatusProcess(Request $request, Response $response) : Response { @@ -66,7 +63,7 @@ class PluginsController extends Controller // Update settings $plugin_settings = JsonParser::decode(Filesystem::read(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.json')); - Arr::set($plugin_settings, 'enabled', ($data['plugin-status'] == 'true' ? true : false)); + Arr::set($plugin_settings, 'enabled', ($data['plugin-status'] === 'true')); Filesystem::write(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.json', JsonParser::encode($plugin_settings)); // Clear doctrine cache diff --git a/site/plugins/admin/app/Controllers/SettingsController.php b/site/plugins/admin/app/Controllers/SettingsController.php index f4e6f2d0..1c020a90 100644 --- a/site/plugins/admin/app/Controllers/SettingsController.php +++ b/site/plugins/admin/app/Controllers/SettingsController.php @@ -1,13 +1,16 @@ plugins->getLocales(); - $locales = []; + $system_locales = $this->plugins->getLocales(); + $locales = []; foreach ($available_locales as $locale) { - if ($locale['type'] == 'file' && $locale['extension'] == 'json') { - $locales[$locale['basename']] = $system_locales[$locale['basename']]['nativeName']; + if ($locale['type'] !== 'file' || $locale['extension'] !== 'json') { + continue; } + + $locales[$locale['basename']] = $system_locales[$locale['basename']]['nativeName']; } - $cache_driver = ['auto' => 'Auto Detect', - 'file' => 'File', - 'apcu' => 'APCu', - 'wincache' => 'WinCache', - 'memcached' => 'Memcached', - 'redis' => 'Redis', - 'sqlite3' => 'SQLite3', - 'zend' => 'Zend', - 'array' => 'Array']; + $cache_driver = [ + 'auto' => 'Auto Detect', + 'file' => 'File', + 'apcu' => 'APCu', + 'wincache' => 'WinCache', + 'memcached' => 'Memcached', + 'redis' => 'Redis', + 'sqlite3' => 'SQLite3', + 'zend' => 'Zend', + 'array' => 'Array', + ]; - $image_driver = ['gd' => 'gd', - 'imagick' => 'imagick']; + $image_driver = [ + 'gd' => 'gd', + 'imagick' => 'imagick', + ]; - $whoops_editor = ['emacs' => 'Emacs', - 'idea' => 'IDEA', - 'macvim' => 'MacVim', - 'phpstorm' => 'PhpStorm (macOS only)', - 'sublime' => 'Sublime Text', - 'textmate' => 'Textmate', - 'xdebug' => 'xDebug', - 'vscode' => 'VSCode', - 'atom' => 'Atom', - 'espresso' => 'Espresso']; + $whoops_editor = [ + 'emacs' => 'Emacs', + 'idea' => 'IDEA', + 'macvim' => 'MacVim', + 'phpstorm' => 'PhpStorm (macOS only)', + 'sublime' => 'Sublime Text', + 'textmate' => 'Textmate', + 'xdebug' => 'xDebug', + 'vscode' => 'VSCode', + 'atom' => 'Atom', + 'espresso' => 'Espresso', + ]; return $this->view->render( $response, 'plugins/admin/views/templates/system/settings/index.html', [ - 'timezones' => Date::timezones(), - 'cache_driver' => $cache_driver, - 'locales' => $locales, - 'entries' => $entries, - 'themes' => $themes, - 'image_driver' => $image_driver, - 'whoops_editor' => $whoops_editor, - 'menu_item' => 'settings', - 'links' => [ - 'settings' => [ - 'link' => $this->router->pathFor('admin.settings.index'), - 'title' => __('admin_settings'), - 'attributes' => ['class' => 'navbar-item active'] - ] - ], - 'buttons' => [ - 'save' => [ - 'link' => 'javascript:;', - 'title' => __('admin_save'), - 'attributes' => ['class' => 'js-save-form-submit float-right btn'] - ] - ] - ] + 'timezones' => Date::timezones(), + 'cache_driver' => $cache_driver, + 'locales' => $locales, + 'entries' => $entries, + 'themes' => $themes, + 'image_driver' => $image_driver, + 'whoops_editor' => $whoops_editor, + 'menu_item' => 'settings', + 'links' => [ + 'settings' => [ + 'link' => $this->router->pathFor('admin.settings.index'), + 'title' => __('admin_settings'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'save' => [ + 'link' => 'javascript:;', + 'title' => __('admin_save'), + 'attributes' => ['class' => 'js-save-form-submit float-right btn'], + ], + ], + ] ); } @@ -110,8 +121,6 @@ class SettingsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function updateSettingsProcess(Request $request, Response $response) : Response { @@ -121,12 +130,12 @@ class SettingsController extends Controller Arr::delete($data, 'csrf_value'); Arr::delete($data, 'action'); - Arr::set($data, 'errors.display', ($data['errors']['display'] == '1' ? true : false)); - Arr::set($data, 'cache.enabled', ($data['cache']['enabled'] == '1' ? true : false)); - Arr::set($data, 'slugify.lowercase_after_regexp', ($data['slugify']['lowercase_after_regexp'] == '1' ? true : false)); - Arr::set($data, 'slugify.strip_tags', ($data['slugify']['strip_tags'] == '1' ? true : false)); - Arr::set($data, 'slugify.trim', ($data['slugify']['trim'] == '1' ? true : false)); - Arr::set($data, 'slugify.lowercase', ($data['slugify']['lowercase'] == '1' ? true : false)); + Arr::set($data, 'errors.display', ($data['errors']['display'] === '1')); + Arr::set($data, 'cache.enabled', ($data['cache']['enabled'] === '1')); + Arr::set($data, 'slugify.lowercase_after_regexp', ($data['slugify']['lowercase_after_regexp'] === '1')); + Arr::set($data, 'slugify.strip_tags', ($data['slugify']['strip_tags'] === '1')); + Arr::set($data, 'slugify.trim', ($data['slugify']['trim'] === '1')); + Arr::set($data, 'slugify.lowercase', ($data['slugify']['lowercase'] === '1')); Arr::set($data, 'cache.lifetime', (int) $data['cache']['lifetime']); Arr::set($data, 'entries.media.upload_images_quality', (int) $data['entries']['media']['upload_images_quality']); Arr::set($data, 'entries.media.upload_images_width', (int) $data['entries']['media']['upload_images_width']); @@ -140,5 +149,4 @@ class SettingsController extends Controller return $response->withRedirect($this->router->pathFor('admin.settings.index')); } - } diff --git a/site/plugins/admin/app/Controllers/SnippetsController.php b/site/plugins/admin/app/Controllers/SnippetsController.php index e3694dff..dc617dcb 100644 --- a/site/plugins/admin/app/Controllers/SnippetsController.php +++ b/site/plugins/admin/app/Controllers/SnippetsController.php @@ -1,12 +1,13 @@ 'snippets', - 'snippets_list' => $this->snippets->fetchAll(), - 'links' => [ - 'snippets' => [ - 'link' => $this->router->pathFor('admin.snippets.index'), - 'title' => __('admin_snippets'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'snippets_create' => [ - 'link' => $this->router->pathFor('admin.snippets.add'), - 'title' => __('admin_create_new_snippet'), - 'attributes' => ['class' => 'float-right btn'] - ], - ] - ] + 'menu_item' => 'snippets', + 'snippets_list' => $this->snippets->fetchAll(), + 'links' => [ + 'snippets' => [ + 'link' => $this->router->pathFor('admin.snippets.index'), + 'title' => __('admin_snippets'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'snippets_create' => [ + 'link' => $this->router->pathFor('admin.snippets.add'), + 'title' => __('admin_create_new_snippet'), + 'attributes' => ['class' => 'float-right btn'], + ], + ], + ] ); } @@ -56,8 +55,6 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function add(/** @scrutinizer ignore-unused */ Request $request, Response $response) : Response { @@ -65,20 +62,20 @@ class SnippetsController extends Controller $response, 'plugins/admin/views/templates/extends/snippets/add.html', [ - 'menu_item' => 'snippets', - 'links' => [ - 'snippets' => [ - 'link' => $this->router->pathFor('admin.snippets.index'), - 'title' => __('admin_snippets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'snippets_rename' => [ - 'link' => $this->router->pathFor('admin.snippets.add'), - 'title' => __('admin_create_new_snippet'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ] - ] + 'menu_item' => 'snippets', + 'links' => [ + 'snippets' => [ + 'link' => $this->router->pathFor('admin.snippets.index'), + 'title' => __('admin_snippets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'snippets_rename' => [ + 'link' => $this->router->pathFor('admin.snippets.add'), + 'title' => __('admin_create_new_snippet'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -87,14 +84,12 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function addProcess(Request $request, Response $response) : Response { $id = $this->slugify->slugify($request->getParsedBody()['id']); - if ($this->snippets->create($id, "")) { + if ($this->snippets->create($id, '')) { $this->flash->addMessage('success', __('admin_message_snippet_created')); } else { $this->flash->addMessage('error', __('admin_message_snippet_was_not_created')); @@ -108,8 +103,6 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function edit(Request $request, Response $response) : Response { @@ -119,29 +112,29 @@ class SnippetsController extends Controller $response, 'plugins/admin/views/templates/extends/snippets/edit.html', [ - 'menu_item' => 'snippets', - 'id' => $id, - 'data' => $this->snippets->fetch($id), - 'links' => [ - 'snippets' => [ - 'link' => $this->router->pathFor('admin.snippets.index'), - 'title' => __('admin_snippets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'snippets_editor' => [ - 'link' => $this->router->pathFor('admin.snippets.edit') . '?id=' . $id, - 'title' => __('admin_editor'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'save_snippet' => [ - 'link' => 'javascript:;', - 'title' => __('admin_save'), - 'attributes' => ['class' => 'js-save-form-submit float-right btn'] - ] + 'menu_item' => 'snippets', + 'id' => $id, + 'data' => $this->snippets->fetch($id), + 'links' => [ + 'snippets' => [ + 'link' => $this->router->pathFor('admin.snippets.index'), + 'title' => __('admin_snippets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'snippets_editor' => [ + 'link' => $this->router->pathFor('admin.snippets.edit') . '?id=' . $id, + 'title' => __('admin_editor'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'save_snippet' => [ + 'link' => 'javascript:;', + 'title' => __('admin_save'), + 'attributes' => ['class' => 'js-save-form-submit float-right btn'], + ], + ], ] - ] ); } @@ -150,12 +143,10 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function editProcess(Request $request, Response $response) : Response { - $id = $request->getParsedBody()['id']; + $id = $request->getParsedBody()['id']; $data = $request->getParsedBody()['data']; if ($this->snippets->update($id, $data)) { @@ -172,31 +163,28 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function rename(Request $request, Response $response) : Response { - return $this->view->render( $response, 'plugins/admin/views/templates/extends/snippets/rename.html', [ - 'menu_item' => 'snippets', - 'id_current' => $request->getQueryParams()['id'], - 'links' => [ - 'snippets' => [ - 'link' => $this->router->pathFor('admin.snippets.index'), - 'title' => __('admin_snippets'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'snippets_rename' => [ - 'link' => $this->router->pathFor('admin.snippets.rename') . '?id=' . $request->getQueryParams()['id'], - 'title' => __('admin_rename'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ] - ] + 'menu_item' => 'snippets', + 'id_current' => $request->getQueryParams()['id'], + 'links' => [ + 'snippets' => [ + 'link' => $this->router->pathFor('admin.snippets.index'), + 'title' => __('admin_snippets'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'snippets_rename' => [ + 'link' => $this->router->pathFor('admin.snippets.rename') . '?id=' . $request->getQueryParams()['id'], + 'title' => __('admin_rename'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -205,12 +193,10 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function renameProcess(Request $request, Response $response) : Response { - $id = $this->slugify->slugify($request->getParsedBody()['id']); + $id = $this->slugify->slugify($request->getParsedBody()['id']); $id_current = $request->getParsedBody()['id_current']; if ($this->snippets->rename( @@ -231,8 +217,6 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function deleteProcess(Request $request, Response $response) : Response { @@ -252,14 +236,12 @@ class SnippetsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function duplicateProcess(Request $request, Response $response) : Response { $id = $request->getParsedBody()['snippet-id']; - if ($this->snippets->copy($id, $id . '-duplicate-' . date("Ymd_His"))) { + if ($this->snippets->copy($id, $id . '-duplicate-' . date('Ymd_His'))) { $this->flash->addMessage('success', __('admin_message_snippet_duplicated')); } else { $this->flash->addMessage('error', __('admin_message_snippet_was_not_duplicated')); diff --git a/site/plugins/admin/app/Controllers/TemplatesController.php b/site/plugins/admin/app/Controllers/TemplatesController.php index de4484d3..9983634c 100644 --- a/site/plugins/admin/app/Controllers/TemplatesController.php +++ b/site/plugins/admin/app/Controllers/TemplatesController.php @@ -1,12 +1,14 @@ 'themes', - 'theme' => $theme, - 'templates_list' => $this->themes->getTemplates($theme), - 'partials_list' => $this->themes->getPartials($theme), - 'links' => [ - 'themes' => [ - 'link' => $this->router->pathFor('admin.themes.index'), - 'title' => __('admin_themes'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates' => [ - 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, - 'title' => __('admin_templates'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'templates_create' => [ - 'link' => $this->router->pathFor('admin.templates.add') . '?theme=' . $theme, - 'title' => __('admin_create_new_template'), - 'attributes' => ['class' => 'float-right btn'] - ], - ] - ] + 'menu_item' => 'themes', + 'theme' => $theme, + 'templates_list' => $this->themes->getTemplates($theme), + 'partials_list' => $this->themes->getPartials($theme), + 'links' => [ + 'themes' => [ + 'link' => $this->router->pathFor('admin.themes.index'), + 'title' => __('admin_themes'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates' => [ + 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, + 'title' => __('admin_templates'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'templates_create' => [ + 'link' => $this->router->pathFor('admin.templates.add') . '?theme=' . $theme, + 'title' => __('admin_create_new_template'), + 'attributes' => ['class' => 'float-right btn'], + ], + ], + ] ); } @@ -67,8 +67,6 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function add(/** @scrutinizer ignore-unused */ Request $request, Response $response) : Response { @@ -79,26 +77,26 @@ class TemplatesController extends Controller $response, 'plugins/admin/views/templates/extends/themes/templates/add.html', [ - 'menu_item' => 'themes', - 'theme' => $theme, - 'links' => [ - 'themes' => [ - 'link' => $this->router->pathFor('admin.themes.index'), - 'title' => __('admin_themes'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates' => [ - 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, - 'title' => __('admin_templates'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates_add' => [ - 'link' => $this->router->pathFor('admin.templates.add') . '?theme=' . $theme, - 'title' => __('admin_create_new_template'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ] - ] + 'menu_item' => 'themes', + 'theme' => $theme, + 'links' => [ + 'themes' => [ + 'link' => $this->router->pathFor('admin.themes.index'), + 'title' => __('admin_themes'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates' => [ + 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, + 'title' => __('admin_templates'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates_add' => [ + 'link' => $this->router->pathFor('admin.templates.add') . '?theme=' . $theme, + 'title' => __('admin_create_new_template'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -107,29 +105,27 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function addProcess(Request $request, Response $response) : Response { - $type = $request->getParsedBody()['type']; + $type = $request->getParsedBody()['type']; $theme = $request->getParsedBody()['theme']; $id = $this->slugify->slugify($request->getParsedBody()['id']) . '.html'; $file = PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $id; - if (!Filesystem::has($file)) { + if (! Filesystem::has($file)) { if (Filesystem::write( $file, - "" + '' )) { - $this->flash->addMessage('success', __('admin_message_'.$type.'_created')); + $this->flash->addMessage('success', __('admin_message_' . $type . '_created')); } else { - $this->flash->addMessage('error', __('admin_message_'.$type.'_was_not_created')); + $this->flash->addMessage('error', __('admin_message_' . $type . '_was_not_created')); } } else { - $this->flash->addMessage('error', __('admin_message_'.$type.'_was_not_created')); + $this->flash->addMessage('error', __('admin_message_' . $type . '_was_not_created')); } return $response->withRedirect($this->router->pathFor('admin.templates.index') . '?theme=' . $theme); @@ -140,49 +136,47 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function edit(Request $request, Response $response) : Response { // Get type and theme from request query params - $type = $request->getQueryParams()['type']; + $type = $request->getQueryParams()['type']; $theme = $request->getQueryParams()['theme']; return $this->view->render( $response, 'plugins/admin/views/templates/extends/themes/templates/edit.html', [ - 'menu_item' => 'themes', - 'theme' => $theme, - 'id' => $request->getQueryParams()['id'], - 'data' => Filesystem::read(PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getQueryParams()['id'] . '.html'), - 'type' => (($request->getQueryParams()['type'] && $request->getQueryParams()['type'] == 'partial') ? 'partial' : 'template'), - 'links' => [ - 'themes' => [ - 'link' => $this->router->pathFor('admin.themes.index'), - 'title' => __('admin_themes'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates' => [ - 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, - 'title' => __('admin_templates'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates_editor' => [ - 'link' => $this->router->pathFor('admin.templates.edit') . '?id=' . $request->getQueryParams()['id'] . '&type=' . (($request->getQueryParams()['type'] && $request->getQueryParams()['type'] == 'partial') ? 'partial' : 'template') . '&theme=' . $theme, - 'title' => __('admin_editor'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'save_template' => [ - 'link' => 'javascript:;', - 'title' => __('admin_save'), - 'attributes' => ['class' => 'js-save-form-submit float-right btn'] - ] + 'menu_item' => 'themes', + 'theme' => $theme, + 'id' => $request->getQueryParams()['id'], + 'data' => Filesystem::read(PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getQueryParams()['id'] . '.html'), + 'type' => ($request->getQueryParams()['type'] && $request->getQueryParams()['type'] === 'partial' ? 'partial' : 'template'), + 'links' => [ + 'themes' => [ + 'link' => $this->router->pathFor('admin.themes.index'), + 'title' => __('admin_themes'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates' => [ + 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, + 'title' => __('admin_templates'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates_editor' => [ + 'link' => $this->router->pathFor('admin.templates.edit') . '?id=' . $request->getQueryParams()['id'] . '&type=' . ($request->getQueryParams()['type'] && $request->getQueryParams()['type'] === 'partial' ? 'partial' : 'template') . '&theme=' . $theme, + 'title' => __('admin_editor'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'save_template' => [ + 'link' => 'javascript:;', + 'title' => __('admin_save'), + 'attributes' => ['class' => 'js-save-form-submit float-right btn'], + ], + ], ] - ] ); } @@ -191,15 +185,13 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function editProcess(Request $request, Response $response) : Response { // Get theme and type and id from request query params $theme = $request->getParsedBody()['theme']; - $id = $request->getParsedBody()['id']; - $type = $request->getParsedBody()['type']; + $id = $request->getParsedBody()['id']; + $type = $request->getParsedBody()['type']; if (Filesystem::write(PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()['id'] . '.html', $request->getParsedBody()['data'])) { $this->flash->addMessage('success', __('admin_message_' . $type . '_saved')); @@ -215,8 +207,6 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function rename(Request $request, Response $response) : Response { @@ -227,29 +217,29 @@ class TemplatesController extends Controller $response, 'plugins/admin/views/templates/extends/themes/templates/rename.html', [ - 'menu_item' => 'themes', - 'theme' => $theme, - 'types' => ['partial' => __('admin_partial'), 'template' => __('admin_template')], - 'id_current' => $request->getQueryParams()['id'], - 'type_current' => (($request->getQueryParams()['type'] && $request->getQueryParams()['type'] == 'partial') ? 'partial' : 'template'), - 'links' => [ - 'themes' => [ - 'link' => $this->router->pathFor('admin.themes.index'), - 'title' => __('admin_themes'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates' => [ - 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, - 'title' => __('admin_templates'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'templates_rename' => [ - 'link' => $this->router->pathFor('admin.templates.rename') . '?id=' . $request->getQueryParams()['id'] . '&type=' . (($request->getQueryParams()['type'] && $request->getQueryParams()['type'] == 'partial') ? 'partial' : 'template') . '&theme=' . $theme, - 'title' => __('admin_rename'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ] - ] + 'menu_item' => 'themes', + 'theme' => $theme, + 'types' => ['partial' => __('admin_partial'), 'template' => __('admin_template')], + 'id_current' => $request->getQueryParams()['id'], + 'type_current' => ($request->getQueryParams()['type'] && $request->getQueryParams()['type'] === 'partial' ? 'partial' : 'template'), + 'links' => [ + 'themes' => [ + 'link' => $this->router->pathFor('admin.themes.index'), + 'title' => __('admin_themes'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates' => [ + 'link' => $this->router->pathFor('admin.templates.index') . '?theme=' . $theme, + 'title' => __('admin_templates'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'templates_rename' => [ + 'link' => $this->router->pathFor('admin.templates.rename') . '?id=' . $request->getQueryParams()['id'] . '&type=' . ($request->getQueryParams()['type'] && $request->getQueryParams()['type'] === 'partial' ? 'partial' : 'template') . '&theme=' . $theme, + 'title' => __('admin_rename'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + ] ); } @@ -258,27 +248,25 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function renameProcess(Request $request, Response $response) : Response { // Get theme and type from request query params $theme = $request->getParsedBody()['theme']; - $type = $request->getParsedBody()['type_current']; + $type = $request->getParsedBody()['type_current']; - if (!Filesystem::has(PATH['themes'] . '/' . $this->registry->get('settings.theme') . '/' . $this->_type_location($type) . $request->getParsedBody()['id'] . '.html')) { + if (! Filesystem::has(PATH['themes'] . '/' . $this->registry->get('settings.theme') . '/' . $this->_type_location($type) . $request->getParsedBody()['id'] . '.html')) { if (Filesystem::rename( PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()['id_current'] . '.html', PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()['id'] . '.html' ) ) { - $this->flash->addMessage('success', __('admin_message_'.$type.'_renamed')); + $this->flash->addMessage('success', __('admin_message_' . $type . '_renamed')); } else { - $this->flash->addMessage('error', __('admin_message_'.$type.'_was_not_renamed')); + $this->flash->addMessage('error', __('admin_message_' . $type . '_was_not_renamed')); } } else { - $this->flash->addMessage('error', __('admin_message_'.$type.'_was_not_renamed')); + $this->flash->addMessage('error', __('admin_message_' . $type . '_was_not_renamed')); } return $response->withRedirect($this->router->pathFor('admin.templates.index') . '?theme=' . $theme); @@ -289,14 +277,12 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function deleteProcess(Request $request, Response $response) : Response { // Get theme and type from request query params $theme = $request->getParsedBody()['theme']; - $type = $request->getParsedBody()['type']; + $type = $request->getParsedBody()['type']; $file_path = PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()[$type . '-id'] . '.html'; @@ -314,17 +300,15 @@ class TemplatesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function duplicateProcess(Request $request, Response $response) : Response { // Get theme and type from request query params $theme = $request->getParsedBody()['theme']; - $type = $request->getParsedBody()['type']; + $type = $request->getParsedBody()['type']; - $file_path = PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()[$type . '-id'] . '.html'; - $file_path_new = PATH['themes'] . '/' . $theme. '/' . $this->_type_location($type) . $request->getParsedBody()[$type . '-id'] . '-duplicate-' . date("Ymd_His") . '.html'; + $file_path = PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()[$type . '-id'] . '.html'; + $file_path_new = PATH['themes'] . '/' . $theme . '/' . $this->_type_location($type) . $request->getParsedBody()[$type . '-id'] . '-duplicate-' . date('Ymd_His') . '.html'; if (Filesystem::copy($file_path, $file_path_new)) { $this->flash->addMessage('success', __('admin_message_' . $type . '_duplicated')); @@ -337,7 +321,7 @@ class TemplatesController extends Controller private function _type_location($type) { - if ($type == 'partial') { + if ($type === 'partial') { $_type = '/templates/partials/'; } else { $_type = '/templates/'; diff --git a/site/plugins/admin/app/Controllers/ThemesController.php b/site/plugins/admin/app/Controllers/ThemesController.php index 9c5ed688..42457d9b 100644 --- a/site/plugins/admin/app/Controllers/ThemesController.php +++ b/site/plugins/admin/app/Controllers/ThemesController.php @@ -1,13 +1,16 @@ 'themes', - 'themes_list' => $this->registry->get('themes'), - 'links' => [ - 'themes' => [ - 'link' => $this->router->pathFor('admin.themes.index'), - 'title' => __('admin_themes'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ], - 'buttons' => [ - 'themes_get_more' => [ - 'link' => 'https://github.com/flextype/themes', - 'title' => __('admin_get_more_themes'), - 'attributes' => ['class' => 'float-right btn', 'target' => '_blank'] - ], - ] + 'menu_item' => 'themes', + 'themes_list' => $this->registry->get('themes'), + 'links' => [ + 'themes' => [ + 'link' => $this->router->pathFor('admin.themes.index'), + 'title' => __('admin_themes'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'themes_get_more' => [ + 'link' => 'https://github.com/flextype/themes', + 'title' => __('admin_get_more_themes'), + 'attributes' => ['class' => 'float-right btn', 'target' => '_blank'], + ], + ], ] ); } @@ -56,8 +57,6 @@ class ThemesController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function activateProcess(Request $request, Response $response) : Response { @@ -66,7 +65,7 @@ class ThemesController extends Controller // Update current theme settings $theme_settings = JsonParser::decode(Filesystem::read(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.json')); - Arr::set($theme_settings, 'enabled', ($data['theme-status'] == 'true' ? true : false)); + Arr::set($theme_settings, 'enabled', ($data['theme-status'] === 'true')); Filesystem::write(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.json', JsonParser::encode($theme_settings)); // Get themes list @@ -75,13 +74,17 @@ class ThemesController extends Controller // Deactivate all others themes if (is_array($themes_list) && count($themes_list) > 0) { foreach ($themes_list as $theme) { - if ($theme['dirname'] !== $data['theme-id']) { - if (Filesystem::has($theme_settings_file = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json')) { - $theme_settings = JsonParser::decode(Filesystem::read($theme_settings_file)); - Arr::set($theme_settings, 'enabled', false); - Filesystem::write($theme_settings_file, JsonParser::encode($theme_settings)); - } + if ($theme['dirname'] === $data['theme-id']) { + continue; } + + if (! Filesystem::has($theme_settings_file = PATH['themes'] . '/' . $theme['dirname'] . '/settings.json')) { + continue; + } + + $theme_settings = JsonParser::decode(Filesystem::read($theme_settings_file)); + Arr::set($theme_settings, 'enabled', false); + Filesystem::write($theme_settings_file, JsonParser::encode($theme_settings)); } } diff --git a/site/plugins/admin/app/Controllers/ToolsController.php b/site/plugins/admin/app/Controllers/ToolsController.php index 49eb35d4..cc336204 100644 --- a/site/plugins/admin/app/Controllers/ToolsController.php +++ b/site/plugins/admin/app/Controllers/ToolsController.php @@ -1,12 +1,23 @@ 'tools', 'php_uname' => php_uname(), - 'webserver' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : @getenv('SERVER_SOFTWARE'), + 'webserver' => $_SERVER['SERVER_SOFTWARE'] ?? @getenv('SERVER_SOFTWARE'), 'php_sapi_name' => php_sapi_name(), 'links' => [ - 'information' => [ - 'link' => $this->router->pathFor('admin.tools.index'), - 'title' => __('admin_information'), - 'attributes' => ['class' => 'navbar-item active'] - ], - 'cache' => [ - 'link' => $this->router->pathFor('admin.tools.cache'), - 'title' => __('admin_cache'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'registry' => [ - 'link' => $this->router->pathFor('admin.tools.registry'), - 'title' => __('admin_registry'), - 'attributes' => ['class' => 'navbar-item'] - ], - ] + 'information' => [ + 'link' => $this->router->pathFor('admin.tools.index'), + 'title' => __('admin_information'), + 'attributes' => ['class' => 'navbar-item active'], + ], + 'cache' => [ + 'link' => $this->router->pathFor('admin.tools.cache'), + 'title' => __('admin_cache'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'registry' => [ + 'link' => $this->router->pathFor('admin.tools.registry'), + 'title' => __('admin_registry'), + 'attributes' => ['class' => 'navbar-item'], + ], + ], ] ); } @@ -72,8 +79,6 @@ class ToolsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function cache(Request $request, Response $response) : Response { @@ -86,43 +91,40 @@ class ToolsController extends Controller 'glide_size' => Number::byteFormat($this->getDirectorySize(PATH['cache'] . '/glide')), 'twig_size' => Number::byteFormat($this->getDirectorySize(PATH['cache'] . '/twig')), 'links' => [ - 'information' => [ - 'link' => $this->router->pathFor('admin.tools.index'), - 'title' => __('admin_information'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'cache' => [ - 'link' => $this->router->pathFor('admin.tools.cache'), - 'title' => __('admin_cache'), - 'attributes' => ['class' => 'navbar-item active'] - ], - 'registry' => [ - 'link' => $this->router->pathFor('admin.tools.registry'), - 'title' => __('admin_registry'), - 'attributes' => ['class' => 'navbar-item'] - ], - ], + 'information' => [ + 'link' => $this->router->pathFor('admin.tools.index'), + 'title' => __('admin_information'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'cache' => [ + 'link' => $this->router->pathFor('admin.tools.cache'), + 'title' => __('admin_cache'), + 'attributes' => ['class' => 'navbar-item active'], + ], + 'registry' => [ + 'link' => $this->router->pathFor('admin.tools.registry'), + 'title' => __('admin_registry'), + 'attributes' => ['class' => 'navbar-item'], + ], + ], 'buttons' => [ 'tools_clear_cache' => [ 'type' => 'action', 'id' => 'clear-cache-all', 'link' => $this->router->pathFor('admin.tools.clearCacheAllProcess'), 'title' => __('admin_clear_cache_all'), - 'attributes' => ['class' => 'float-right btn'] - ] - ] + 'attributes' => ['class' => 'float-right btn'], + ], + ], ] ); } - /** * Information page * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function registry(Request $request, Response $response) : Response { @@ -133,22 +135,22 @@ class ToolsController extends Controller 'menu_item' => 'tools', 'registry_dump' => $this->dotArray($this->registry->dump()), 'links' => [ - 'information' => [ - 'link' => $this->router->pathFor('admin.tools.index'), - 'title' => __('admin_information'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'cache' => [ - 'link' => $this->router->pathFor('admin.tools.cache'), - 'title' => __('admin_cache'), - 'attributes' => ['class' => 'navbar-item'] - ], - 'registry' => [ - 'link' => $this->router->pathFor('admin.tools.registry'), - 'title' => __('admin_registry'), - 'attributes' => ['class' => 'navbar-item active'] - ], - ] + 'information' => [ + 'link' => $this->router->pathFor('admin.tools.index'), + 'title' => __('admin_information'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'cache' => [ + 'link' => $this->router->pathFor('admin.tools.cache'), + 'title' => __('admin_cache'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'registry' => [ + 'link' => $this->router->pathFor('admin.tools.registry'), + 'title' => __('admin_registry'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], ] ); } @@ -158,8 +160,6 @@ class ToolsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function clearCacheProcess(Request $request, Response $response) : Response { @@ -177,8 +177,6 @@ class ToolsController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function clearCacheAllProcess(Request $request, Response $response) : Response { @@ -198,14 +196,13 @@ class ToolsController extends Controller foreach ($array as $key => $value) { if (is_array($value) && ! empty($value)) { - $results = array_merge($results, $this->dotArray($value, $prepend.$key.'.')); + $results = array_merge($results, $this->dotArray($value, $prepend . $key . '.')); } else { - $results[$prepend.$key] = $value; + $results[$prepend . $key] = $value; } } return $results; - } /** @@ -214,12 +211,13 @@ class ToolsController extends Controller private function getDirectorySize($path) { $bytestotal = 0; - $path = realpath($path); - if($path!==false && $path!='' && file_exists($path)){ - foreach(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS)) as $object){ + $path = realpath($path); + if ($path!==false && $path!=='' && file_exists($path)) { + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) { $bytestotal += $object->getSize(); } } + return $bytestotal; } } diff --git a/site/plugins/admin/app/Controllers/UsersController.php b/site/plugins/admin/app/Controllers/UsersController.php index 8d7fe0a0..646ad171 100644 --- a/site/plugins/admin/app/Controllers/UsersController.php +++ b/site/plugins/admin/app/Controllers/UsersController.php @@ -1,15 +1,20 @@ getUsers(); - if ((Session::exists('role') && Session::get('role') == 'admin')) { + if ((Session::exists('role') && Session::get('role') === 'admin')) { return $response->withRedirect($this->router->pathFor('admin.entries.index')); - } else { - if (count($users) > 0) { - return $this->container->get('view')->render( - $response, - 'plugins/admin/views/templates/users/login.html' - ); - } else { - return $response->withRedirect($this->router->pathFor('admin.users.installation')); - } } + + if (count($users) > 0) { + return $this->container->get('view')->render( + $response, + 'plugins/admin/views/templates/users/login.html' + ); + } + + return $response->withRedirect($this->router->pathFor('admin.users.installation')); } /** @@ -58,8 +61,6 @@ class UsersController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function loginProcess(Request $request, Response $response) : Response { @@ -71,15 +72,18 @@ class UsersController extends Controller Session::set('username', $user_file['username']); Session::set('role', $user_file['role']); Session::set('uuid', $user_file['uuid']); + return $response->withRedirect($this->router->pathFor('admin.entries.index')); - } else { - $this->flash->addMessage('error', __('admin_message_wrong_username_password')); - return $response->withRedirect($this->router->pathFor('admin.users.login')); } - } else { + $this->flash->addMessage('error', __('admin_message_wrong_username_password')); + return $response->withRedirect($this->router->pathFor('admin.users.login')); } + + $this->flash->addMessage('error', __('admin_message_wrong_username_password')); + + return $response->withRedirect($this->router->pathFor('admin.users.login')); } /** @@ -87,8 +91,6 @@ class UsersController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function installation(Request $request, Response $response) : Response { @@ -96,16 +98,16 @@ class UsersController extends Controller if (count($users) > 0) { return $response->withRedirect($this->router->pathFor('admin.users.login')); - } else { - if ((Session::exists('role') && Session::get('role') == 'admin')) { - return $response->withRedirect($this->router->pathFor('admin.entries.index')); - } else { - return $this->view->render( - $response, - 'plugins/admin/views/templates/users/installation.html' - ); - } } + + if ((Session::exists('role') && Session::get('role') === 'admin')) { + return $response->withRedirect($this->router->pathFor('admin.entries.index')); + } + + return $this->view->render( + $response, + 'plugins/admin/views/templates/users/installation.html' + ); } /** @@ -113,33 +115,32 @@ class UsersController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function installationProcess(Request $request, Response $response) : Response { // Get POST data $data = $request->getParsedBody(); - if (!Filesystem::has($_user_file = PATH['site'] . '/accounts/' . $this->slugify->slugify($data['username']) . '.json')) { + if (! Filesystem::has($_user_file = PATH['site'] . '/accounts/' . $this->slugify->slugify($data['username']) . '.json')) { Filesystem::createDir(PATH['site'] . '/accounts/'); if (Filesystem::write( PATH['site'] . '/accounts/' . $data['username'] . '.json', - JsonParser::encode(['username' => $this->slugify->slugify($data['username']), - 'hashed_password' => password_hash($data['password'], PASSWORD_BCRYPT), - 'email' => $data['email'], - 'role' => 'admin', - 'state' => 'enabled', - 'uuid' => Uuid::uuid4() - ]) + JsonParser::encode([ + 'username' => $this->slugify->slugify($data['username']), + 'hashed_password' => password_hash($data['password'], PASSWORD_BCRYPT), + 'email' => $data['email'], + 'role' => 'admin', + 'state' => 'enabled', + 'uuid' => Uuid::uuid4(), + ]) )) { return $response->withRedirect($this->router->pathFor('admin.users.login')); - } else { - return $response->withRedirect($this->router->pathFor('admin.users.installation')); } - } else { + return $response->withRedirect($this->router->pathFor('admin.users.installation')); } + + return $response->withRedirect($this->router->pathFor('admin.users.installation')); } /** @@ -147,12 +148,11 @@ class UsersController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * - * @return Response */ public function logoutProcess(Request $request, Response $response) : Response { Session::destroy(); + return $response->withRedirect($this->router->pathFor('admin.users.login')); } @@ -169,10 +169,12 @@ class UsersController extends Controller // Users $users = []; - foreach($users_list as $user) { - if ($user['type'] == 'file' && $user['extension'] == 'json') { - $users[$user['basename']] = $user; + foreach ($users_list as $user) { + if ($user['type'] !== 'file' || $user['extension'] !== 'json') { + continue; } + + $users[$user['basename']] = $user; } return $users; diff --git a/site/plugins/admin/app/Middleware/AuthMiddleware.php b/site/plugins/admin/app/Middleware/AuthMiddleware.php index 9094ec0e..b4889306 100644 --- a/site/plugins/admin/app/Middleware/AuthMiddleware.php +++ b/site/plugins/admin/app/Middleware/AuthMiddleware.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -21,19 +20,16 @@ use Psr\Http\Message\ServerRequestInterface as Request; */ class AuthMiddleware extends Middleware { - /** * __invoke * * @param Request $request PSR7 request * @param Response $response PSR7 response * @param callable $next Next middleware - * - * @return Response */ - public function __invoke(Request $request, Response $response, $next) : Response + public function __invoke(Request $request, Response $response, callable $next) : Response { - if (Session::exists('role') && Session::get('role') == 'admin') { + if (Session::exists('role') && Session::get('role') === 'admin') { $response = $next($request, $response); } else { $response = $response->withRedirect($this->router->pathFor('admin.users.login')); diff --git a/site/plugins/site/app/Controllers/SiteController.php b/site/plugins/site/app/Controllers/SiteController.php index ba10480d..f3955b19 100644 --- a/site/plugins/site/app/Controllers/SiteController.php +++ b/site/plugins/site/app/Controllers/SiteController.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE @@ -12,9 +11,9 @@ namespace Flextype; -use Flextype\Component\Arr\Arr; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use function ltrim; class SiteController extends Controller { @@ -31,70 +30,64 @@ class SiteController extends Controller * * @param Request $request PSR7 request * @param Response $response PSR7 response - * @param array $args Args - * @return Response + * @param array $args Args */ - public function index(Request $request, Response $response, array $args) { + public function index(Request $request, Response $response, array $args) : Response + { + // Get Query Params + $query = $request->getQueryParams(); - // Get Query Params - $query = $request->getQueryParams(); + // Get uri + $uri = $args['uri']; - // Get uri - $uri = $args['uri']; + // If uri is empty then it is main page else use entry uri + if ($uri === '/') { + $entry_uri = $this->registry->get('settings.entries.main'); + } else { + $entry_uri = ltrim($uri, '/'); + } - // If uri is empty then it is main page else use entry uri - if ($uri === '/') { - $entry_uri = $this->registry->get('settings.entries.main'); - } else { - $entry_uri = ltrim($uri, '/'); - } + // Get entry body + $entry_body = $this->entries->fetch($entry_uri); - // Get entry body - $entry_body = $this->entries->fetch($entry_uri); + // is entry not found + $is_entry_not_found = false; - // is entry not found - $is_entry_not_found = false; + // If entry body is not false + if ($entry_body) { + // Get 404 page if entry is not published + if (isset($entry_body['visibility']) && ($entry_body['visibility'] === 'draft' || $entry_body['visibility'] === 'hidden')) { + $entry['title'] = $this->registry->get('settings.entries.error404.title'); + $entry['description'] = $this->registry->get('settings.entries.error404.description'); + $entry['content'] = $this->registry->get('settings.entries.error404.content'); + $entry['template'] = $this->registry->get('settings.entries.error404.template'); - // If entry body is not false - if ($entry_body) { - - // Get 404 page if entry is not published - if (isset($entry_body['visibility']) && ($entry_body['visibility'] === 'draft' || $entry_body['visibility'] === 'hidden')) { - - $entry['title'] = $this->registry->get('settings.entries.error404.title'); - $entry['description'] = $this->registry->get('settings.entries.error404.description'); - $entry['content'] = $this->registry->get('settings.entries.error404.content'); - $entry['template'] = $this->registry->get('settings.entries.error404.template'); - - $is_entry_not_found = true; - - } else { - $entry = $entry_body; - } - } else { - - $entry['title'] = $this->registry->get('settings.entries.error404.title'); - $entry['description'] = $this->registry->get('settings.entries.error404.description'); - $entry['content'] = $this->registry->get('settings.entries.error404.content'); - $entry['template'] = $this->registry->get('settings.entries.error404.template'); + $is_entry_not_found = true; + } else { + $entry = $entry_body; + } + } else { + $entry['title'] = $this->registry->get('settings.entries.error404.title'); + $entry['description'] = $this->registry->get('settings.entries.error404.description'); + $entry['content'] = $this->registry->get('settings.entries.error404.content'); + $entry['template'] = $this->registry->get('settings.entries.error404.template'); $is_entry_not_found = true; - } + } - // Set entry - $this->entry = $entry; + // Set entry + $this->entry = $entry; - // Run event onSiteEntryAfterInitialized - $this->emitter->emit('onSiteEntryAfterInitialized'); + // Run event onSiteEntryAfterInitialized + $this->emitter->emit('onSiteEntryAfterInitialized'); - // Set template path for current entry - $path = 'themes/' . $this->registry->get('settings.theme') . '/' . (empty($this->entry['template']) ? 'templates/default' : 'templates/' . $this->entry['template']) . '.html'; + // Set template path for current entry + $path = 'themes/' . $this->registry->get('settings.theme') . '/' . (empty($this->entry['template']) ? 'templates/default' : 'templates/' . $this->entry['template']) . '.html'; - if ($is_entry_not_found) { - return $this->view->render($response->withStatus(404), $path, ['entry' => $this->entry]); - } else { - return $this->view->render($response, $path, ['entry' => $this->entry, 'page' => ($query['page']) ?? '']); - } - } + if ($is_entry_not_found) { + return $this->view->render($response->withStatus(404), $path, ['entry' => $this->entry]); + } + return $this->view->render($response, $path, ['entry' => $this->entry, 'page' => $query['page'] ?? '']); + } } diff --git a/site/plugins/site/bootstrap.php b/site/plugins/site/bootstrap.php index 1c744dd1..4fd08edc 100644 --- a/site/plugins/site/bootstrap.php +++ b/site/plugins/site/bootstrap.php @@ -1,21 +1,22 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - + namespace Flextype; +use function is_file; + /** * Ensure vendor libraries exist */ -!is_file($site_autoload = __DIR__ . '/vendor/autoload.php') and exit("Please run: composer install"); +! is_file($site_autoload = __DIR__ . '/vendor/autoload.php') and exit('Please run: composer install'); /** * Register The Auto Loader diff --git a/site/plugins/site/dependencies.php b/site/plugins/site/dependencies.php index 4579874f..f12af6aa 100644 --- a/site/plugins/site/dependencies.php +++ b/site/plugins/site/dependencies.php @@ -1,20 +1,19 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - + namespace Flextype; /** * Add site controller to Flextype container */ -$flextype['SiteController'] = function($container) { +$flextype['SiteController'] = static function ($container) { return new SiteController($container); }; diff --git a/site/plugins/site/routes/web.php b/site/plugins/site/routes/web.php index ce717f23..89398c49 100644 --- a/site/plugins/site/routes/web.php +++ b/site/plugins/site/routes/web.php @@ -1,9 +1,8 @@ * @link http://romanenko.digital * * For the full copyright and license information, please view the LICENSE