10
10
use Magento \Framework \Event \ObserverInterface ;
11
11
use Magento \Framework \App \State ;
12
12
use Magento \MediaStorage \Service \ImageResize ;
13
+ use Magento \MediaStorage \Service \ImageResizeScheduler ;
13
14
use Magento \Catalog \Model \Config \CatalogMediaConfig ;
14
15
15
16
/**
@@ -32,21 +33,37 @@ class ImageResizeAfterProductSave implements ObserverInterface
32
33
*/
33
34
private $ catalogMediaConfig ;
34
35
36
+ /**
37
+ * @var ImageResizeScheduler
38
+ */
39
+ private $ imageResizeScheduler ;
40
+
41
+ /**
42
+ * @var bool
43
+ */
44
+ private $ imageResizeSchedulerFlag = false ;
45
+
35
46
/**
36
47
* Product constructor.
37
48
*
38
49
* @param ImageResize $imageResize
39
50
* @param State $state
40
51
* @param CatalogMediaConfig $catalogMediaConfig
52
+ * @param ImageResizeScheduler $imageResizeScheduler
53
+ * @param bool $imageResizeSchedulerFlag
41
54
*/
42
55
public function __construct (
43
56
ImageResize $ imageResize ,
44
57
State $ state ,
45
- CatalogMediaConfig $ catalogMediaConfig
58
+ CatalogMediaConfig $ catalogMediaConfig ,
59
+ ImageResizeScheduler $ imageResizeScheduler ,
60
+ bool $ imageResizeSchedulerFlag = false
46
61
) {
47
62
$ this ->imageResize = $ imageResize ;
48
63
$ this ->state = $ state ;
49
64
$ this ->catalogMediaConfig = $ catalogMediaConfig ;
65
+ $ this ->imageResizeScheduler = $ imageResizeScheduler ;
66
+ $ this ->imageResizeSchedulerFlag = $ imageResizeSchedulerFlag ;
50
67
}
51
68
52
69
/**
@@ -72,7 +89,11 @@ public function execute(\Magento\Framework\Event\Observer $observer)
72
89
73
90
if (!(bool ) $ product ->getId ()) {
74
91
foreach ($ product ->getMediaGalleryImages () as $ image ) {
75
- $ this ->imageResize ->resizeFromImageName ($ image ->getFile ());
92
+ if ($ this ->imageResizeSchedulerFlag ) {
93
+ $ this ->imageResizeScheduler ->schedule ($ image ->getFile ());
94
+ } else {
95
+ $ this ->imageResize ->resizeFromImageName ($ image ->getFile ());
96
+ }
76
97
}
77
98
} else {
78
99
$ new = $ product ->getData ('media_gallery ' );
@@ -81,7 +102,11 @@ public function execute(\Magento\Framework\Event\Observer $observer)
81
102
$ mediaOriginalGallery = !empty ($ original ['images ' ]) ? array_column ($ original ['images ' ], 'file ' ) : [];
82
103
83
104
foreach (array_diff ($ mediaGallery , $ mediaOriginalGallery ) as $ image ) {
84
- $ this ->imageResize ->resizeFromImageName ($ image );
105
+ if ($ this ->imageResizeSchedulerFlag ) {
106
+ $ this ->imageResizeScheduler ->schedule ($ image );
107
+ } else {
108
+ $ this ->imageResize ->resizeFromImageName ($ image );
109
+ }
85
110
}
86
111
}
87
112
}
0 commit comments