Files
domokits-NEW/domokits/local/modules/TheliaLibrary/Service/LibraryItemImageService.php

149 lines
3.9 KiB
PHP
Executable File

<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace TheliaLibrary\Service;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
use Thelia\Core\Translation\Translator;
use TheliaLibrary\Model\LibraryImageQuery;
use TheliaLibrary\Model\LibraryItemImage;
use TheliaLibrary\Model\LibraryItemImageQuery;
class LibraryItemImageService
{
protected LibraryImageService $libraryImageService;
protected EventDispatcherInterface $eventDispatcher;
public function __construct(
LibraryImageService $libraryImageService,
EventDispatcherInterface $eventDispatcher
) {
$this->eventDispatcher = $eventDispatcher;
$this->libraryImageService = $libraryImageService;
}
public function createAndAssociateImage(
File $file,
string $imageTitle = null,
string $locale = null,
$itemType,
$itemId,
$code = null,
$visible = true,
$position = null,
$replaceOld = false
): LibraryItemImage {
if ($replaceOld) {
$existingImages = LibraryImageQuery::create()
->useLibraryItemImageQuery()
->filterByItemType($itemType)
->filterByItemId($itemId)
->filterByCode($code)
->endUse()
->find();
if (!empty($existingImages)) {
foreach ($existingImages as $existingImage) {
$this->libraryImageService->deleteImage($existingImage->getId());
}
}
}
$image = $this->libraryImageService->createImage($file, $imageTitle, $locale);
return $this->associateImage(
$image->getId(),
$itemType,
$itemId,
$code,
$visible,
$position
);
}
public function associateImage(
$imageId,
$itemType,
$itemId,
$code = null,
$visible = true,
$position = null
): LibraryItemImage {
$itemImage = (new LibraryItemImage())
->setImageId($imageId)
->setItemType($itemType)
->setItemId($itemId)
->setCode($code)
->setVisible($visible);
$itemImage->save();
if (null != $position) {
$itemImage->changeAbsolutePosition($position);
}
return $itemImage;
}
public function updateImageAssociation(
$itemImageId,
$code = null,
$visible = true,
$position = null,
$positionMovement = null
): LibraryItemImage {
$itemImage = LibraryItemImageQuery::create()
->filterById($itemImageId)
->findOne();
if (null === $itemImage) {
throw new \Exception(Translator::getInstance()->trans("Can't update an item image that doesn't exist"));
}
$itemImage->setCode($code);
$itemImage->setVisible($visible);
$itemImage->save();
if (null != $position) {
$itemImage->changeAbsolutePosition($position);
}
if ('up' === strtolower($positionMovement)) {
$itemImage->movePositionUp();
}
if ('down' === strtolower($positionMovement)) {
$itemImage->movePositionDown();
}
return $itemImage;
}
public function deleteImageAssociation(
$itemImageId
): bool {
$itemImage = LibraryItemImageQuery::create()
->filterById($itemImageId)
->findOne();
if (null === $itemImage) {
return false;
}
$itemImage->delete();
return true;
}
}