20
20
class ConfigureCheckService {
21
21
private string $ architecture ;
22
22
private bool $ isCacheDisabled = false ;
23
+ private array $ result = [];
23
24
public function __construct (
24
25
private IAppConfig $ appConfig ,
25
26
private SystemConfig $ systemConfig ,
@@ -72,8 +73,11 @@ public function checkPoppler(): array {
72
73
}
73
74
74
75
public function checkPdfSig (): array {
76
+ if (!empty ($ this ->result ['poppler ' ])) {
77
+ return $ this ->result ['poppler ' ];
78
+ }
75
79
if (shell_exec ('which pdfsig ' ) === null ) {
76
- return [
80
+ return $ this -> result [ ' poppler ' ] = [
77
81
(new ConfigureCheckHelper ())
78
82
->setInfoMessage ('Poppler utils not installed ' )
79
83
->setResource ('pdfsig ' )
@@ -84,7 +88,7 @@ public function checkPdfSig(): array {
84
88
// With 2>&1 the STRERR is redirected to STDOUT
85
89
$ version = shell_exec ('pdfsig -v 2>&1 ' );
86
90
if (!$ version ) {
87
- return [
91
+ return $ this -> result [ ' poppler ' ] = [
88
92
(new ConfigureCheckHelper ())
89
93
->setErrorMessage ('Fail to retrieve pdfsig version ' )
90
94
->setResource ('pdfsig ' )
@@ -93,22 +97,25 @@ public function checkPdfSig(): array {
93
97
}
94
98
$ version = preg_match ('/pdfsig version (?<version>.*)/ ' , $ version , $ matches );
95
99
if (!$ version ) {
96
- return [
100
+ return $ this -> result [ ' poppler ' ] = [
97
101
(new ConfigureCheckHelper ())
98
102
->setErrorMessage ('Fail to retrieve pdfsig version ' )
99
103
->setResource ('pdfsig ' )
100
104
->setTip ("This is a poppler-utils dependency and wasn't possible to parse the output of command pdfsig -v " ),
101
105
];
102
106
}
103
- return [(new ConfigureCheckHelper ())
107
+ return $ this -> result [ ' poppler ' ] = [(new ConfigureCheckHelper ())
104
108
->setSuccessMessage ('pdfsig version: ' . $ matches ['version ' ])
105
109
->setResource ('pdfsig ' )
106
110
];
107
111
}
108
112
109
113
public function checkPdfinfo (): array {
114
+ if (!empty ($ this ->result ['pdfinfo ' ])) {
115
+ return $ this ->result ['pdfinfo ' ];
116
+ }
110
117
if (shell_exec ('which pdfinfo ' ) === null ) {
111
- return [
118
+ return $ this -> result [ ' pdfinfo ' ] = [
112
119
(new ConfigureCheckHelper ())
113
120
->setInfoMessage ('Poppler utils not installed ' )
114
121
->setResource ('pdfinfo ' )
@@ -119,7 +126,7 @@ public function checkPdfinfo(): array {
119
126
// With 2>&1 the STRERR is redirected to STDOUT
120
127
$ version = shell_exec ('pdfinfo -v 2>&1 ' );
121
128
if (!$ version ) {
122
- return [
129
+ return $ this -> result [ ' pdfinfo ' ] = [
123
130
(new ConfigureCheckHelper ())
124
131
->setErrorMessage ('Fail to retrieve pdfinfo version ' )
125
132
->setResource ('pdfinfo ' )
@@ -128,14 +135,14 @@ public function checkPdfinfo(): array {
128
135
}
129
136
$ version = preg_match ('/pdfinfo version (?<version>.*)/ ' , $ version , $ matches );
130
137
if (!$ version ) {
131
- return [
138
+ return $ this -> result [ ' pdfinfo ' ] = [
132
139
(new ConfigureCheckHelper ())
133
140
->setErrorMessage ('Fail to retrieve pdfinfo version ' )
134
141
->setResource ('pdfinfo ' )
135
142
->setTip ("This is a poppler-utils dependency and wasn't possible to parse the output of command pdfinfo -v " ),
136
143
];
137
144
}
138
- return [(new ConfigureCheckHelper ())
145
+ return $ this -> result [ ' pdfinfo ' ] = [(new ConfigureCheckHelper ())
139
146
->setSuccessMessage ('pdfinfo version: ' . $ matches ['version ' ])
140
147
->setResource ('pdfinfo ' )
141
148
];
@@ -147,12 +154,15 @@ public function checkPdfinfo(): array {
147
154
* @return ConfigureCheckHelper[]
148
155
*/
149
156
public function checkJSignPdf (): array {
157
+ if (!empty ($ this ->result ['jsignpdf ' ])) {
158
+ return $ this ->result ['jsignpdf ' ];
159
+ }
150
160
$ jsignpdJarPath = $ this ->appConfig ->getValueString (Application::APP_ID , 'jsignpdf_jar_path ' );
151
161
if ($ jsignpdJarPath ) {
152
162
$ resultOfVerify = $ this ->verify ('jsignpdf ' );
153
163
if (count ($ resultOfVerify )) {
154
164
[$ errorMessage , $ tip ] = $ this ->getErrorAndTipToResultOfVerify ($ resultOfVerify );
155
- return [
165
+ return $ this -> result [ ' jsignpdf ' ] = [
156
166
(new ConfigureCheckHelper ())
157
167
->setErrorMessage ($ errorMessage )
158
168
->setResource ('jsignpdf ' )
@@ -161,7 +171,7 @@ public function checkJSignPdf(): array {
161
171
}
162
172
if (file_exists ($ jsignpdJarPath )) {
163
173
if (!$ this ->isJavaOk ()) {
164
- return [
174
+ return $ this -> result [ ' jsignpdf ' ] = [
165
175
(new ConfigureCheckHelper ())
166
176
->setErrorMessage ('Necessary Java to run JSignPdf ' )
167
177
->setResource ('jsignpdf ' )
@@ -171,6 +181,7 @@ public function checkJSignPdf(): array {
171
181
$ jsignPdf = $ this ->jSignPdfHandler ->getJSignPdf ();
172
182
$ jsignPdf ->setParam ($ this ->jSignPdfHandler ->getJSignParam ());
173
183
$ currentVersion = $ jsignPdf ->getVersion ();
184
+ $ return = [];
174
185
if ($ currentVersion < InstallService::JSIGNPDF_VERSION ) {
175
186
if (!$ currentVersion ) {
176
187
$ message = 'Necessary install the version ' . InstallService::JSIGNPDF_VERSION ;
@@ -196,14 +207,14 @@ public function checkJSignPdf(): array {
196
207
->setResource ('jsignpdf ' );
197
208
return $ return ;
198
209
}
199
- return [
210
+ return $ this -> result [ ' jsignpdf ' ] = [
200
211
(new ConfigureCheckHelper ())
201
212
->setErrorMessage ('JSignPdf binary not found: ' . $ jsignpdJarPath )
202
213
->setResource ('jsignpdf ' )
203
214
->setTip ('Run occ libresign:install --jsignpdf ' ),
204
215
];
205
216
}
206
- return [
217
+ return $ this -> result [ ' jsignpdf ' ] = [
207
218
(new ConfigureCheckHelper ())
208
219
->setErrorMessage ('JSignPdf not found ' )
209
220
->setResource ('jsignpdf ' )
@@ -217,12 +228,15 @@ public function checkJSignPdf(): array {
217
228
* @return ConfigureCheckHelper[]
218
229
*/
219
230
public function checkPdftk (): array {
231
+ if (!empty ($ this ->result ['pdftk ' ])) {
232
+ return $ this ->result ['pdftk ' ];
233
+ }
220
234
$ pdftkPath = $ this ->appConfig ->getValueString (Application::APP_ID , 'pdftk_path ' );
221
235
if ($ pdftkPath ) {
222
236
$ resultOfVerify = $ this ->verify ('pdftk ' );
223
237
if (count ($ resultOfVerify )) {
224
238
[$ errorMessage , $ tip ] = $ this ->getErrorAndTipToResultOfVerify ($ resultOfVerify );
225
- return [
239
+ return $ this -> result [ ' pdftk ' ] = [
226
240
(new ConfigureCheckHelper ())
227
241
->setErrorMessage ($ errorMessage )
228
242
->setResource ('pdftk ' )
@@ -231,7 +245,7 @@ public function checkPdftk(): array {
231
245
}
232
246
if (file_exists ($ pdftkPath )) {
233
247
if (!$ this ->isJavaOk ()) {
234
- return [
248
+ return $ this -> result [ ' pdftk ' ] = [
235
249
(new ConfigureCheckHelper ())
236
250
->setErrorMessage ('Necessary Java to run PDFtk ' )
237
251
->setResource ('jsignpdf ' )
@@ -242,7 +256,7 @@ public function checkPdftk(): array {
242
256
$ version = [];
243
257
\exec ($ javaPath . ' -jar ' . $ pdftkPath . ' --version 2>&1 ' , $ version , $ resultCode );
244
258
if ($ resultCode !== 0 ) {
245
- return [
259
+ return $ this -> result [ ' pdftk ' ] = [
246
260
(new ConfigureCheckHelper ())
247
261
->setErrorMessage ('Failure to check PDFtk version. ' )
248
262
->setResource ('java ' )
@@ -253,36 +267,39 @@ public function checkPdftk(): array {
253
267
preg_match ('/pdftk port to java (?<version>.*) a Handy Tool/ ' , $ version [0 ], $ matches );
254
268
if (isset ($ matches ['version ' ])) {
255
269
if ($ matches ['version ' ] === InstallService::PDFTK_VERSION ) {
256
- $ return [] = (new ConfigureCheckHelper ())
257
- ->setSuccessMessage ('PDFtk version: ' . InstallService::PDFTK_VERSION )
258
- ->setResource ('pdftk ' );
259
- $ return [] = (new ConfigureCheckHelper ())
260
- ->setSuccessMessage ('PDFtk path: ' . $ pdftkPath )
261
- ->setResource ('pdftk ' );
262
- return $ return ;
270
+ return $ this ->result ['pdftk ' ] = [
271
+ $ this ->result ['pdftk ' ][] = (new ConfigureCheckHelper ())
272
+ ->setSuccessMessage ('PDFtk version: ' . InstallService::PDFTK_VERSION )
273
+ ->setResource ('pdftk ' ),
274
+ $ this ->result ['pdftk ' ][] = (new ConfigureCheckHelper ())
275
+ ->setSuccessMessage ('PDFtk path: ' . $ pdftkPath )
276
+ ->setResource ('pdftk ' ),
277
+ ];
263
278
}
264
279
$ message = 'Necessary install the version ' . InstallService::PDFTK_VERSION ;
265
- $ return [] = (new ConfigureCheckHelper ())
266
- ->setErrorMessage ($ message )
267
- ->setResource ('jsignpdf ' )
268
- ->setTip ('Run occ libresign:install --jsignpdf ' );
280
+ return $ this ->result ['pdftk ' ] = [
281
+ (new ConfigureCheckHelper ())
282
+ ->setErrorMessage ($ message )
283
+ ->setResource ('jsignpdf ' )
284
+ ->setTip ('Run occ libresign:install --jsignpdf ' )
285
+ ];
269
286
}
270
287
}
271
- return [
288
+ return $ this -> result [ ' pdftk ' ] = [
272
289
(new ConfigureCheckHelper ())
273
290
->setErrorMessage ('PDFtk binary is invalid: ' . $ pdftkPath )
274
291
->setResource ('pdftk ' )
275
292
->setTip ('Run occ libresign:install --pdftk ' ),
276
293
];
277
294
}
278
- return [
295
+ return $ this -> result [ ' pdftk ' ] = [
279
296
(new ConfigureCheckHelper ())
280
297
->setErrorMessage ('PDFtk binary not found: ' . $ pdftkPath )
281
298
->setResource ('pdftk ' )
282
299
->setTip ('Run occ libresign:install --pdftk ' ),
283
300
];
284
301
}
285
- return [
302
+ return $ this -> result [ ' pdftk ' ] = [
286
303
(new ConfigureCheckHelper ())
287
304
->setErrorMessage ('PDFtk not found ' )
288
305
->setResource ('pdftk ' )
@@ -336,12 +353,15 @@ private function getErrorAndTipToResultOfVerify(array $result): array {
336
353
* @return ConfigureCheckHelper[]
337
354
*/
338
355
private function checkJava (): array {
356
+ if (!empty ($ this ->result ['java ' ])) {
357
+ return $ this ->result ['java ' ];
358
+ }
339
359
$ javaPath = $ this ->appConfig ->getValueString (Application::APP_ID , 'java_path ' );
340
360
if ($ javaPath ) {
341
361
$ resultOfVerify = $ this ->verify ('java ' );
342
362
if (count ($ resultOfVerify )) {
343
363
[$ errorMessage , $ tip ] = $ this ->getErrorAndTipToResultOfVerify ($ resultOfVerify );
344
- return [
364
+ return $ this -> result [ ' java ' ] = [
345
365
(new ConfigureCheckHelper ())
346
366
->setErrorMessage ($ errorMessage )
347
367
->setResource ('java ' )
@@ -351,7 +371,7 @@ private function checkJava(): array {
351
371
if (file_exists ($ javaPath )) {
352
372
\exec ($ javaPath . ' -version 2>&1 ' , $ javaVersion , $ resultCode );
353
373
if (empty ($ javaVersion )) {
354
- return [
374
+ return $ this -> result [ ' java ' ] = [
355
375
(new ConfigureCheckHelper ())
356
376
->setErrorMessage (
357
377
'Failed to execute Java. Sounds that your operational system is blocking the JVM. '
@@ -361,7 +381,7 @@ private function checkJava(): array {
361
381
];
362
382
}
363
383
if ($ resultCode !== 0 ) {
364
- return [
384
+ return $ this -> result [ ' java ' ] = [
365
385
(new ConfigureCheckHelper ())
366
386
->setErrorMessage ('Failure to check Java version. ' )
367
387
->setResource ('java ' )
@@ -370,7 +390,7 @@ private function checkJava(): array {
370
390
}
371
391
$ javaVersion = current ($ javaVersion );
372
392
if ($ javaVersion !== InstallService::JAVA_VERSION ) {
373
- return [
393
+ return $ this -> result [ ' java ' ] = [
374
394
(new ConfigureCheckHelper ())
375
395
->setErrorMessage (
376
396
sprintf (
@@ -386,22 +406,22 @@ private function checkJava(): array {
386
406
\exec ($ javaPath . ' -XshowSettings:properties -version 2>&1 ' , $ output , $ resultCode );
387
407
preg_match ('/native.encoding = (?<encoding>.*)\n/ ' , implode ("\n" , $ output ), $ matches );
388
408
if (!isset ($ matches ['encoding ' ])) {
389
- return [
409
+ return $ this -> result [ ' java ' ] = [
390
410
(new ConfigureCheckHelper ())
391
411
->setErrorMessage ('Java encoding not found. ' )
392
412
->setResource ('java ' )
393
413
->setTip (sprintf ('The command %s need to have native.encoding ' , $ javaPath . ' -XshowSettings:properties -version ' )),
394
414
];
395
415
}
396
416
if (!str_contains ($ matches ['encoding ' ], 'UTF-8 ' )) {
397
- return [
417
+ return $ this -> result [ ' java ' ] = [
398
418
(new ConfigureCheckHelper ())
399
419
->setInfoMessage ('Non-UTF-8 encoding detected. This may cause issues with accented or special characters ' )
400
420
->setResource ('java ' )
401
421
->setTip (' Ensure the system encoding is UTF-8. You can check it using: locale charmap ' ),
402
422
];
403
423
}
404
- return [
424
+ return $ this -> result [ ' java ' ] = [
405
425
(new ConfigureCheckHelper ())
406
426
->setSuccessMessage ('Java version: ' . $ javaVersion )
407
427
->setResource ('java ' ),
@@ -410,14 +430,14 @@ private function checkJava(): array {
410
430
->setResource ('java ' ),
411
431
];
412
432
}
413
- return [
433
+ return $ this -> result [ ' java ' ] = [
414
434
(new ConfigureCheckHelper ())
415
435
->setErrorMessage ('Java binary not found: ' . $ javaPath )
416
436
->setResource ('java ' )
417
437
->setTip ('Run occ libresign:install --java ' ),
418
438
];
419
439
}
420
- return [
440
+ return $ this -> result [ ' java ' ] = [
421
441
(new ConfigureCheckHelper ())
422
442
->setErrorMessage ('Java not installed ' )
423
443
->setResource ('java ' )
0 commit comments