From bd1805750b4a8d1f16db5e54f44aa9ada04f7e57 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sat, 24 Apr 2021 10:56:40 +0300 Subject: [PATCH] refactoring --- application/Espo/Core/Utils/Autoload.php | 21 +++++------ application/Espo/Core/Utils/File/Manager.php | 7 ++-- application/Espo/Core/Utils/File/Unifier.php | 2 +- application/Espo/Core/Utils/Json.php | 38 -------------------- application/Espo/Core/Utils/Route.php | 22 ++++++------ application/Espo/Core/Utils/Util.php | 10 +++--- tests/unit/Espo/Core/Utils/JsonTest.php | 19 ---------- 7 files changed, 32 insertions(+), 87 deletions(-) diff --git a/application/Espo/Core/Utils/Autoload.php b/application/Espo/Core/Utils/Autoload.php index 57718d04e3..8dc956cb8e 100644 --- a/application/Espo/Core/Utils/Autoload.php +++ b/application/Espo/Core/Utils/Autoload.php @@ -30,7 +30,6 @@ namespace Espo\Core\Utils; use Espo\Core\{ - Exceptions\Error, Utils\Autoload\Loader, Utils\DataCache, Utils\File\Manager as FileManager, @@ -51,13 +50,21 @@ class Autoload ]; protected $config; + protected $metadata; + protected $dataCache; + protected $fileManager; + protected $loader; public function __construct( - Config $config, Metadata $metadata, DataCache $dataCache, FileManager $fileManager, Loader $loader + Config $config, + Metadata $metadata, + DataCache $dataCache, + FileManager $fileManager, + Loader $loader ) { $this->config = $config; $this->metadata = $metadata; @@ -88,7 +95,7 @@ class Autoload $this->data = $this->loadData(); if ($useCache) { - $result = $this->dataCache->store($this->cacheKey, $this->data); + $this->dataCache->store($this->cacheKey, $this->data); } } @@ -115,13 +122,7 @@ class Autoload $content = $this->fileManager->getContents($filePath); - $arrayContent = Json::getArrayData($content); - - if (empty($arrayContent)) { - $GLOBALS['log']->error("Autoload: Empty file or syntax error in '{$filePath}'."); - - return []; - } + $arrayContent = Json::decode($content, true); return $this->normalizeData($arrayContent); } diff --git a/application/Espo/Core/Utils/File/Manager.php b/application/Espo/Core/Utils/File/Manager.php index 75ee638567..9a911203c7 100644 --- a/application/Espo/Core/Utils/File/Manager.php +++ b/application/Espo/Core/Utils/File/Manager.php @@ -400,8 +400,9 @@ class Manager throw new Error('FileManager: Failed to read file [' . $fullPath .'].'); } - $savedDataArray = Json::getArrayData($fileContent); - $newDataArray = Json::getArrayData($content); + $savedDataArray = Json::decode($fileContent, true); + + $newDataArray = Json::decode($content, true); if (isset($removeOptions)) { $savedDataArray = Util::unsetInArray($savedDataArray, $removeOptions); @@ -462,7 +463,7 @@ class Manager return true; } - $currentDataArray = Json::getArrayData($currentData); + $currentDataArray = Json::decode($currentData, true); $unsettedData = Util::unsetInArray($currentDataArray, $unsets, true); diff --git a/application/Espo/Core/Utils/File/Unifier.php b/application/Espo/Core/Utils/File/Unifier.php index 2cba4f81ae..7c99cc5bdf 100644 --- a/application/Espo/Core/Utils/File/Unifier.php +++ b/application/Espo/Core/Utils/File/Unifier.php @@ -170,7 +170,7 @@ class Unifier $unsets = Json::decode($fileContent); } else { - $unsets = Json::getArrayData($fileContent); + $unsets = Json::decode($fileContent, true); } continue; diff --git a/application/Espo/Core/Utils/Json.php b/application/Espo/Core/Utils/Json.php index 600284aadd..1d846d5f9a 100644 --- a/application/Espo/Core/Utils/Json.php +++ b/application/Espo/Core/Utils/Json.php @@ -57,42 +57,4 @@ class Json { return json_decode($json, $associative, 512, JSON_THROW_ON_ERROR); } - - /** - * Check if the string is JSON - * - * @param string $json - * @return bool - */ - public static function isJson(string $json): bool - { - try { - self::decode($json); - } - catch (JsonException $e) { - return false; - } - - return true; - } - - /** - * Get an array data (if JSON convert to array). - * - * @param mixed $data. - * - * @return array|null - */ - public static function getArrayData($data, ?array $returns = []): ?array - { - if (is_array($data)) { - return $data; - } - - if (self::isJson($data)) { - return self::decode($data, true); - } - - return $returns; - } } diff --git a/application/Espo/Core/Utils/Route.php b/application/Espo/Core/Utils/Route.php index c962e67359..50ba21147f 100644 --- a/application/Espo/Core/Utils/Route.php +++ b/application/Espo/Core/Utils/Route.php @@ -30,7 +30,6 @@ namespace Espo\Core\Utils; use Espo\Core\{ - Exceptions\Error, Utils\Config, Utils\Metadata, Utils\File\Manager as FileManager, @@ -50,12 +49,19 @@ class Route ]; private $config; + private $metadata; + private $fileManager; + private $dataCache; - public function __construct(Config $config, Metadata $metadata, FileManager $fileManager, DataCache $dataCache) - { + public function __construct( + Config $config, + Metadata $metadata, + FileManager $fileManager, + DataCache $dataCache + ) { $this->config = $config; $this->metadata = $metadata; $this->fileManager = $fileManager; @@ -122,13 +128,7 @@ class Route $content = $this->fileManager->getContents($routeFile); - $data = Json::getArrayData($content); - - if (empty($data)) { - $GLOBALS['log']->warning("Route: No data or syntax error in '{$routeFile}'."); - - return $currentData; - } + $data = Json::decode($content, true); return $this->appendRoutesToData($currentData, $data); } @@ -209,7 +209,7 @@ class Route static protected function isRouteInList(array $newRoute, array $routeList): bool { foreach ($routeList as $route) { - if (Util::isEquals($route, $newRoute)) { + if (Util::areEqual($route, $newRoute)) { return true; } } diff --git a/application/Espo/Core/Utils/Util.php b/application/Espo/Core/Utils/Util.php index d72d69553b..6a0d1524ab 100644 --- a/application/Espo/Core/Utils/Util.php +++ b/application/Espo/Core/Utils/Util.php @@ -35,7 +35,6 @@ class Util protected static $reservedWordList = ['Case']; - /** * Get a folder separator. * @@ -507,17 +506,18 @@ class Util } /** - * Check if two variables are equals. + * Check if two variables are equal. * - * @param mixed $var1 - * @param mixed $var2 + * @param mixed $var1 + * @param mixed $var2 * @return boolean */ - public static function isEquals($var1, $var2) + public static function areEqual($var1, $var2): bool { if (is_array($var1)) { static::ksortRecursive($var1); } + if (is_array($var2)) { static::ksortRecursive($var2); } diff --git a/tests/unit/Espo/Core/Utils/JsonTest.php b/tests/unit/Espo/Core/Utils/JsonTest.php index 9180391622..92ec3f27b9 100644 --- a/tests/unit/Espo/Core/Utils/JsonTest.php +++ b/tests/unit/Espo/Core/Utils/JsonTest.php @@ -69,23 +69,4 @@ class JsonTest extends \PHPUnit\Framework\TestCase $this->assertEquals('data/logs', Json::decode($test)->folder); } - - public function testIsJSON() - { - $this->assertTrue(Json::isJSON('{"database":{"driver":"pdo_mysql","host":"localhost"},"devMode":true}')); - - $this->assertTrue(Json::isJSON('[]')); - - $this->assertTrue(Json::isJSON('{}')); - - $this->assertTrue(Json::isJSON('true')); - - $this->assertFalse(Json::isJSON('some string')); - - $this->assertTrue(Json::isJSON(true)); - $this->assertEquals('true', json_encode(true)); - - $this->assertFalse(Json::isJSON(false)); - $this->assertEquals('false', json_encode(false)); - } }