Syntax Syntax
Parameters Parameters
- $algorithm
-
(Required)
Return Return
(array|bool)
Source Source
File: wp-includes/ID3/getid3.php
} } // pictures can take up a lot of space, and we don't need multiple copies of them; let there be a single copy in [comments][picture], and not elsewhere if (!empty($this->info['tags'])) { $unset_keys = array('tags', 'tags_html'); foreach ($this->info['tags'] as $tagtype => $tagarray) { foreach ($tagarray as $tagname => $tagdata) { if ($tagname == 'picture') { foreach ($tagdata as $key => $tagarray) { $this->info['comments']['picture'][] = $tagarray; if (isset($tagarray['data']) && isset($tagarray['image_mime'])) { if (isset($this->info['tags'][$tagtype][$tagname][$key])) { unset($this->info['tags'][$tagtype][$tagname][$key]); } if (isset($this->info['tags_html'][$tagtype][$tagname][$key])) { unset($this->info['tags_html'][$tagtype][$tagname][$key]); } } } } } foreach ($unset_keys as $unset_key) { // remove possible empty keys from (e.g. [tags][id3v2][picture]) if (empty($this->info[$unset_key][$tagtype]['picture'])) { unset($this->info[$unset_key][$tagtype]['picture']); } if (empty($this->info[$unset_key][$tagtype])) { unset($this->info[$unset_key][$tagtype]); } if (empty($this->info[$unset_key])) { unset($this->info[$unset_key]); } } // remove duplicate copy of picture data from (e.g. [id3v2][comments][picture]) if (isset($this->info[$tagtype]['comments']['picture'])) { unset($this->info[$tagtype]['comments']['picture']); } if (empty($this->info[$tagtype]['comments'])) { unset($this->info[$tagtype]['comments']); } if (empty($this->info[$tagtype])) { unset($this->info[$tagtype]); } } } return true; } /** * Calls getid3_lib::CopyTagsToComments() but passes in the option_tags_html setting from this instance of getID3 * * @param array $ThisFileInfo * * @return bool */ public function CopyTagsToComments(&$ThisFileInfo) { return getid3_lib::CopyTagsToComments($ThisFileInfo, $this->option_tags_html); } /** * @param string $algorithm * * @return array|bool */ public function getHashdata($algorithm) { switch ($algorithm) { case 'md5': case 'sha1': break; default: return $this->error('bad algorithm "'.$algorithm.'" in getHashdata()'); } if (!empty($this->info['fileformat']) && !empty($this->info['dataformat']) && ($this->info['fileformat'] == 'ogg') && ($this->info['audio']['dataformat'] == 'vorbis')) { // We cannot get an identical md5_data value for Ogg files where the comments // span more than 1 Ogg page (compared to the same audio data with smaller // comments) using the normal getID3() method of MD5'ing the data between the // end of the comments and the end of the file (minus any trailing tags), // because the page sequence numbers of the pages that the audio data is on // do not match. Under normal circumstances, where comments are smaller than // the nominal 4-8kB page size, then this is not a problem, but if there are // very large comments, the only way around it is to strip off the comment // tags with vorbiscomment and MD5 that file. // This procedure must be applied to ALL Ogg files, not just the ones with // comments larger than 1 page, because the below method simply MD5's the // whole file with the comments stripped, not just the portion after the // comments block (which is the standard getID3() method. // The above-mentioned problem of comments spanning multiple pages and changing // page sequence numbers likely happens for OggSpeex and OggFLAC as well, but // currently vorbiscomment only works on OggVorbis files. // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.safe_modeDeprecatedRemoved if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { $this->warning('Failed making system call to vorbiscomment.exe - '.$algorithm.'_data is incorrect - error returned: PHP running in Safe Mode (backtick operator not available)'); $this->info[$algorithm.'_data'] = false; } else { // Prevent user from aborting script $old_abort = ignore_user_abort(true); // Create empty file $empty = tempnam(GETID3_TEMP_DIR, 'getID3'); touch($empty); // Use vorbiscomment to make temp file without comments $temp = tempnam(GETID3_TEMP_DIR, 'getID3'); $file = $this->info['filenamepath']; if (GETID3_OS_ISWINDOWS) { if (file_exists(GETID3_HELPERAPPSDIR.'vorbiscomment.exe')) { $commandline = '"'.GETID3_HELPERAPPSDIR.'vorbiscomment.exe" -w -c "'.$empty.'" "'.$file.'" "'.$temp.'"';