/** * Internal method to create the size * @param ImageReferencedElement $entity * @param EntityManager $em */ protected function createImageSize(ImageReferencedElement $entity, EntityManager $em) { $imageId = $entity->getImageId(); $fileStorage = $this->container['cms.file_storage']; /* @var $fileStorage \Supra\Package\Cms\FileStorage\FileStorage */ $image = $fileStorage->findImage($imageId); if ($image === null) { $this->container->getLogger()->warn("Image [{$imageId}] was not found inside the file storage." . " Maybe another file storage must be configured for the image size creator listener?"); return false; } $width = $entity->getWidth(); $height = $entity->getHeight(); // No dimensions if ($width > 0 && $height > 0 || $entity->isCropped()) { if ($entity->isCropped()) { $sizeName = $fileStorage->createImageVariant($image, $width, $height, $entity->getCropLeft(), $entity->getCropTop(), $entity->getCropWidth(), $entity->getCropHeight()); } else { $sizeName = $fileStorage->createResizedImage($image, $width, $height); } $entity->setSizeName($sizeName); // Maybe could update to real width/height inside image metadata? // $size = $image->getImageSize($sizeName); // $entity->setWidth($size->getWidth()); // $entity->setHeight($size->getHeight()); // Recalculate the changeset because of changed size name field $class = $em->getClassMetadata(ImageReferencedElement::CN()); $unitOfWork = $em->getUnitOfWork(); $unitOfWork->recomputeSingleEntityChangeSet($class, $entity); } }