@@ -238,6 +238,7 @@ public static function upload()
238238 * @param $path
239239 * @param $file
240240 *
241+ * @return string
241242 *
242243 * @since version
243244 */
@@ -247,104 +248,161 @@ public static function getMetaFile($path, $file)
247248 $ path = QuantummanagerHelper::preparePath ($ path );
248249 $ directory = JPATH_ROOT . DIRECTORY_SEPARATOR . $ path ;
249250 $ filePath = $ directory . DIRECTORY_SEPARATOR . $ file ;
250- $ meta = [
251- 'preview ' => [
252- 'link ' => 'index.php? ' . http_build_query ([
253- 'option ' => 'com_quantummanager ' ,
254- 'task ' => 'quantumviewfiles.generatePreviewImage ' ,
255- 'file ' => $ file ,
256- 'path ' => $ sourcePath ,
257- 'v ' => rand (111111 , 999999 ),
258- ])
259- ],
260- 'global ' => [],
261- 'find ' => [],
262- ];
251+ $ meta = [];
263252
264253 if (file_exists ($ filePath ))
265254 {
266- $ splitFile = explode ('. ' , $ file );
267- $ exs = mb_strtolower (array_pop ($ splitFile ));
268255
269- $ globalInfo [] = [
270- 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILENAME ' ),
271- 'value ' => implode ('. ' , $ splitFile ),
272- ];
256+ if (is_file ($ filePath ))
257+ {
258+ $ meta = [
259+ 'preview ' => [
260+ 'link ' => 'index.php? ' . http_build_query ([
261+ 'option ' => 'com_quantummanager ' ,
262+ 'task ' => 'quantumviewfiles.generatePreviewImage ' ,
263+ 'file ' => $ file ,
264+ 'path ' => $ sourcePath ,
265+ 'v ' => rand (111111 , 999999 ),
266+ ])
267+ ],
268+ 'global ' => [],
269+ 'find ' => [],
270+ ];
273271
274- $ stat = stat ($ filePath );
275272
276- if ($ stat !== false )
277- {
278- if (isset ($ stat ['mtime ' ]))
279- {
280- $ globalInfo [] = [
281- 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILEDATETIME ' ),
282- 'value ' => date (Text::_ ('DATE_FORMAT_LC5 ' ), $ stat ['mtime ' ])
283- ];
273+ $ splitFile = explode ('. ' , $ file );
274+ $ exs = mb_strtolower (array_pop ($ splitFile ));
275+
276+ $ globalInfo [] = [
277+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILENAME ' ),
278+ 'value ' => implode ('. ' , $ splitFile ),
279+ ];
280+
281+ $ stat = stat ($ filePath );
282+
283+ if ($ stat !== false ) {
284+ if (isset ($ stat ['mtime ' ])) {
285+ $ globalInfo [] = [
286+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILEDATETIME ' ),
287+ 'value ' => date (Text::_ ('DATE_FORMAT_LC5 ' ), $ stat ['mtime ' ])
288+ ];
289+ }
290+
291+ if (isset ($ stat ['size ' ])) {
292+ $ globalInfo [] = [
293+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILESIZE ' ),
294+ 'value ' => QuantummanagerHelper::formatFileSize ((int )$ stat ['size ' ])
295+ ];
296+ }
297+
284298 }
285299
286- if (isset ($ stat ['size ' ]))
287- {
300+ if (in_array ($ exs , ['jpg ' , 'jpeg ' , 'png ' , 'gif ' ])) {
301+ list ($ width , $ height , $ type , $ attr ) = getimagesize ($ filePath );
302+
288303 $ globalInfo [] = [
289- 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILESIZE ' ),
290- 'value ' => QuantummanagerHelper:: formatFileSize (( int ) $ stat [ ' size ' ])
304+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_RESOLUTION ' ),
305+ 'value ' => $ width . ' x ' . $ height
291306 ];
292307 }
293308
294- }
295-
296- if (in_array ($ exs , ['jpg ' , 'jpeg ' , 'png ' , 'gif ' ]))
297- {
298- list ($ width , $ height , $ type , $ attr ) = getimagesize ($ filePath );
299309
300- $ globalInfo [] = [
301- 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_RESOLUTION ' ),
302- 'value ' => $ width . ' x ' . $ height
303- ];
304- }
305-
306- if (in_array ($ exs , ['jpg ' , 'jpeg ' ]))
307- {
308310
311+ if (in_array ($ exs , ['jpg ' , 'jpeg ' ])) {
309312
310- $ tmp = exif_read_data ($ filePath );
311- foreach ($ tmp as $ key => $ section )
312- {
313- if (is_array ($ section ))
313+ try
314314 {
315- foreach ($ section as $ name => $ val )
316- {
317- $ meta ['find ' ][] = [
318- 'key ' => $ key . '. ' . $ name ,
319- 'value ' => $ val
320- ];
315+ $ tmp = exif_read_data ($ filePath );
316+ foreach ($ tmp as $ key => $ section ) {
317+ if (is_array ($ section )) {
318+ foreach ($ section as $ name => $ val ) {
319+ $ meta ['find ' ][] = [
320+ 'key ' => $ key . '. ' . $ name ,
321+ 'value ' => $ val
322+ ];
323+ }
324+ } else {
325+
326+ if (!in_array (mb_strtolower ($ key ), [
327+ 'filename ' ,
328+ 'filedatetime ' ,
329+ 'filesize ' ,
330+ 'filetype ' ,
331+ 'mimetype ' ,
332+ ])) {
333+ $ meta ['find ' ][] = [
334+ 'key ' => $ key ,
335+ 'value ' => $ section ,
336+ ];
337+ }
338+
339+ }
321340 }
322341 }
323- else
342+ catch ( Exception $ e )
324343 {
325-
326- if (!in_array (mb_strtolower ($ key ), [
327- 'filename ' ,
328- 'filedatetime ' ,
329- 'filesize ' ,
330- 'filetype ' ,
331- 'mimetype ' ,
332- ])) {
333- $ meta ['find ' ][] = [
334- 'key ' => $ key ,
335- 'value ' => $ section ,
336- ];
337- }
338-
344+ echo $ e ->getMessage ();
339345 }
346+
340347 }
348+
349+ $ meta ['global ' ] = array_merge ($ meta ['global ' ], $ globalInfo );
350+
341351 }
352+ else
353+ {
342354
343- $ meta ['global ' ] = array_merge ($ meta ['global ' ], $ globalInfo );
355+ $ meta = [
356+ 'preview ' => [
357+ 'link ' => 'index.php? ' . http_build_query ([
358+ 'option ' => 'com_quantummanager ' ,
359+ 'task ' => 'quantumviewfiles.generatePreviewImage ' ,
360+ 'file ' => $ file ,
361+ 'path ' => $ sourcePath ,
362+ 'v ' => rand (111111 , 999999 ),
363+ ])
364+ ],
365+ 'global ' => [],
366+ 'find ' => [],
367+ ];
368+
369+ $ splitDirectory = explode (DIRECTORY_SEPARATOR , $ directory );
370+ $ directoryName = array_pop ($ splitDirectory );
371+ $ files = Folder::files ($ directory , '' );
372+ $ directories = Folder::folders ($ directory );
373+ $ size = 0 ;
374+
375+ foreach ($ files as $ file )
376+ {
377+ $ size += filesize ($ directory . DIRECTORY_SEPARATOR . $ file );
378+ }
379+
380+ $ meta ['global ' ] = [
381+ [
382+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_DIRECTORYNAME ' ),
383+ 'value ' => $ directoryName
384+ ],
385+ [
386+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_COUNTDORECTORIES ' ),
387+ 'value ' => count ($ directories )
388+ ],
389+ [
390+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_COUNTFILES ' ),
391+ 'value ' => count ($ files )
392+ ],
393+ [
394+ 'key ' => Text::_ ('COM_QUANTUMMANAGER_FILE_METAINFO_FILESSIZE ' ),
395+ 'value ' => QuantummanagerHelper::formatFileSize ($ size )
396+ ]
397+ ];
398+
399+
400+ }
344401
345402 }
346403
347- return json_encode ($ meta );
404+
405+ return json_encode ($ meta , JSON_INVALID_UTF8_IGNORE );
348406
349407 }
350408
@@ -596,6 +654,11 @@ public static function generatePreviewImage($path, $file)
596654 $ mediaIconsPath = 'media/com_quantummanager/images/icons/ ' ;
597655 $ siteUrl = Uri::root ();
598656
657+ if (empty ($ file ))
658+ {
659+ $ app ->redirect ($ siteUrl . $ mediaIconsPath . 'folder.svg ' );
660+ }
661+
599662 if (in_array ($ exs , ['jpg ' , 'jpeg ' , 'png ' , 'gif ' ]))
600663 {
601664 JLoader::register ('JInterventionimage ' , JPATH_LIBRARIES . DIRECTORY_SEPARATOR . 'jinterventionimage ' . DIRECTORY_SEPARATOR . 'jinterventionimage.php ' );
0 commit comments