5
5
*/
6
6
namespace Magento \ImportExport \Controller \Adminhtml ;
7
7
8
- use Magento \Backend \App \Action ;
9
- use Magento \ImportExport \Model \Import \Entity \AbstractEntity ;
8
+ use Magento \Backend \App \Action \Context ;
9
+ use Magento \Framework \View \Element \AbstractBlock ;
10
+ use Magento \ImportExport \Helper \Report ;
11
+ use Magento \ImportExport \Model \Import \ErrorProcessing \ProcessingError ;
10
12
use Magento \ImportExport \Model \Import \ErrorProcessing \ProcessingErrorAggregatorInterface ;
11
13
use Magento \ImportExport \Model \History as ModelHistory ;
12
- use Magento \Framework \Escaper ;
13
14
use Magento \Framework \App \ObjectManager ;
15
+ use Magento \ImportExport \Model \Import \RenderErrorMessages ;
16
+ use Magento \ImportExport \Model \Report \ReportProcessorInterface ;
14
17
15
18
/**
16
19
* Import controller
17
20
*/
18
21
abstract class ImportResult extends Import
19
22
{
20
- const IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE = '*/history/download ' ;
21
-
22
- /**
23
- * Limit view errors
24
- */
25
- const LIMIT_ERRORS_MESSAGE = 100 ;
26
-
27
23
/**
28
- * @var \Magento\ImportExport\Model\Report\ ReportProcessorInterface
24
+ * @var ReportProcessorInterface
29
25
*/
30
- protected $ reportProcessor ;
26
+ protected ReportProcessorInterface $ reportProcessor ;
31
27
32
28
/**
33
- * @var \Magento\ImportExport\Model\History
29
+ * @var ModelHistory
34
30
*/
35
- protected $ historyModel ;
31
+ protected ModelHistory $ historyModel ;
36
32
37
33
/**
38
- * @var \Magento\ImportExport\Helper\ Report
34
+ * @var Report
39
35
*/
40
- protected $ reportHelper ;
36
+ protected Report $ reportHelper ;
41
37
42
38
/**
43
- * @var Escaper|null
39
+ * @var RenderErrorMessages
44
40
*/
45
- protected $ escaper ;
41
+ private RenderErrorMessages $ renderErrorMessages ;
46
42
47
43
/**
48
- * @param \Magento\Backend\App\Action\ Context $context
49
- * @param \Magento\ImportExport\Model\Report\ ReportProcessorInterface $reportProcessor
50
- * @param \Magento\ImportExport\Model\History $historyModel
51
- * @param \Magento\ImportExport\Helper\ Report $reportHelper
52
- * @param Escaper |null $escaper
44
+ * @param Context $context
45
+ * @param ReportProcessorInterface $reportProcessor
46
+ * @param ModelHistory $historyModel
47
+ * @param Report $reportHelper
48
+ * @param RenderErrorMessages |null $renderErrorMessages
53
49
*/
54
50
public function __construct (
55
- \ Magento \ Backend \ App \ Action \ Context $ context ,
56
- \ Magento \ ImportExport \ Model \ Report \ ReportProcessorInterface $ reportProcessor ,
57
- \ Magento \ ImportExport \ Model \ History $ historyModel ,
58
- \ Magento \ ImportExport \ Helper \ Report $ reportHelper ,
59
- Escaper $ escaper = null
51
+ Context $ context ,
52
+ ReportProcessorInterface $ reportProcessor ,
53
+ ModelHistory $ historyModel ,
54
+ Report $ reportHelper ,
55
+ ? RenderErrorMessages $ renderErrorMessages = null
60
56
) {
61
57
parent ::__construct ($ context );
62
58
$ this ->reportProcessor = $ reportProcessor ;
63
59
$ this ->historyModel = $ historyModel ;
64
60
$ this ->reportHelper = $ reportHelper ;
65
- $ this ->escaper = $ escaper
66
- ?? ObjectManager::getInstance ()->get (Escaper ::class);
61
+ $ this ->renderErrorMessages = $ renderErrorMessages ??
62
+ ObjectManager::getInstance ()->get (RenderErrorMessages ::class);
67
63
}
68
64
69
65
/**
70
66
* Add Error Messages for Import
71
67
*
72
- * @param \Magento\Framework\View\Element\ AbstractBlock $resultBlock
68
+ * @param AbstractBlock $resultBlock
73
69
* @param ProcessingErrorAggregatorInterface $errorAggregator
74
70
* @return $this
75
71
*/
76
72
protected function addErrorMessages (
77
- \ Magento \ Framework \ View \ Element \ AbstractBlock $ resultBlock ,
73
+ AbstractBlock $ resultBlock ,
78
74
ProcessingErrorAggregatorInterface $ errorAggregator
79
75
) {
80
76
if ($ errorAggregator ->getErrorsCount ()) {
81
- $ message = '' ;
82
- $ counter = 0 ;
83
- $ escapedMessages = [];
84
- foreach ($ this ->getErrorMessages ($ errorAggregator ) as $ error ) {
85
- $ escapedMessages [] = (++$ counter ) . '. ' . $ this ->escaper ->escapeHtml ($ error );
86
- if ($ counter >= self ::LIMIT_ERRORS_MESSAGE ) {
87
- break ;
88
- }
89
- }
90
- if ($ errorAggregator ->hasFatalExceptions ()) {
91
- foreach ($ this ->getSystemExceptions ($ errorAggregator ) as $ error ) {
92
- $ escapedMessages [] = $ this ->escaper ->escapeHtml ($ error ->getErrorMessage ())
93
- . ' <a href="#" onclick="$(this).next().show();$(this).hide();return false;"> '
94
- . __ ('Show more ' ) . '</a><div style="display:none;"> ' . __ ('Additional data ' ) . ': '
95
- . $ this ->escaper ->escapeHtml ($ error ->getErrorDescription ()) . '</div> ' ;
96
- }
97
- }
98
77
try {
99
- $ message .= implode ('<br> ' , $ escapedMessages );
100
78
$ resultBlock ->addNotice (
101
- '<strong> ' . __ ('Following Error(s) has been occurred during importing process: ' ) . '</strong><br> '
102
- . '<div class="import-error-wrapper"> ' . __ ('Only the first 100 errors are shown. ' )
103
- . '<a href=" '
104
- . $ this ->createDownloadUrlImportHistoryFile ($ this ->createErrorReport ($ errorAggregator ))
105
- . '"> ' . __ ('Download full report ' ) . '</a><br> '
106
- . '<div class="import-error-list"> ' . $ message . '</div></div> '
79
+ $ this ->renderErrorMessages ->renderMessages ($ errorAggregator )
107
80
);
108
81
} catch (\Exception $ e ) {
109
- foreach ($ this ->getErrorMessages ($ errorAggregator ) as $ errorMessage ) {
82
+ foreach ($ this ->renderErrorMessages -> getErrorMessages ($ errorAggregator ) as $ errorMessage ) {
110
83
$ resultBlock ->addError ($ errorMessage );
111
84
}
112
85
}
@@ -118,28 +91,23 @@ protected function addErrorMessages(
118
91
/**
119
92
* Get all Error Messages from Import Results
120
93
*
121
- * @param \Magento\ImportExport\Model\Import\ErrorProcessing\ ProcessingErrorAggregatorInterface $errorAggregator
94
+ * @param ProcessingErrorAggregatorInterface $errorAggregator
122
95
* @return array
123
96
*/
124
97
protected function getErrorMessages (ProcessingErrorAggregatorInterface $ errorAggregator )
125
98
{
126
- $ messages = [];
127
- $ rowMessages = $ errorAggregator ->getRowsGroupedByErrorCode ([], [AbstractEntity::ERROR_CODE_SYSTEM_EXCEPTION ]);
128
- foreach ($ rowMessages as $ errorCode => $ rows ) {
129
- $ messages [] = $ errorCode . ' ' . __ ('in row(s): ' ) . ' ' . implode (', ' , $ rows );
130
- }
131
- return $ messages ;
99
+ return $ this ->renderErrorMessages ->getErrorMessages ($ errorAggregator );
132
100
}
133
101
134
102
/**
135
103
* Get System Generated Exception
136
104
*
137
105
* @param ProcessingErrorAggregatorInterface $errorAggregator
138
- * @return \Magento\ImportExport\Model\Import\ErrorProcessing\ ProcessingError[]
106
+ * @return ProcessingError[]
139
107
*/
140
108
protected function getSystemExceptions (ProcessingErrorAggregatorInterface $ errorAggregator )
141
109
{
142
- return $ errorAggregator -> getErrorsByCode ([AbstractEntity:: ERROR_CODE_SYSTEM_EXCEPTION ] );
110
+ return $ this -> renderErrorMessages -> getSystemExceptions ( $ errorAggregator );
143
111
}
144
112
145
113
/**
@@ -150,15 +118,7 @@ protected function getSystemExceptions(ProcessingErrorAggregatorInterface $error
150
118
*/
151
119
protected function createErrorReport (ProcessingErrorAggregatorInterface $ errorAggregator )
152
120
{
153
- $ this ->historyModel ->loadLastInsertItem ();
154
- $ sourceFile = $ this ->reportHelper ->getReportAbsolutePath ($ this ->historyModel ->getImportedFile ());
155
- $ writeOnlyErrorItems = true ;
156
- if ($ this ->historyModel ->getData ('execution_time ' ) == ModelHistory::IMPORT_VALIDATION ) {
157
- $ writeOnlyErrorItems = false ;
158
- }
159
- $ fileName = $ this ->reportProcessor ->createReport ($ sourceFile , $ errorAggregator , $ writeOnlyErrorItems );
160
- $ this ->historyModel ->addErrorReportFile ($ fileName );
161
- return $ fileName ;
121
+ return $ this ->renderErrorMessages ->createErrorReport ($ errorAggregator );
162
122
}
163
123
164
124
/**
@@ -169,6 +129,6 @@ protected function createErrorReport(ProcessingErrorAggregatorInterface $errorAg
169
129
*/
170
130
protected function createDownloadUrlImportHistoryFile ($ fileName )
171
131
{
172
- return $ this ->getUrl ( self :: IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE , [ ' filename ' => $ fileName] );
132
+ return $ this ->renderErrorMessages -> createDownloadUrlImportHistoryFile ( $ fileName );
173
133
}
174
134
}
0 commit comments