Skip to content

Commit cbf4a05

Browse files
committed
ACP2E-3424: do not allow pub/media delete if preview image is missing from db
1 parent 8d9b6a0 commit cbf4a05

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

app/code/Magento/PageBuilder/Model/TemplateRepository.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2019 Adobe
4+
* All Rights Reserved.
55
*/
6-
76
declare(strict_types=1);
87

98
namespace Magento\PageBuilder\Model;
@@ -14,6 +13,7 @@
1413
use Magento\Framework\Exception\CouldNotSaveException;
1514
use Magento\Framework\Exception\NoSuchEntityException;
1615
use Magento\Framework\Filesystem;
16+
use Magento\Framework\Image\Factory;
1717
use Magento\PageBuilder\Api\Data\TemplateInterface;
1818
use Magento\PageBuilder\Api\Data\TemplateSearchResultsInterfaceFactory;
1919
use Magento\PageBuilder\Api\TemplateRepositoryInterface;
@@ -71,6 +71,7 @@ class TemplateRepository implements TemplateRepositoryInterface
7171
* @param CollectionProcessorInterface $collectionProcessor
7272
* @param Filesystem $filesystem
7373
* @param Database $mediaStorage
74+
* @param Factory $imageFactory
7475
*/
7576
public function __construct(
7677
ResourceTemplate $resource,
@@ -79,7 +80,8 @@ public function __construct(
7980
TemplateSearchResultsInterfaceFactory $searchResultsFactory,
8081
CollectionProcessorInterface $collectionProcessor,
8182
Filesystem $filesystem,
82-
Database $mediaStorage
83+
Database $mediaStorage,
84+
private readonly Factory $imageFactory
8385
) {
8486
$this->resource = $resource;
8587
$this->templateFactory = $templateFactory;
@@ -152,10 +154,15 @@ public function delete(TemplateInterface $template) : bool
152154
$previewImage = $template->getPreviewImage();
153155
$previewThumbImage = $templateModel->getPreviewThumbnailImage();
154156

157+
$this->imageFactory->create($mediaDir->getAbsolutePath().$previewImage);
158+
155159
// Remove the preview image from the media directory
156160
if ($mediaDir->isExist($previewImage)) {
157161
$mediaDir->delete($previewImage);
158162
}
163+
164+
$this->imageFactory->create($mediaDir->getAbsolutePath().$previewThumbImage);
165+
159166
if ($mediaDir->isExist($previewThumbImage)) {
160167
$mediaDir->delete($previewThumbImage);
161168
}

0 commit comments

Comments
 (0)