diff --git a/app/config/doctrine.yml b/app/config/doctrine.yml index 3b9ad7a203..63c84d7ac1 100644 --- a/app/config/doctrine.yml +++ b/app/config/doctrine.yml @@ -24,7 +24,7 @@ doctrine: datetime: Common\Doctrine\Type\UTCDateTimeType datetimetz: Common\Doctrine\Type\UTCDateTimeType time: Common\Doctrine\Type\UTCTimeType - uuid: Ramsey\Uuid\Doctrine\UuidType + uuid: Common\Doctrine\Type\UuidType orm: auto_generate_proxy_classes: "%kernel.debug%" diff --git a/composer.json b/composer.json index 63fcd3d1c2..4b5d1e5460 100644 --- a/composer.json +++ b/composer.json @@ -32,8 +32,6 @@ "matthiasmullie/minify": "~1.3", "matthiasmullie/scrapbook": "^1.3", "pimple/pimple": "^3.2", - "ramsey/uuid": "^4.0", - "ramsey/uuid-doctrine": "^2.0", "spoon/library": "^4.0", "symfony/monolog-bundle": "^3.1", "symfony/console": "^5.4", @@ -59,7 +57,8 @@ "twig/extra-bundle": "^3.23", "twig/cssinliner-extra": "^3.23", "twig/string-extra": "^3.23", - "twig/inky-extra": "^3.23" + "twig/inky-extra": "^3.23", + "symfony/uid": "^5.4" }, "require-dev": { "jdorn/sql-formatter": "1.2.17", diff --git a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php index 2ce443205f..1170b7972b 100644 --- a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php +++ b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php @@ -2,11 +2,11 @@ namespace Backend\Modules\MediaGalleries\Domain\MediaGallery; +use Doctrine\ORM\Mapping as ORM; use Backend\Core\Engine\Model; use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; use Common\ModuleExtraType; -use Doctrine\ORM\Mapping as ORM; -use Ramsey\Uuid\Doctrine\UuidGenerator; +use Symfony\Component\Uid\Uuid; /** * @ORM\Entity(repositoryClass="Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository") @@ -15,11 +15,10 @@ class MediaGallery { /** - * @var string + * @var Uuid * * @ORM\Id() - * @ORM\CustomIdGenerator(class=UuidGenerator::class) - * @ORM\Column(type="guid") + * @ORM\Column(type="uuid", unique=true) */ private $id; @@ -106,6 +105,7 @@ private function __construct( Status $status, ?string $text = null ) { + $this->id = Uuid::v4(); $this->userId = $userId; $this->action = $action; $this->title = $title; diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php index 6f253065a1..67d4c9f934 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php @@ -76,6 +76,7 @@ public function execute(): void { parent::execute(); + dump('starting upload'); $this->request = $this->getRequest(); $this->response = $this->createResponse(); $this->uploadHandler = $this->createUploader(); @@ -102,6 +103,7 @@ public function execute(): void // Remove the old folder $this->fileManager->deleteFolder($this->uploadDirectory . '/' . $result['uuid']); } + dump($newName); /** @var CreateMediaItemFromLocalStorageType $createMediaItem */ $createMediaItemFromLocalSource = new CreateMediaItemFromLocalStorageType( @@ -112,6 +114,8 @@ public function execute(): void $this->messageBus->dispatch($createMediaItemFromLocalSource); + dump('finished upload'); + $this->sendResponseForResult( array_merge( $result, diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php index b89988c683..cc1b77f4a7 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php @@ -6,8 +6,8 @@ use Backend\Modules\MediaLibrary\Domain\MediaGroupMediaItem\MediaGroupMediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\Exception\MediaItemNotFound; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Symfony\Component\Uid\Uuid; use Doctrine\ORM\EntityManagerInterface; -use Ramsey\Uuid\Uuid; use Symfony\Component\Messenger\Attribute\AsMessageHandler; #[AsMessageHandler] diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroup.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroup.php index 68a25c717a..bfbe3cebfc 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroup.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroup.php @@ -10,8 +10,7 @@ use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; use JsonSerializable; -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\UuidInterface; +use Symfony\Component\Uid\Uuid; /** * MediaGroup @@ -54,7 +53,7 @@ private function __construct( * @ORM\Id * @ORM\Column(type="uuid") */ - private UuidInterface $id, + private Uuid $id, /** * @ORM\Column(type="media_group_type") */ @@ -67,13 +66,13 @@ public static function create( Type $type ): self { return new self( - Uuid::uuid4(), + Uuid::v4(), $type ); } public static function createFromId( - UuidInterface $id, + Uuid $id, Type $type ): self { return new self( @@ -123,7 +122,7 @@ public function jsonSerialize(): array ]; } - public function getId(): UuidInterface + public function getId(): Uuid { return $this->id; } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupDataTransferObject.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupDataTransferObject.php index f755525c34..e4c79b5b29 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupDataTransferObject.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupDataTransferObject.php @@ -2,7 +2,7 @@ namespace Backend\Modules\MediaLibrary\Domain\MediaGroup; -use Ramsey\Uuid\Uuid; +use Symfony\Component\Uid\Uuid; class MediaGroupDataTransferObject { diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php index def18b8bc8..7571f4ae99 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php @@ -8,7 +8,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\StorageType; use Backend\Modules\MediaLibrary\Domain\MediaItem\Type as MediaItemPossibleType; use Backend\Modules\MediaLibrary\Domain\MediaGroup\Type as MediaGroupPossibleType; -use Ramsey\Uuid\Uuid; +use Symfony\Component\Uid\Uuid; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Exception\LogicException; @@ -183,7 +183,7 @@ private function getMediaGroupFromMediaGroupData(array $mediaGroupData): MediaGr private function getMediaGroupTransformFunction(): callable { return static fn(MediaGroup $mediaGroup) => [ - 'id' => $mediaGroup->getId(), + 'id' => $mediaGroup->getId()->toRfc4122(), 'type' => $mediaGroup->getType(), 'mediaIds' => implode(',', $mediaGroup->getIdsForConnectedItems()), 'mediaGroup' => $mediaGroup, diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroupMediaItem/MediaGroupMediaItem.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroupMediaItem/MediaGroupMediaItem.php index 45df73de6e..0eebfa7e10 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroupMediaItem/MediaGroupMediaItem.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroupMediaItem/MediaGroupMediaItem.php @@ -7,8 +7,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; use JsonSerializable; -use Ramsey\Uuid\Doctrine\UuidGenerator; -use Ramsey\Uuid\UuidInterface; +use Symfony\Component\Uid\Uuid; /** * MediaGroup MediaItem @@ -18,11 +17,9 @@ class MediaGroupMediaItem implements JsonSerializable { /** - * @var UuidInterface + * @var Uuid * * @ORM\Id() - * @ORM\GeneratedValue(strategy="CUSTOM") - * @ORM\CustomIdGenerator(class=UuidGenerator::class) * @ORM\Column(type="uuid", unique=true) */ private $id; @@ -81,6 +78,7 @@ private function __construct( MediaItem $item, int $sequence ) { + $this->id = Uuid::v4(); $this->group = $group; $this->item = $item; $this->createdOn = new DateTime(); @@ -102,14 +100,14 @@ public static function create( public function jsonSerialize(): array { return [ - 'id' => $this->id, + 'id' => $this->id->toRfc4122(), 'item' => $this->item, 'createdOn' => $this->createdOn->getTimestamp(), 'sequence' => $this->sequence, ]; } - public function getId(): int + public function getId(): Uuid { return $this->id; } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php index 40b47ba83f..7697e2fc98 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php @@ -29,6 +29,8 @@ public function __invoke(CreateMediaItemFromLocalStorageType $createMediaItemFro $createMediaItemFromLocalStorageType->setMediaItem($mediaItem); + dump($mediaItem); $this->entityManager->flush(); + dump('flushed'); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php index 3e66f7b15f..7819e52ca4 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php @@ -11,11 +11,11 @@ use Doctrine\Common\Collections\ArrayCollection; use Exception; use JsonSerializable; -use Ramsey\Uuid\Doctrine\UuidGenerator; use Symfony\Component\HttpFoundation\File\File; use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; use Backend\Core\Engine\Model; +use Symfony\Component\Uid\Uuid; /** * MediaItem @@ -26,12 +26,10 @@ class MediaItem implements JsonSerializable { /** - * @var string + * @var Uuid * * @ORM\Id() - * @ORM\GeneratedValue(strategy="CUSTOM") - * @ORM\CustomIdGenerator(class=UuidGenerator::class) - * @ORM\Column(type="guid") + * @ORM\Column(type="uuid", unique=true) */ private $id; @@ -163,6 +161,7 @@ private function __construct( MediaFolder $folder, int $userId ) { + $this->id = Uuid::v4(); $this->folder = $folder; $this->userId = $userId; $this->type = $type; diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/doctrine.yml b/src/Backend/Modules/MediaLibrary/Resources/config/doctrine.yml index 1bc5b9ba36..3450c928dd 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/doctrine.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/doctrine.yml @@ -1,7 +1,7 @@ doctrine: dbal: types: - uuid: Ramsey\Uuid\Doctrine\UuidType + uuid: Common\Doctrine\Type\UuidType media_item_storage_type: Backend\Modules\MediaLibrary\Domain\MediaItem\StorageTypeDBALType media_item_type: Backend\Modules\MediaLibrary\Domain\MediaItem\TypeDBALType media_item_aspect_ratio: Backend\Modules\MediaLibrary\Domain\MediaItem\AspectRatioDBALType diff --git a/src/Common/Doctrine/Type/UuidType.php b/src/Common/Doctrine/Type/UuidType.php new file mode 100644 index 0000000000..267f53cca3 --- /dev/null +++ b/src/Common/Doctrine/Type/UuidType.php @@ -0,0 +1,68 @@ +toRfc4122(); + } + + if (is_string($value) || (is_object($value) && method_exists($value, '__toString'))) { + $string = (string) $value; + + if ($string !== '' && Uuid::isValid($string)) { + return $string; + } + } + + throw ConversionException::conversionFailed($value, self::NAME); + } + + public function getName(): string + { + return self::NAME; + } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return true; + } + + /** @return string[] */ + public function getMappedDatabaseTypes(AbstractPlatform $platform): array + { + return [self::NAME]; + } +}