Skip to content
This repository was archived by the owner on Nov 6, 2021. It is now read-only.

Commit c0b10aa

Browse files
author
Florian Horn
committed
Added feature to add dummy images for products and categories
1 parent 68fceda commit c0b10aa

File tree

9 files changed

+279
-77
lines changed

9 files changed

+279
-77
lines changed

Handler/CategoryImageHandler.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
/**
3+
* This file is part of the Content Fuzzyfyr module for Magento2.
4+
*
5+
* (c) All.In Data GmbH
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
11+
namespace AllInData\ContentFuzzyfyr\Handler;
12+
13+
use Magento\Framework\App\Filesystem\DirectoryList;
14+
use Magento\Catalog\Model\Product\Media\Config;
15+
use Magento\Framework\Filesystem;
16+
use Magento\Framework\Filesystem\Io\File;
17+
use Magento\Framework\Filesystem\Directory\WriteInterface;
18+
19+
/**
20+
* Class CategoryImageHandler
21+
* @package AllInData\ContentFuzzyfyr\Handler
22+
*/
23+
class CategoryImageHandler extends MediaFileHandler
24+
{
25+
/*
26+
* Path
27+
*/
28+
const MEDIA_MODULE_BASE_PATH = 'catalog/category';
29+
}

Handler/MediaFileHandler.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function getMediaCopyOfFile($filePath)
6969
$mediaFilePath = $this->mediaDirectory->getAbsolutePath(
7070
sprintf(
7171
'%s/%s',
72-
self::MEDIA_MODULE_BASE_PATH,
72+
static::MEDIA_MODULE_BASE_PATH,
7373
basename($filePath)
7474
)
7575
);
@@ -95,11 +95,11 @@ public function getMediaCopyOfFile($filePath)
9595
/*
9696
* Create module media folder
9797
*/
98-
if (!$this->mediaDirectory->create(self::MEDIA_MODULE_BASE_PATH)) {
98+
if (!$this->mediaDirectory->create(static::MEDIA_MODULE_BASE_PATH)) {
9999
throw new \RuntimeException(
100100
sprintf(
101101
'Could not create media folder: "%s"',
102-
self::MEDIA_MODULE_BASE_PATH
102+
static::MEDIA_MODULE_BASE_PATH
103103
)
104104
);
105105
}

Observer/CategoriesObserver.php

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@
1515
use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory as CategoryCollectionFactory;
1616
use Magento\Catalog\Model\ResourceModel\Category as CategoryResource;
1717
use Magento\Catalog\Model\ResourceModel\CategoryFactory as CategoryResourceFactory;
18+
use Magento\UrlRewrite\Model\ResourceModel\UrlRewriteCollection;
19+
use Magento\UrlRewrite\Model\ResourceModel\UrlRewriteCollectionFactory;
1820

1921
class CategoriesObserver extends FuzzyfyrObserver
2022
{
23+
/*
24+
* Root Category
25+
*/
26+
const ROOT_CATEGORY_ID = "1";
27+
2128
/**
2229
* @var CategoryCollectionFactory
2330
*/
@@ -26,16 +33,25 @@ class CategoriesObserver extends FuzzyfyrObserver
2633
* @var CategoryResourceFactory
2734
*/
2835
protected $categoryResourceFactory;
36+
/**
37+
* @var UrlRewriteCollectionFactory
38+
*/
39+
protected $urlRewriteCollectionFactory;
2940

3041
/**
31-
* CategorysObserver constructor.
42+
* CategoriesObserver constructor.
3243
* @param CategoryCollectionFactory $categoryCollectionFactory
3344
* @param CategoryResourceFactory $categoryResourceFactory
45+
* @param UrlRewriteCollectionFactory $urlRewriteCollectionFactory
3446
*/
35-
public function __construct(CategoryCollectionFactory $categoryCollectionFactory, CategoryResourceFactory $categoryResourceFactory)
36-
{
47+
public function __construct(
48+
CategoryCollectionFactory $categoryCollectionFactory,
49+
CategoryResourceFactory $categoryResourceFactory,
50+
UrlRewriteCollectionFactory $urlRewriteCollectionFactory
51+
) {
3752
$this->categoryCollectionFactory = $categoryCollectionFactory;
3853
$this->categoryResourceFactory = $categoryResourceFactory;
54+
$this->urlRewriteCollectionFactory = $urlRewriteCollectionFactory;
3955
}
4056

4157
/**
@@ -48,19 +64,38 @@ public function isValid(Configuration $configuration)
4864

4965
/**
5066
* {@inheritdoc}
51-
* @TODO clear table url_rewrite for entity_type category
52-
* @TODO mark indexer to invalidate index
5367
*/
5468
protected function run(Configuration $configuration)
5569
{
5670
/** @var CategoryResource $categoryResource */
5771
$categoryResource = $this->categoryResourceFactory->create();
5872

73+
/*
74+
* clear table url_rewrite for entity_type category
75+
*/
76+
/** @var UrlRewriteCollection $urlRewriteCollection */
77+
$urlRewriteCollection = $this->urlRewriteCollectionFactory->create();
78+
$urlRewriteCollection
79+
->addFieldToFilter('entity_type', ['eq' => 'category'])
80+
->load();
81+
foreach ($urlRewriteCollection->getItems() as $urlRewrite) {
82+
/** @var \Magento\UrlRewrite\Model\UrlRewrite $urlRewrite */
83+
$urlRewrite->delete();
84+
}
85+
86+
/*
87+
* Process
88+
*/
5989
/** @var CategoryCollection $categoryCollection */
6090
$categoryCollection = $this->categoryCollectionFactory->create();
6191
$categoryCollection->load();
6292
foreach ($categoryCollection->getItems() as $category) {
6393
/** @var \Magento\Catalog\Model\Category $category */
94+
if (self::ROOT_CATEGORY_ID === $category->getId()) {
95+
// skip root category
96+
continue;
97+
}
98+
$category->load($category->getId());
6499
$this->doUpdate($configuration, $category);
65100
$categoryResource->save($category);
66101
}

Observer/CategoryImageObserver.php

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010

1111
namespace AllInData\ContentFuzzyfyr\Observer;
1212

13-
use AllInData\ContentFuzzyfyr\Handler\MediaFileHandler;
13+
use AllInData\ContentFuzzyfyr\Handler\CategoryImageHandler;
1414
use AllInData\ContentFuzzyfyr\Model\Configuration;
1515
use Magento\Catalog\Model\ResourceModel\Category\Collection as CategoryCollection;
1616
use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory as CategoryCollectionFactory;
1717
use Magento\Catalog\Model\ResourceModel\Category as CategoryResource;
1818
use Magento\Catalog\Model\ResourceModel\CategoryFactory as CategoryResourceFactory;
19+
use Magento\UrlRewrite\Model\ResourceModel\UrlRewriteCollection;
20+
use Magento\UrlRewrite\Model\ResourceModel\UrlRewriteCollectionFactory;
1921

2022
class CategoryImageObserver extends FuzzyfyrObserver
2123
{
24+
/*
25+
* Root Category
26+
*/
27+
const ROOT_CATEGORY_ID = "1";
28+
2229
/**
2330
* @var CategoryCollectionFactory
2431
*/
@@ -28,23 +35,30 @@ class CategoryImageObserver extends FuzzyfyrObserver
2835
*/
2936
protected $categoryResourceFactory;
3037
/**
31-
* @var MediaFileHandler
38+
* @var UrlRewriteCollectionFactory
39+
*/
40+
protected $urlRewriteCollectionFactory;
41+
/**
42+
* @var CategoryImageHandler
3243
*/
3344
private $mediaFileHandler;
3445

3546
/**
3647
* CategoryImageObserver constructor.
3748
* @param CategoryCollectionFactory $categoryCollectionFactory
3849
* @param CategoryResourceFactory $categoryResourceFactory
39-
* @param MediaFileHandler $mediaFileHandler
50+
* @param UrlRewriteCollectionFactory $urlRewriteCollectionFactory
51+
* @param CategoryImageHandler $mediaFileHandler
4052
*/
4153
public function __construct(
4254
CategoryCollectionFactory $categoryCollectionFactory,
4355
CategoryResourceFactory $categoryResourceFactory,
44-
MediaFileHandler $mediaFileHandler
56+
UrlRewriteCollectionFactory $urlRewriteCollectionFactory,
57+
CategoryImageHandler $mediaFileHandler
4558
) {
4659
$this->categoryCollectionFactory = $categoryCollectionFactory;
4760
$this->categoryResourceFactory = $categoryResourceFactory;
61+
$this->urlRewriteCollectionFactory = $urlRewriteCollectionFactory;
4862
$this->mediaFileHandler = $mediaFileHandler;
4963
}
5064

@@ -58,19 +72,38 @@ public function isValid(Configuration $configuration)
5872

5973
/**
6074
* {@inheritdoc}
61-
* @TODO clear table url_rewrite for entity_type category
62-
* @TODO mark indexer to invalidate index
6375
*/
6476
protected function run(Configuration $configuration)
6577
{
6678
/** @var CategoryResource $categoryResource */
6779
$categoryResource = $this->categoryResourceFactory->create();
6880

81+
/*
82+
* clear table url_rewrite for entity_type category
83+
*/
84+
/** @var UrlRewriteCollection $urlRewriteCollection */
85+
$urlRewriteCollection = $this->urlRewriteCollectionFactory->create();
86+
$urlRewriteCollection
87+
->addFieldToFilter('entity_type', ['eq' => 'category'])
88+
->load();
89+
foreach ($urlRewriteCollection->getItems() as $urlRewrite) {
90+
/** @var \Magento\UrlRewrite\Model\UrlRewrite $urlRewrite */
91+
$urlRewrite->delete();
92+
}
93+
94+
/*
95+
* Process
96+
*/
6997
/** @var CategoryCollection $categoryCollection */
7098
$categoryCollection = $this->categoryCollectionFactory->create();
7199
$categoryCollection->load();
72100
foreach ($categoryCollection->getItems() as $category) {
73101
/** @var \Magento\Catalog\Model\Category $category */
102+
if (self::ROOT_CATEGORY_ID === $category->getId()) {
103+
// skip root category
104+
continue;
105+
}
106+
$category->load($category->getId());
74107
$this->doUpdate($configuration, $category);
75108
$categoryResource->save($category);
76109
}
@@ -90,6 +123,6 @@ protected function doUpdate(Configuration $configuration, \Magento\Catalog\Model
90123
}
91124

92125
$imagePath = $this->mediaFileHandler->getMediaCopyOfFile($configuration->getDummyImagePath());
93-
$category->setData('image', $imagePath);
126+
$category->setData('image', basename($imagePath));
94127
}
95128
}

Observer/ProductImagesObserver.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
use AllInData\ContentFuzzyfyr\Handler\MediaFileHandler;
1414
use AllInData\ContentFuzzyfyr\Model\Configuration;
15-
use Magento\Catalog\Api\ProductRepositoryInterface;
1615
use Magento\Catalog\Model\ResourceModel\Product\Collection as ProductCollection;
1716
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory as ProductCollectionFactory;
1817

@@ -22,10 +21,6 @@ class ProductImagesObserver extends FuzzyfyrObserver
2221
* @var ProductCollectionFactory
2322
*/
2423
protected $productCollectionFactory;
25-
/**
26-
* @var ProductRepositoryInterface
27-
*/
28-
protected $productRepository;
2924
/**
3025
* @var MediaFileHandler
3126
*/
@@ -34,16 +29,13 @@ class ProductImagesObserver extends FuzzyfyrObserver
3429
/**
3530
* ProductImagesObserver constructor.
3631
* @param ProductCollectionFactory $productCollectionFactory
37-
* @param ProductRepositoryInterface $productRepository
3832
* @param MediaFileHandler $mediaFileHandler
3933
*/
4034
public function __construct(
4135
ProductCollectionFactory $productCollectionFactory,
42-
ProductRepositoryInterface $productRepository,
4336
MediaFileHandler $mediaFileHandler
4437
) {
4538
$this->productCollectionFactory = $productCollectionFactory;
46-
$this->productRepository = $productRepository;
4739
$this->mediaFileHandler = $mediaFileHandler;
4840
}
4941

@@ -66,7 +58,7 @@ protected function run(Configuration $configuration)
6658
foreach ($productCollection->getItems() as $product) {
6759
/** @var \Magento\Catalog\Model\Product $product */
6860
$this->doUpdate($configuration, $product);
69-
$this->productRepository->save($product);
61+
$product->save();
7062
}
7163
}
7264

0 commit comments

Comments
 (0)