PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/pnfileinfoapi/retrievefileinfo.php

https://github.com/zikula-modules/MediaAttach
PHP | 138 lines | 86 code | 28 blank | 24 comment | 50 complexity | 75603a95e9181f28fd5be811a5a3d97d MD5 | raw file
  1. <?php
  2. /**
  3. * MediaAttach
  4. *
  5. * @version $Id: $
  6. * @author Axel Guckelsberger
  7. * @link http://guite.de
  8. * @copyright Copyright (C) 2008 by Guite
  9. * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
  10. */
  11. @ini_set('memory_limit', '512M');
  12. /**
  13. * retrieve file information
  14. *
  15. * @param file array the file array
  16. * @return array file information array
  17. */
  18. function MediaAttach_fileinfoapi_retrievefileinfo($args)
  19. {
  20. $dom = ZLanguage::getModuleDomain('MediaAttach');
  21. if (!isset($args['file']) || !is_array($args['file'])) {
  22. return LogUtil::registerError(__('Error! Could not do what you wanted. Please check your input.', $dom));
  23. }
  24. $file = $args['file'];
  25. $filename = pnModGetVar('MediaAttach', 'uploaddir') . '/' . $file['filename'];
  26. unset($args);
  27. $filenameOS = DataUtil::formatForOS($filename, true);
  28. if (!is_file($filenameOS) || !file_exists($filenameOS)) {
  29. return LogUtil::registerError(__('Error! Could not do what you wanted. Please check your input.', $dom));
  30. }
  31. $fileInfo = pnModAPIFunc('MediaAttach', 'fileinfo', 'getcachedinfo', array('fileid' => $file['fileid']));
  32. if ($fileInfo != false) {
  33. return $fileInfo;
  34. }
  35. Loader::requireOnce('modules/MediaAttach/pnincludes/getid3/getid3/getid3.php');
  36. $getID3 = new getID3;
  37. // $getID3->encoding = 'UTF-8';
  38. // set_time_limit(30);
  39. $threshold = 52428800;
  40. // auto-get md5_data, md5_file, sha1_data, sha1_file if filesize < 50MB
  41. $hashesBool = (bool) (filesize($filenameOS) < $threshold);
  42. $getID3->option_md5_data = $hashesBool;
  43. $getID3->option_sha1_data = $hashesBool;
  44. $analyzeBool = (bool) (filesize($filenameOS) < $threshold);
  45. //TODO: threshold size
  46. $analyzeBool = true;
  47. if ($analyzeBool) {
  48. $fileInfo = $getID3->analyze($filenameOS);
  49. }
  50. if ($hashesBool) {
  51. $fileInfo['md5_file'] = getid3_lib::md5_file($filenameOS);
  52. $fileInfo['sha1_file'] = getid3_lib::sha1_file($filenameOS);
  53. }
  54. // copy data from all subarrays of [tags] into [comments] so
  55. // metadata is all available in one location for all tag formats
  56. getid3_lib::CopyTagsToComments($fileInfo);
  57. //strip off unneeded fields
  58. unset($fileInfo['GETID3_VERSION']);
  59. unset($fileInfo['filename']);
  60. unset($fileInfo['filepath']);
  61. unset($fileInfo['filenamepath']);
  62. $fileInfo['fileformat'] = pnModAPIFunc('MediaAttach', 'fileinfo', 'nicefileformatdisplay', array('fileinfo' => $fileInfo));
  63. // we need only 'comments_html' for now
  64. if (isset($fileInfo['tags'])) unset($fileInfo['tags']);
  65. if (isset($fileInfo['tags_html'])) unset($fileInfo['tags_html']);
  66. if (isset($fileInfo['comments'])) unset($fileInfo['comments']);
  67. //make sure some specific fields exist
  68. if (!isset($fileInfo['fileformat'])) $fileInfo['fileformat'] = '';
  69. if (!isset($fileInfo['filesize'])) $fileInfo['filesize'] = '';
  70. if (!isset($fileInfo['mime_type'])) $fileInfo['mime_type'] = '';
  71. if (!isset($fileInfo['encoding'])) $fileInfo['encoding'] = '';
  72. if (!isset($fileInfo['bitrate'])) $fileInfo['bitrate'] = '';
  73. if (!isset($fileInfo['playtime_seconds'])) $fileInfo['playtime_seconds'] = '';
  74. if (!isset($fileInfo['playtime_string'])) $fileInfo['playtime_string'] = '';
  75. if (!isset($fileInfo['md5_file'])) $fileInfo['md5_file'] = '';
  76. if (!isset($fileInfo['md5_data_source'])) $fileInfo['md5_data_source'] = '';
  77. if (!isset($fileInfo['md5_data'])) $fileInfo['md5_data'] = '';
  78. if (!isset($fileInfo['sha1_file'])) $fileInfo['sha1_file'] = '';
  79. if (!isset($fileInfo['sha1_data'])) $fileInfo['sha1_data'] = '';
  80. if (!isset($fileInfo['audio'])) $fileInfo['audio'] = array();
  81. if (!isset($fileInfo['audio']['bitrate'])) $fileInfo['audio']['bitrate'] = '';
  82. if (!isset($fileInfo['audio']['bitrate_mode'])) $fileInfo['audio']['bitrate_mode'] = '';
  83. if (!isset($fileInfo['audio']['sample_rate'])) $fileInfo['audio']['sample_rate'] = '';
  84. if (!isset($fileInfo['audio']['bits_per_sample'])) $fileInfo['audio']['bits_per_sample'] = '';
  85. if (!isset($fileInfo['audio']['channelmode'])) $fileInfo['audio']['channelmode'] = '';
  86. if (!isset($fileInfo['audio']['channels'])) $fileInfo['audio']['channels'] = '';
  87. if (!isset($fileInfo['audio']['codec'])) $fileInfo['audio']['codec'] = '';
  88. if (!isset($fileInfo['audio']['encoder'])) $fileInfo['audio']['encoder'] = '';
  89. if (!isset($fileInfo['audio']['compression_ratio'])) $fileInfo['audio']['compression_ratio'] = '';
  90. if (!isset($fileInfo['audio']['lossless'])) $fileInfo['audio']['lossless'] = '';
  91. if (!isset($fileInfo['video'])) $fileInfo['video'] = array();
  92. if (!isset($fileInfo['video']['bitrate'])) $fileInfo['video']['bitrate'] = '';
  93. if (!isset($fileInfo['video']['bitrate_mode'])) $fileInfo['video']['bitrate_mode'] = '';
  94. if (!isset($fileInfo['video']['bits_per_sample'])) $fileInfo['video']['bits_per_sample'] = '';
  95. if (!isset($fileInfo['video']['frame_rate'])) $fileInfo['video']['frame_rate'] = '';
  96. if (!isset($fileInfo['video']['pixel_aspect_ratio'])) $fileInfo['video']['pixel_aspect_ratio'] = '';
  97. if (!isset($fileInfo['video']['codec'])) $fileInfo['video']['codec'] = '';
  98. if (!isset($fileInfo['video']['encoder'])) $fileInfo['video']['encoder'] = '';
  99. if (!isset($fileInfo['video']['compression_ratio'])) $fileInfo['video']['compression_ratio'] = '';
  100. if (!isset($fileInfo['video']['lossless'])) $fileInfo['video']['lossless'] = '';
  101. if (!isset($fileInfo['video']['resolution_x'])) $fileInfo['video']['resolution_x'] = '';
  102. if (!isset($fileInfo['video']['resolution_y'])) $fileInfo['video']['resolution_y'] = '';
  103. if (!isset($fileInfo['swf'])) $fileInfo['swf'] = array();
  104. if (!isset($fileInfo['swf']['bgcolor'])) $fileInfo['swf']['bgcolor'] = '';
  105. if (!isset($fileInfo['comments_html'])) $fileInfo['comments_html'] = array();
  106. if (!pnModAPIFunc('MediaAttach', 'fileinfo', 'cacheinfo', array('fileid' => $file['fileid'], 'data' => $fileInfo))) {
  107. LogUtil::registerStatus('Notice: file information could not be cached.');
  108. }
  109. return $fileInfo;
  110. }