vendor/pimcore/pimcore/bundles/CoreBundle/Migrations/Version20230525131748.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Bundle\CoreBundle\Migrations;
  16. use Doctrine\DBAL\Schema\Schema;
  17. use Doctrine\Migrations\AbstractMigration;
  18. use Pimcore\File;
  19. final class Version20230525131748 extends AbstractMigration
  20. {
  21.     public function getDescription(): string
  22.     {
  23.         return 'Move config folders with content to new folders';
  24.     }
  25.     public function up(Schema $schema): void
  26.     {
  27.         $this->renameConfigFolder(['image-thumbnails''video-thumbnails'], '-''_');
  28.         $folders = [
  29.             'custom-reports' => 'custom_reports',
  30.             'document-types' => 'document_types',
  31.             'web-to-print' => 'web_to_print',
  32.             'predefined-properties' => 'predefined_properties',
  33.             'predefined-asset-metadata' => 'predefined_asset_metadata',
  34.             'custom-views' => 'custom_views',
  35.             'object-custom-layouts' => 'object_custom_layouts',
  36.         ];
  37.         $this->moveConfigFromFolders($folders);
  38.     }
  39.     public function down(Schema $schema): void
  40.     {
  41.         $this->renameConfigFolder(['image_thumbnails''video_thumbnails'], '_''-');
  42.         $folders = [
  43.             'custom_reports' => 'custom-reports',
  44.             'document_types' => 'document-types',
  45.             'web_to_print' => 'web-to-print',
  46.             'predefined_properties' => 'predefined-properties',
  47.             'predefined_asset_metadata' => 'predefined-asset-metadata',
  48.             'custom_views' => 'custom-views',
  49.             'object_custom_layouts' => 'object-custom-layouts',
  50.         ];
  51.         $this->moveConfigFromFolders($folders);
  52.     }
  53.     private function renameConfigFolder(array $foldersstring $searchstring $replace): void
  54.     {
  55.         $configDir \Pimcore::getContainer()->getParameter('kernel.project_dir') . '/var/config/';
  56.         foreach ($folders as $folder) {
  57.             if (is_dir($configDir $folder)) {
  58.                 rename($configDir $folder$configDir str_replace($search$replace$folder));
  59.             }
  60.         }
  61.     }
  62.     private function moveConfigFromFolders(array $folders): void
  63.     {
  64.         $configDir \Pimcore::getContainer()->getParameter('kernel.project_dir') . '/var/config/';
  65.         foreach ($folders as $srcFolder => $targetFolder) {
  66.             $configFolder $configDir $srcFolder;
  67.             if (is_dir($configFolder)) {
  68.                 $newConfigFolder $configDir $targetFolder;
  69.                 if (!is_dir($newConfigFolder)) {
  70.                     File::mkdir($newConfigFolder);
  71.                 }
  72.                 $files array_diff(scandir($configFolder), ['.''..']);
  73.                 foreach ($files as $file) {
  74.                     rename($configFolder '/' $file$newConfigFolder '/' $file);
  75.                 }
  76.                 rmdir($configFolder);
  77.             }
  78.         }
  79.     }
  80. }