[11/06/2024] Les premières modifs + installation de quelques modules indispensables
This commit is contained in:
148
domokits/local/modules/TheliaLibrary/Service/LibraryItemImageService.php
Executable file
148
domokits/local/modules/TheliaLibrary/Service/LibraryItemImageService.php
Executable file
@@ -0,0 +1,148 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user