diff --git a/composer.json b/composer.json index 616da88..8116aae 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "cbschuld/browser.php": "^1.9.6", "endroid/qr-code": "^4 || ^5.1", "phpoffice/phpspreadsheet": "^2.2 || ^3.3", - "open-dxp/opendxp": "^1.1.2", + "open-dxp/opendxp": "^1.2.0", "symfony/webpack-encore-bundle": "^2.1.1" }, "require-dev": { diff --git a/src/Controller/Admin/DataObject/ClassController.php b/src/Controller/Admin/DataObject/ClassController.php index 0ee08ad..a8e1237 100644 --- a/src/Controller/Admin/DataObject/ClassController.php +++ b/src/Controller/Admin/DataObject/ClassController.php @@ -21,6 +21,7 @@ use OpenDxp\Bundle\AdminBundle\Event\AdminEvents; use OpenDxp\Controller\KernelControllerEventInterface; use OpenDxp\Db; +use OpenDxp\Helper\FileSystemHelper; use OpenDxp\Logger; use OpenDxp\Model\Asset; use OpenDxp\Model\DataObject; @@ -1722,17 +1723,17 @@ public function getIconsAction(Request $request, EventDispatcherInterface $event } if ($type === null) { - $classIcons = rscandir($iconDir . '/object-icons/'); - $colorIcons = rscandir($iconDir . '/flat-color-icons/'); - $twemoji = rscandir($iconDir . '/twemoji/'); + $classIcons = FileSystemHelper::scanDirectory($iconDir . '/object-icons/'); + $colorIcons = FileSystemHelper::scanDirectory($iconDir . '/flat-color-icons/'); + $twemoji = FileSystemHelper::scanDirectory($iconDir . '/twemoji/'); $icons = [...$classIcons, ...$colorIcons, ...$twemoji]; } else { $icons = match($type) { - 'color' => rscandir($iconDir . '/flat-color-icons/'), - 'white' => rscandir($iconDir . '/flat-white-icons/'), + 'color' => FileSystemHelper::scanDirectory($iconDir . '/flat-color-icons/'), + 'white' => FileSystemHelper::scanDirectory($iconDir . '/flat-white-icons/'), 'twemoji-1', 'twemoji-2', 'twemoji-3', 'twemoji_variants-1', 'twemoji_variants-2', 'twemoji_variants-3' - => rscandir($iconDir . '/twemoji/'), + => FileSystemHelper::scanDirectory($iconDir . '/twemoji/'), default => [], }; } diff --git a/src/Controller/Admin/DataObject/ClassificationstoreController.php b/src/Controller/Admin/DataObject/ClassificationstoreController.php index a18b15a..02856b4 100644 --- a/src/Controller/Admin/DataObject/ClassificationstoreController.php +++ b/src/Controller/Admin/DataObject/ClassificationstoreController.php @@ -20,6 +20,7 @@ use OpenDxp\Bundle\AdminBundle\Controller\AdminAbstractController; use OpenDxp\Controller\KernelControllerEventInterface; use OpenDxp\Db; +use OpenDxp\Helper\ArrayHelper; use OpenDxp\Model\DataObject; use OpenDxp\Model\DataObject\ClassDefinition\Data\LayoutDefinitionEnrichmentInterface; use OpenDxp\Model\DataObject\Classificationstore; @@ -1391,7 +1392,7 @@ public function storetreeAction(Request $request): JsonResponse public function getPageAction(Request $request): JsonResponse { $tableSuffix = $request->get('table'); - if (!in_arrayi($tableSuffix, ['keys', 'groups'])) { + if (!ArrayHelper::inArrayCaseInsensitive($tableSuffix, ['keys', 'groups'])) { $tableSuffix = 'keys'; } @@ -1409,11 +1410,11 @@ public function getPageAction(Request $request): JsonResponse $sortDir = 'ASC'; } - if (!in_arrayi($sortDir, ['DESC', 'ASC'])) { + if (!ArrayHelper::inArrayCaseInsensitive($sortDir, ['DESC', 'ASC'])) { $sortDir = 'DESC'; } - if (!in_arrayi($sortKey, ['name', 'title', 'description', 'id', 'type', 'creationDate', 'modificationDate', 'enabled', 'parentId', 'storeId'])) { + if (!ArrayHelper::inArrayCaseInsensitive($sortKey, ['name', 'title', 'description', 'id', 'type', 'creationDate', 'modificationDate', 'enabled', 'parentId', 'storeId'])) { $sortKey = 'name'; } diff --git a/src/Controller/Admin/IndexController.php b/src/Controller/Admin/IndexController.php index beb684d..ca2b7cc 100644 --- a/src/Controller/Admin/IndexController.php +++ b/src/Controller/Admin/IndexController.php @@ -320,8 +320,8 @@ private function getInstanceId(): string protected function addSystemVarSettings(array &$settings): static { // upload limit - $max_upload = filesize2bytes(ini_get('upload_max_filesize') . 'B'); - $max_post = filesize2bytes(ini_get('post_max_size') . 'B'); + $max_upload = OpenDxp\Helper\FileSystemHelper::filesizeToBytes(ini_get('upload_max_filesize') . 'B'); + $max_post = OpenDxp\Helper\FileSystemHelper::filesizeToBytes(ini_get('post_max_size') . 'B'); $upload_mb = min($max_upload, $max_post) ?: $max_upload; $settings['upload_max_filesize'] = (int) $upload_mb; diff --git a/src/Controller/Admin/MiscController.php b/src/Controller/Admin/MiscController.php index d3777f6..a74fb22 100644 --- a/src/Controller/Admin/MiscController.php +++ b/src/Controller/Admin/MiscController.php @@ -23,6 +23,7 @@ use OpenDxp\Bundle\AdminBundle\Tool as AdminTool; use OpenDxp\Config; use OpenDxp\Controller\Config\ControllerDataProvider; +use OpenDxp\Helper\FileSystemHelper; use OpenDxp\Localization\LocaleServiceInterface; use OpenDxp\Tool; use OpenDxp\Tool\Storage; @@ -272,9 +273,9 @@ public function iconListAction(Request $request, ?Profiler $profiler): Response $extraInfo = null; $icons = match ($type) { - 'color' => rscandir($iconDir . '/flat-color-icons/'), - 'white' => rscandir($iconDir . '/flat-white-icons/'), - 'twemoji' => rscandir($iconDir . '/twemoji/'), + 'color' => FileSystemHelper::scanDirectory($iconDir . '/flat-color-icons/'), + 'white' => FileSystemHelper::scanDirectory($iconDir . '/flat-white-icons/'), + 'twemoji' => FileSystemHelper::scanDirectory($iconDir . '/twemoji/'), 'flags' => $this->getFlags(), default => [] }; diff --git a/src/Controller/Admin/SettingsController.php b/src/Controller/Admin/SettingsController.php index 5ec90ae..7ad5681 100644 --- a/src/Controller/Admin/SettingsController.php +++ b/src/Controller/Admin/SettingsController.php @@ -24,6 +24,7 @@ use OpenDxp\Cache\Symfony\CacheClearer; use OpenDxp\Db; use OpenDxp\Event\SystemEvents; +use OpenDxp\Helper\FileSystemHelper; use OpenDxp\Helper\StopMessengerWorkersTrait; use OpenDxp\Localization\LocaleServiceInterface; use OpenDxp\Logger; @@ -586,7 +587,7 @@ public function clearTemporaryFilesAction(EventDispatcherInterface $eventDispatc Tool\Storage::get('asset_cache')->deleteDirectory('/'); // system files - recursiveDelete(OPENDXP_SYSTEM_TEMP_DIRECTORY, false); + FileSystemHelper::recursiveDelete(OPENDXP_SYSTEM_TEMP_DIRECTORY, false); $eventDispatcher->dispatch(new GenericEvent(), SystemEvents::CACHE_CLEAR_TEMPORARY_FILES); diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 3336496..e462e03 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -363,7 +363,7 @@ private function addAdminSessionAttributeBags(ArrayNodeDefinition $adminNode): v ->useAttributeAsKey('name') ->beforeNormalization() ->ifArray()->then(function ($v) use ($normalizers) { - if (isAssocArray($v)) { + if (!array_is_list($v)) { return $normalizers['assoc']($v); } diff --git a/src/EventListener/UsageStatisticsListener.php b/src/EventListener/UsageStatisticsListener.php index 093db62..dabf5d7 100644 --- a/src/EventListener/UsageStatisticsListener.php +++ b/src/EventListener/UsageStatisticsListener.php @@ -18,6 +18,7 @@ use OpenDxp\Bundle\CoreBundle\EventListener\Traits\OpenDxpContextAwareTrait; use OpenDxp\Config; +use OpenDxp\Helper\StringHelper; use OpenDxp\Http\Request\Resolver\OpenDxpContextResolver; use OpenDxp\Security\User\TokenStorageUserResolver; use Psr\Log\LoggerAwareTrait; @@ -85,10 +86,10 @@ protected function getParams(Request $request): array $requestParams = [...$request->query->all(), ...$request->request->all()]; foreach ($requestParams as $key => $value) { - if (is_json($value)) { + if (StringHelper::isValidJson($value)) { $value = json_decode($value); if (is_array($value)) { - array_walk_recursive($value, function (&$item, $key): void { + array_walk_recursive($value, static function (&$item, $key): void { if (str_contains((string)$key, 'pass')) { $item = '*************'; } diff --git a/src/Security/ContentSecurityPolicyHandler.php b/src/Security/ContentSecurityPolicyHandler.php index c0cd0ac..f81bd2e 100644 --- a/src/Security/ContentSecurityPolicyHandler.php +++ b/src/Security/ContentSecurityPolicyHandler.php @@ -17,6 +17,7 @@ namespace OpenDxp\Bundle\AdminBundle\Security; use OpenDxp\Config; +use OpenDxp\Helper\StringHelper; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -145,7 +146,7 @@ public function getNonceHtmlAttribute(): string private function getNonce(): string { if (!$this->nonce) { - $this->nonce = generateRandomSymfonySecret(); + $this->nonce = StringHelper::generateRandomSymfonySecret(); } return $this->nonce; diff --git a/src/Security/CsrfProtectionHandler.php b/src/Security/CsrfProtectionHandler.php index a3ca049..b95cd66 100644 --- a/src/Security/CsrfProtectionHandler.php +++ b/src/Security/CsrfProtectionHandler.php @@ -16,6 +16,7 @@ namespace OpenDxp\Bundle\AdminBundle\Security; +use OpenDxp\Helper\StringHelper; use OpenDxp\Tool\Session; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; @@ -69,9 +70,9 @@ public function getCsrfToken(SessionInterface $session): ?string public function regenerateCsrfToken(SessionInterface $session, bool $force = true): void { - $this->csrfToken = Session::useBag($session, function (AttributeBagInterface $adminSession) use ($force) { + $this->csrfToken = Session::useBag($session, static function (AttributeBagInterface $adminSession) use ($force) { if ($force || !$adminSession->get('csrfToken')) { - $adminSession->set('csrfToken', sha1(generateRandomSymfonySecret())); + $adminSession->set('csrfToken', sha1(StringHelper::generateRandomSymfonySecret())); } return $adminSession->get('csrfToken'); diff --git a/src/Service/GridData/Asset.php b/src/Service/GridData/Asset.php index 796d614..cddd4b1 100644 --- a/src/Service/GridData/Asset.php +++ b/src/Service/GridData/Asset.php @@ -53,7 +53,7 @@ public static function getData(Model\Asset $asset, ?array $fields = null, ?strin $data[$field] = self::getPreviewThumbnail($asset, ['treepreview' => true, 'width' => 108, 'height' => 70, 'frame' => true]); } elseif ($fieldDef[0] === 'size') { $size = $asset->getFileSize(); - $data[$field] = formatBytes($size); + $data[$field] = OpenDxp\Helper\FileSystemHelper::formatBytes($size); } } else { if (isset($fieldDef[1])) {