@@ -26,23 +26,31 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product
26
26
*/
27
27
protected $ productTypeManager ;
28
28
29
+ /**
30
+ * @var \Magento\Catalog\Api\ProductRepositoryInterface
31
+ */
32
+ protected $ productRepository ;
33
+
29
34
/**
30
35
* @param Action\Context $context
31
36
* @param Builder $productBuilder
32
37
* @param Initialization\Helper $initializationHelper
33
38
* @param \Magento\Catalog\Model\Product\Copier $productCopier
34
39
* @param \Magento\Catalog\Model\Product\TypeTransitionManager $productTypeManager
40
+ * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
35
41
*/
36
42
public function __construct (
37
43
\Magento \Backend \App \Action \Context $ context ,
38
44
Product \Builder $ productBuilder ,
39
45
Initialization \Helper $ initializationHelper ,
40
46
\Magento \Catalog \Model \Product \Copier $ productCopier ,
41
- \Magento \Catalog \Model \Product \TypeTransitionManager $ productTypeManager
47
+ \Magento \Catalog \Model \Product \TypeTransitionManager $ productTypeManager ,
48
+ \Magento \Catalog \Api \ProductRepositoryInterface $ productRepository
42
49
) {
43
50
$ this ->initializationHelper = $ initializationHelper ;
44
51
$ this ->productCopier = $ productCopier ;
45
52
$ this ->productTypeManager = $ productTypeManager ;
53
+ $ this ->productRepository = $ productRepository ;
46
54
parent ::__construct ($ context , $ productBuilder );
47
55
}
48
56
@@ -74,6 +82,7 @@ public function execute()
74
82
75
83
$ originalSku = $ product ->getSku ();
76
84
$ product ->save ();
85
+ $ this ->handleImageRemoveError ($ data , $ product ->getId ());
77
86
$ productId = $ product ->getId ();
78
87
$ productAttributeSetId = $ product ->getAttributeSetId ();
79
88
$ productTypeId = $ product ->getTypeId ();
@@ -147,4 +156,33 @@ public function execute()
147
156
}
148
157
return $ resultRedirect ;
149
158
}
159
+
160
+ /**
161
+ * Notify customer when image was not deleted in specific case.
162
+ * TODO: temporary workaround must be eliminated in MAGETWO-45306
163
+ *
164
+ * @param array $postData
165
+ * @param int $productId
166
+ * @return void
167
+ */
168
+ private function handleImageRemoveError ($ postData , $ productId )
169
+ {
170
+ if (isset ($ postData ['product ' ]['media_gallery ' ]['images ' ])) {
171
+ $ removedImagesAmount = 0 ;
172
+ foreach ($ postData ['product ' ]['media_gallery ' ]['images ' ] as $ image ) {
173
+ if (!empty ($ image ['removed ' ])) {
174
+ $ removedImagesAmount ++;
175
+ }
176
+ }
177
+ if ($ removedImagesAmount ) {
178
+ $ expectedImagesAmount = count ($ postData ['product ' ]['media_gallery ' ]['images ' ]) - $ removedImagesAmount ;
179
+ $ product = $ this ->productRepository ->getById ($ productId );
180
+ if ($ expectedImagesAmount != count ($ product ->getMediaGallery ('images ' ))) {
181
+ $ this ->messageManager ->addNotice (
182
+ __ ('The image cannot be removed as it has been assigned to the other image role ' )
183
+ );
184
+ }
185
+ }
186
+ }
187
+ }
150
188
}
0 commit comments