vendor/pimcore/pimcore/bundles/CoreBundle/Migrations/Version20230720161000.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\Model\DataObject;
  19. final class Version20230720161000 extends AbstractMigration
  20. {
  21.     public function getDescription(): string
  22.     {
  23.         return 'Updates class definition files';
  24.     }
  25.     public function up(Schema $schema): void
  26.     {
  27.         try {
  28.             $list = new DataObject\ClassDefinition\Listing();
  29.             foreach ($list->getClasses() as $class) {
  30.                 $this->write(sprintf('Saving class: %s'$class->getName()));
  31.                 $class->save();
  32.             }
  33.             $list = new DataObject\ClassDefinition\CustomLayout\Listing();
  34.             foreach ($list->getLayoutDefinitions() as $layout) {
  35.                 $this->write(sprintf('Saving custom layout: %s'$layout->getName()));
  36.                 $layout->save();
  37.             }
  38.         } catch (DataObject\Exception\DefinitionWriteException $e) {
  39.             $this->write(
  40.                 'Could not write class definition file. Please set PIMCORE_CLASS_DEFINITION_WRITABLE env.' "\n" .
  41.                 sprintf(
  42.                     'If you have already migrated the definitions, you can skip this migration via "php bin/console doctrine:migrations:version --add %s"',
  43.                     __CLASS__
  44.                 )
  45.             );
  46.             throw $e;
  47.         }
  48.     }
  49.     public function down(Schema $schema): void
  50.     {
  51.         $this->write(sprintf('Please restore your class definition files in %s and run bin/console pimcore:deployment:classes-rebuild manually.'PIMCORE_CLASS_DEFINITION_DIRECTORY));
  52.     }
  53. }