diff options
Diffstat (limited to 'apps/media/getID3/demos/demo.browse.php')
-rw-r--r-- | apps/media/getID3/demos/demo.browse.php | 679 |
1 files changed, 679 insertions, 0 deletions
diff --git a/apps/media/getID3/demos/demo.browse.php b/apps/media/getID3/demos/demo.browse.php new file mode 100644 index 00000000000..5d027b63b2f --- /dev/null +++ b/apps/media/getID3/demos/demo.browse.php @@ -0,0 +1,679 @@ +<?php +///////////////////////////////////////////////////////////////// +/// getID3() by James Heinrich <info@getid3.org> // +// available at http://getid3.sourceforge.net // +// or http://www.getid3.org // +///////////////////////////////////////////////////////////////// +// // +// /demo/demo.browse.php - part of getID3() // +// Sample script for browsing/scanning files and displaying // +// information returned by getID3() // +// See readme.txt for more details // +// /// +///////////////////////////////////////////////////////////////// + + +//die('Due to a security issue, this demo has been disabled. It can be enabled by removing line '.__LINE__.' in demos/'.basename(__FILE__)); + + +///////////////////////////////////////////////////////////////// +// set predefined variables as if magic_quotes_gpc was off, +// whether the server's got it or not: +UnifyMagicQuotes(false); +///////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////// +// showfile is used to display embedded images from table_var_dump() +// md5 of requested file is required to prevent abuse where any +// random file on the server could be viewed +if (@$_REQUEST['showfile']) { + if (is_readable($_REQUEST['showfile'])) { + if (md5_file($_REQUEST['showfile']) == @$_REQUEST['md5']) { + readfile($_REQUEST['showfile']); + exit; + } + } + die('Cannot display "'.$_REQUEST['showfile'].'"'); +} +///////////////////////////////////////////////////////////////// + + +if (!function_exists('getmicrotime')) { + function getmicrotime() { + list($usec, $sec) = explode(' ', microtime()); + return ((float) $usec + (float) $sec); + } +} + +/////////////////////////////////////////////////////////////////////////////// + + +$writescriptfilename = 'demo.write.php'; + +require_once('../getid3/getid3.php'); + +// Needed for windows only +define('GETID3_HELPERAPPSDIR', 'C:/helperapps/'); + +// Initialize getID3 engine +$getID3 = new getID3; +$getID3->setOption(array('encoding' => 'UTF-8')); + +$getID3checkColor_Head = 'CCCCDD'; +$getID3checkColor_DirectoryLight = 'FFCCCC'; +$getID3checkColor_DirectoryDark = 'EEBBBB'; +$getID3checkColor_FileLight = 'EEEEEE'; +$getID3checkColor_FileDark = 'DDDDDD'; +$getID3checkColor_UnknownLight = 'CCCCFF'; +$getID3checkColor_UnknownDark = 'BBBBDD'; + + +/////////////////////////////////////////////////////////////////////////////// + + +header('Content-Type: text/html; charset=UTF-8'); +ob_start(); +echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; +echo '<html><head>'; +echo '<title>getID3() - /demo/demo.browse.php (sample script)</title>'; +echo '<link rel="stylesheet" href="getid3.css" type="text/css">'; +echo '</head><body>'; + +if (isset($_REQUEST['deletefile'])) { + if (file_exists($_REQUEST['deletefile'])) { + if (unlink($_REQUEST['deletefile'])) { + $deletefilemessage = 'Successfully deleted '.addslashes($_REQUEST['deletefile']); + } else { + $deletefilemessage = 'FAILED to delete '.addslashes($_REQUEST['deletefile']).' - error deleting file'; + } + } else { + $deletefilemessage = 'FAILED to delete '.addslashes($_REQUEST['deletefile']).' - file does not exist'; + } + if (isset($_REQUEST['noalert'])) { + echo '<b><font color="'.(($deletefilemessage{0} == 'F') ? '#FF0000' : '#008000').'">'.$deletefilemessage.'</font></b><hr>'; + } else { + echo '<script type="text/javascript">alert("'.$deletefilemessage.'");</script>'; + } +} + + +if (isset($_REQUEST['filename'])) { + + if (!file_exists($_REQUEST['filename']) || !is_file($_REQUEST['filename'])) { + die(getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $_REQUEST['filename'].' does not exist')); + } + $starttime = getmicrotime(); + + //$getID3->setOption(array( + // 'option_md5_data' => $AutoGetHashes, + // 'option_sha1_data' => $AutoGetHashes, + //)); + $ThisFileInfo = $getID3->analyze($_REQUEST['filename']); + $AutoGetHashes = (bool) ((@$ThisFileInfo['filesize'] > 0) && ($ThisFileInfo['filesize'] < (50 * 1048576))); // auto-get md5_data, md5_file, sha1_data, sha1_file if filesize < 50MB, and NOT zero (which may indicate a file>2GB) + if ($AutoGetHashes) { + $ThisFileInfo['md5_file'] = getid3_lib::md5_file($_REQUEST['filename']); + $ThisFileInfo['sha1_file'] = getid3_lib::sha1_file($_REQUEST['filename']); + } + + + getid3_lib::CopyTagsToComments($ThisFileInfo); + + $listdirectory = dirname(getid3_lib::SafeStripSlashes($_REQUEST['filename'])); + $listdirectory = realpath($listdirectory); // get rid of /../../ references + + if (GETID3_OS_ISWINDOWS) { + // this mostly just gives a consistant look to Windows and *nix filesystems + // (windows uses \ as directory seperator, *nix uses /) + $listdirectory = str_replace('\\', '/', $listdirectory.'/'); + } + + if (strstr($_REQUEST['filename'], 'http://') || strstr($_REQUEST['filename'], 'ftp://')) { + echo '<i>Cannot browse remote filesystems</i><br>'; + } else { + echo 'Browse: <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'">'.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $listdirectory).'</a><br>'; + } + + echo table_var_dump($ThisFileInfo); + $endtime = getmicrotime(); + echo 'File parsed in '.number_format($endtime - $starttime, 3).' seconds.<br>'; + +} else { + + $listdirectory = (isset($_REQUEST['listdirectory']) ? getid3_lib::SafeStripSlashes($_REQUEST['listdirectory']) : '.'); + $listdirectory = realpath($listdirectory); // get rid of /../../ references + $currentfulldir = $listdirectory.'/'; + + if (GETID3_OS_ISWINDOWS) { + // this mostly just gives a consistant look to Windows and *nix filesystems + // (windows uses \ as directory seperator, *nix uses /) + $currentfulldir = str_replace('\\', '/', $listdirectory.'/'); + } + + if ($handle = @opendir($listdirectory)) { + + echo str_repeat(' ', 300); // IE buffers the first 300 or so chars, making this progressive display useless - fill the buffer with spaces + echo 'Processing'; + + $starttime = getmicrotime(); + + $TotalScannedUnknownFiles = 0; + $TotalScannedKnownFiles = 0; + $TotalScannedPlaytimeFiles = 0; + $TotalScannedBitrateFiles = 0; + $TotalScannedFilesize = 0; + $TotalScannedPlaytime = 0; + $TotalScannedBitrate = 0; + $FilesWithWarnings = 0; + $FilesWithErrors = 0; + + while ($file = readdir($handle)) { + $currentfilename = $listdirectory.'/'.$file; + set_time_limit(30); // allocate another 30 seconds to process this file - should go much quicker than this unless intense processing (like bitrate histogram analysis) is enabled + echo ' .'; // progress indicator dot + flush(); // make sure the dot is shown, otherwise it's useless + + switch ($file) { + case '..': + $ParentDir = realpath($file.'/..').'/'; + if (GETID3_OS_ISWINDOWS) { + $ParentDir = str_replace('\\', '/', $ParentDir); + } + $DirectoryContents[$currentfulldir]['dir'][$file]['filename'] = $ParentDir; + continue 2; + break; + + case '.': + // ignore + continue 2; + break; + } + + // symbolic-link-resolution enhancements by davidbullock״ech-center*com + $TargetObject = realpath($currentfilename); // Find actual file path, resolve if it's a symbolic link + $TargetObjectType = filetype($TargetObject); // Check file type without examining extension + + if ($TargetObjectType == 'dir') { + + $DirectoryContents[$currentfulldir]['dir'][$file]['filename'] = $file; + + } elseif ($TargetObjectType == 'file') { + + $getID3->setOption(array('option_md5_data' => isset($_REQUEST['ShowMD5']))); + $fileinformation = $getID3->analyze($currentfilename); + + getid3_lib::CopyTagsToComments($fileinformation); + + $TotalScannedFilesize += @$fileinformation['filesize']; + + if (isset($_REQUEST['ShowMD5'])) { + $fileinformation['md5_file'] = md5($currentfilename); + $fileinformation['md5_file'] = getid3_lib::md5_file($currentfilename); + } + + if (!empty($fileinformation['fileformat'])) { + $DirectoryContents[$currentfulldir]['known'][$file] = $fileinformation; + $TotalScannedPlaytime += @$fileinformation['playtime_seconds']; + $TotalScannedBitrate += @$fileinformation['bitrate']; + $TotalScannedKnownFiles++; + } else { + $DirectoryContents[$currentfulldir]['other'][$file] = $fileinformation; + $DirectoryContents[$currentfulldir]['other'][$file]['playtime_string'] = '-'; + $TotalScannedUnknownFiles++; + } + if (isset($fileinformation['playtime_seconds']) && ($fileinformation['playtime_seconds'] > 0)) { + $TotalScannedPlaytimeFiles++; + } + if (isset($fileinformation['bitrate']) && ($fileinformation['bitrate'] > 0)) { + $TotalScannedBitrateFiles++; + } + } + } + $endtime = getmicrotime(); + closedir($handle); + echo 'done<br>'; + echo 'Directory scanned in '.number_format($endtime - $starttime, 2).' seconds.<br>'; + flush(); + + $columnsintable = 14; + echo '<table class="table" cellspacing="0" cellpadding="3">'; + + echo '<tr bgcolor="#'.$getID3checkColor_Head.'"><th colspan="'.$columnsintable.'">Files in '.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $currentfulldir).'</th></tr>'; + $rowcounter = 0; + foreach ($DirectoryContents as $dirname => $val) { + if (isset($DirectoryContents[$dirname]['dir']) && is_array($DirectoryContents[$dirname]['dir'])) { + uksort($DirectoryContents[$dirname]['dir'], 'MoreNaturalSort'); + foreach ($DirectoryContents[$dirname]['dir'] as $filename => $fileinfo) { + echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_DirectoryLight : $getID3checkColor_DirectoryDark).'">'; + if ($filename == '..') { + echo '<td colspan="'.$columnsintable.'">'; + echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">'; + echo 'Parent directory: '; + echo '<input type="text" name="listdirectory" size="50" style="background-color: '.$getID3checkColor_DirectoryDark.';" value="'; + if (GETID3_OS_ISWINDOWS) { + echo htmlentities(str_replace('\\', '/', realpath($dirname.$filename)), ENT_QUOTES); + } else { + echo htmlentities(realpath($dirname.$filename), ENT_QUOTES); + } + echo '"> <input type="submit" value="Go">'; + echo '</form></td>'; + } else { + echo '<td colspan="'.$columnsintable.'"><a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($dirname.$filename).'"><b>'.FixTextFields($filename).'</b></a></td>'; + } + echo '</tr>'; + } + } + + echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; + echo '<th>Filename</th>'; + echo '<th>File Size</th>'; + echo '<th>Format</th>'; + echo '<th>Playtime</th>'; + echo '<th>Bitrate</th>'; + echo '<th>Artist</th>'; + echo '<th>Title</th>'; + if (isset($_REQUEST['ShowMD5'])) { + echo '<th>MD5 File (File) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; + echo '<th>MD5 Data (File) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; + echo '<th>MD5 Data (Source) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; + } else { + echo '<th colspan="3">MD5 Data (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'&ShowMD5=1">enable</a>)</th>'; + } + echo '<th>Tags</th>'; + echo '<th>Errors & Warnings</th>'; + echo '<th>Edit</th>'; + echo '<th>Delete</th>'; + echo '</tr>'; + + if (isset($DirectoryContents[$dirname]['known']) && is_array($DirectoryContents[$dirname]['known'])) { + uksort($DirectoryContents[$dirname]['known'], 'MoreNaturalSort'); + foreach ($DirectoryContents[$dirname]['known'] as $filename => $fileinfo) { + echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_FileDark : $getID3checkColor_FileLight).'">'; + echo '<td><a href="'.$_SERVER['PHP_SELF'].'?filename='.urlencode($dirname.$filename).'" title="View detailed analysis">'.FixTextFields(getid3_lib::SafeStripSlashes($filename)).'</a></td>'; + echo '<td align="right"> '.number_format($fileinfo['filesize']).'</td>'; + echo '<td align="right"> '.NiceDisplayFiletypeFormat($fileinfo).'</td>'; + echo '<td align="right"> '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').'</td>'; + echo '<td align="right"> '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000, 0, ((@$fileinfo['audio']['bitrate_mode'] == 'vbr') ? true : false)) : '-').'</td>'; + echo '<td align="left"> '.(isset($fileinfo['comments_html']['artist']) ? implode('<br>', $fileinfo['comments_html']['artist']) : '').'</td>'; + echo '<td align="left"> '.(isset($fileinfo['comments_html']['title']) ? implode('<br>', $fileinfo['comments_html']['title']) : '').'</td>'; + if (isset($_REQUEST['ShowMD5'])) { + echo '<td align="left"><tt>'.(isset($fileinfo['md5_file']) ? $fileinfo['md5_file'] : ' ').'</tt></td>'; + echo '<td align="left"><tt>'.(isset($fileinfo['md5_data']) ? $fileinfo['md5_data'] : ' ').'</tt></td>'; + echo '<td align="left"><tt>'.(isset($fileinfo['md5_data_source']) ? $fileinfo['md5_data_source'] : ' ').'</tt></td>'; + } else { + echo '<td align="center" colspan="3">-</td>'; + } + echo '<td align="left"> '.@implode(', ', array_keys($fileinfo['tags'])).'</td>'; + + echo '<td align="left"> '; + if (!empty($fileinfo['warning'])) { + $FilesWithWarnings++; + echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['warning'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['warning'])).'">warning</a><br>'; + } + if (!empty($fileinfo['error'])) { + $FilesWithErrors++; + echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['error'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['error'])).'">error</a><br>'; + } + echo '</td>'; + + echo '<td align="left"> '; + switch (@$fileinfo['fileformat']) { + case 'mp3': + case 'mp2': + case 'mp1': + case 'flac': + case 'mpc': + case 'real': + echo '<a href="'.$writescriptfilename.'?Filename='.urlencode($dirname.$filename).'" title="Edit tags">edit tags</a>'; + break; + case 'ogg': + switch (@$fileinfo['audio']['dataformat']) { + case 'vorbis': + echo '<a href="'.$writescriptfilename.'?Filename='.urlencode($dirname.$filename).'" title="Edit tags">edit tags</a>'; + break; + } + break; + default: + break; + } + echo '</td>'; + echo '<td align="left"> <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'&deletefile='.urlencode($dirname.$filename).'" onClick="return confirm(\'Are you sure you want to delete '.addslashes(htmlentities($dirname.$filename)).'? \n(this action cannot be un-done)\');" title="Permanently delete '."\n".FixTextFields($filename)."\n".' from'."\n".' '.FixTextFields($dirname).'">delete</a></td>'; + echo '</tr>'; + } + } + + if (isset($DirectoryContents[$dirname]['other']) && is_array($DirectoryContents[$dirname]['other'])) { + uksort($DirectoryContents[$dirname]['other'], 'MoreNaturalSort'); + foreach ($DirectoryContents[$dirname]['other'] as $filename => $fileinfo) { + echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_UnknownDark : $getID3checkColor_UnknownLight).'">'; + echo '<td><a href="'.$_SERVER['PHP_SELF'].'?filename='.urlencode($dirname.$filename).'"><i>'.$filename.'</i></a></td>'; + echo '<td align="right"> '.(isset($fileinfo['filesize']) ? number_format($fileinfo['filesize']) : '-').'</td>'; + echo '<td align="right"> '.NiceDisplayFiletypeFormat($fileinfo).'</td>'; + echo '<td align="right"> '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').'</td>'; + echo '<td align="right"> '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000) : '-').'</td>'; + echo '<td align="left"> </td>'; // Artist + echo '<td align="left"> </td>'; // Title + echo '<td align="left" colspan="3"> </td>'; // MD5_data + echo '<td align="left"> </td>'; // Tags + + //echo '<td align="left"> </td>'; // Warning/Error + echo '<td align="left"> '; + if (!empty($fileinfo['warning'])) { + $FilesWithWarnings++; + echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['warning'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['warning'])).'">warning</a><br>'; + } + if (!empty($fileinfo['error'])) { + if ($fileinfo['error'][0] != 'unable to determine file format') { + $FilesWithErrors++; + echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['error'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['error'])).'">error</a><br>'; + } + } + echo '</td>'; + + echo '<td align="left"> </td>'; // Edit + echo '<td align="left"> <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'&deletefile='.urlencode($dirname.$filename).'" onClick="return confirm(\'Are you sure you want to delete '.addslashes($dirname.$filename).'? \n(this action cannot be un-done)\');" title="Permanently delete '.addslashes($dirname.$filename).'">delete</a></td>'; + echo '</tr>'; + } + } + + echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; + echo '<td><b>Average:</b></td>'; + echo '<td align="right">'.number_format($TotalScannedFilesize / max($TotalScannedKnownFiles, 1)).'</td>'; + echo '<td> </td>'; + echo '<td align="right">'.getid3_lib::PlaytimeString($TotalScannedPlaytime / max($TotalScannedPlaytimeFiles, 1)).'</td>'; + echo '<td align="right">'.BitrateText(round(($TotalScannedBitrate / 1000) / max($TotalScannedBitrateFiles, 1))).'</td>'; + echo '<td rowspan="2" colspan="'.($columnsintable - 5).'"><table class="table" border="0" cellspacing="0" cellpadding="2"><tr><th align="right">Identified Files:</th><td align="right">'.number_format($TotalScannedKnownFiles).'</td><td> </td><th align="right">Errors:</th><td align="right">'.number_format($FilesWithErrors).'</td></tr><tr><th align="right">Unknown Files:</th><td align="right">'.number_format($TotalScannedUnknownFiles).'</td><td> </td><th align="right">Warnings:</th><td align="right">'.number_format($FilesWithWarnings).'</td></tr></table>'; + echo '</tr>'; + echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; + echo '<td><b>Total:</b></td>'; + echo '<td align="right">'.number_format($TotalScannedFilesize).'</td>'; + echo '<td> </td>'; + echo '<td align="right">'.getid3_lib::PlaytimeString($TotalScannedPlaytime).'</td>'; + echo '<td> </td>'; + echo '</tr>'; + } + echo '</table>'; + } else { + echo '<b>ERROR: Could not open directory: <u>'.$currentfulldir.'</u></b><br>'; + } +} +echo PoweredBygetID3(); +echo 'Running on PHP v'.phpversion(); +echo '</body></html>'; +ob_end_flush(); + + +///////////////////////////////////////////////////////////////// + + +function RemoveAccents($string) { + // Revised version by markstewardרotmail*com + // Again revised by James Heinrich (19-June-2006) + return strtr( + strtr( + $string, + "\x8A\x8E\x9A\x9E\x9F\xC0\xC1\xC2\xC3\xC4\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xE0\xE1\xE2\xE3\xE4\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFF", + 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy' + ), + array( + "\xDE" => 'TH', + "\xFE" => 'th', + "\xD0" => 'DH', + "\xF0" => 'dh', + "\xDF" => 'ss', + "\x8C" => 'OE', + "\x9C" => 'oe', + "\xC6" => 'AE', + "\xE6" => 'ae', + "\xB5" => 'u' + ) + ); +} + + +function BitrateColor($bitrate, $BitrateMaxScale=768) { + // $BitrateMaxScale is bitrate of maximum-quality color (bright green) + // below this is gradient, above is solid green + + $bitrate *= (256 / $BitrateMaxScale); // scale from 1-[768]kbps to 1-256 + $bitrate = round(min(max($bitrate, 1), 256)); + $bitrate--; // scale from 1-256kbps to 0-255kbps + + $Rcomponent = max(255 - ($bitrate * 2), 0); + $Gcomponent = max(($bitrate * 2) - 255, 0); + if ($bitrate > 127) { + $Bcomponent = max((255 - $bitrate) * 2, 0); + } else { + $Bcomponent = max($bitrate * 2, 0); + } + return str_pad(dechex($Rcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Gcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Bcomponent), 2, '0', STR_PAD_LEFT); +} + +function BitrateText($bitrate, $decimals=0, $vbr=false) { + return '<SPAN STYLE="color: #'.BitrateColor($bitrate).($vbr ? '; font-weight: bold;' : '').'">'.number_format($bitrate, $decimals).' kbps</SPAN>'; +} + +function FixTextFields($text) { + $text = getid3_lib::SafeStripSlashes($text); + $text = htmlentities($text, ENT_QUOTES); + return $text; +} + + +function string_var_dump($variable) { + ob_start(); + var_dump($variable); + $dumpedvariable = ob_get_contents(); + ob_end_clean(); + return $dumpedvariable; +} + + +function table_var_dump($variable, $wrap_in_td=false) { + $returnstring = ''; + switch (gettype($variable)) { + case 'array': + $returnstring .= ($wrap_in_td ? '<td>' : ''); + $returnstring .= '<table class="dump" cellspacing="0" cellpadding="2">'; + foreach ($variable as $key => $value) { + $returnstring .= '<tr><td valign="top"><b>'.str_replace("\x00", ' ', $key).'</b></td>'; + $returnstring .= '<td valign="top">'.gettype($value); + if (is_array($value)) { + $returnstring .= ' ('.count($value).')'; + } elseif (is_string($value)) { + $returnstring .= ' ('.strlen($value).')'; + } + if (($key == 'data') && isset($variable['image_mime']) && isset($variable['dataoffset'])) { + $imageinfo = array(); + $imagechunkcheck = getid3_lib::GetDataImageSize($value, $imageinfo); + $DumpedImageSRC = (!empty($_REQUEST['filename']) ? $_REQUEST['filename'] : '.getid3').'.'.$variable['dataoffset'].'.'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]); + if ($tempimagefile = @fopen($DumpedImageSRC, 'wb')) { + fwrite($tempimagefile, $value); + fclose($tempimagefile); + } + $returnstring .= '</td><td><img src="'.$_SERVER['PHP_SELF'].'?showfile='.urlencode($DumpedImageSRC).'&md5='.md5_file($DumpedImageSRC).'" width="'.$imagechunkcheck[0].'" height="'.$imagechunkcheck[1].'"></td></tr>'; + } else { + $returnstring .= '</td>'.table_var_dump($value, true).'</tr>'; + } + } + $returnstring .= '</table>'; + $returnstring .= ($wrap_in_td ? '</td>' : ''); + break; + + case 'boolean': + $returnstring .= ($wrap_in_td ? '<td class="dump_boolean">' : '').($variable ? 'TRUE' : 'FALSE').($wrap_in_td ? '</td>' : ''); + break; + + case 'integer': + $returnstring .= ($wrap_in_td ? '<td class="dump_integer">' : '').$variable.($wrap_in_td ? '</td>' : ''); + break; + + case 'double': + case 'float': + $returnstring .= ($wrap_in_td ? '<td class="dump_double">' : '').$variable.($wrap_in_td ? '</td>' : ''); + break; + + case 'object': + case 'null': + $returnstring .= ($wrap_in_td ? '<td>' : '').string_var_dump($variable).($wrap_in_td ? '</td>' : ''); + break; + + case 'string': + $variable = str_replace("\x00", ' ', $variable); + $varlen = strlen($variable); + for ($i = 0; $i < $varlen; $i++) { + if (ereg('['."\x0A\x0D".' -;0-9A-Za-z]', $variable{$i})) { + $returnstring .= $variable{$i}; + } else { + $returnstring .= '&#'.str_pad(ord($variable{$i}), 3, '0', STR_PAD_LEFT).';'; + } + } + $returnstring = ($wrap_in_td ? '<td class="dump_string">' : '').nl2br($returnstring).($wrap_in_td ? '</td>' : ''); + break; + + default: + $imageinfo = array(); + $imagechunkcheck = getid3_lib::GetDataImageSize($variable, $imageinfo); + if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) { + $returnstring .= ($wrap_in_td ? '<td>' : ''); + $returnstring .= '<table class="dump" cellspacing="0" cellpadding="2">'; + $returnstring .= '<tr><td><b>type</b></td><td>'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]).'</td></tr>'; + $returnstring .= '<tr><td><b>width</b></td><td>'.number_format($imagechunkcheck[0]).' px</td></tr>'; + $returnstring .= '<tr><td><b>height</b></td><td>'.number_format($imagechunkcheck[1]).' px</td></tr>'; + $returnstring .= '<tr><td><b>size</b></td><td>'.number_format(strlen($variable)).' bytes</td></tr></table>'; + $returnstring .= ($wrap_in_td ? '</td>' : ''); + } else { + $returnstring .= ($wrap_in_td ? '<td>' : '').nl2br(htmlspecialchars(str_replace("\x00", ' ', $variable))).($wrap_in_td ? '</td>' : ''); + } + break; + } + return $returnstring; +} + + +function NiceDisplayFiletypeFormat(&$fileinfo) { + + if (empty($fileinfo['fileformat'])) { + return '-'; + } + + $output = $fileinfo['fileformat']; + if (empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { + return $output; // 'gif' + } + if (empty($fileinfo['video']['dataformat']) && !empty($fileinfo['audio']['dataformat'])) { + if ($fileinfo['fileformat'] == $fileinfo['audio']['dataformat']) { + return $output; // 'mp3' + } + $output .= '.'.$fileinfo['audio']['dataformat']; // 'ogg.flac' + return $output; + } + if (!empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { + if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { + return $output; // 'mpeg' + } + $output .= '.'.$fileinfo['video']['dataformat']; // 'riff.avi' + return $output; + } + if ($fileinfo['video']['dataformat'] == $fileinfo['audio']['dataformat']) { + if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { + return $output; // 'real' + } + $output .= '.'.$fileinfo['video']['dataformat']; // any examples? + return $output; + } + $output .= '.'.$fileinfo['video']['dataformat']; + $output .= '.'.$fileinfo['audio']['dataformat']; // asf.wmv.wma + return $output; + +} + +function MoreNaturalSort($ar1, $ar2) { + if ($ar1 === $ar2) { + return 0; + } + $len1 = strlen($ar1); + $len2 = strlen($ar2); + $shortest = min($len1, $len2); + if (substr($ar1, 0, $shortest) === substr($ar2, 0, $shortest)) { + // the shorter argument is the beginning of the longer one, like "str" and "string" + if ($len1 < $len2) { + return -1; + } elseif ($len1 > $len2) { + return 1; + } + return 0; + } + $ar1 = RemoveAccents(strtolower(trim($ar1))); + $ar2 = RemoveAccents(strtolower(trim($ar2))); + $translatearray = array('\''=>'', '"'=>'', '_'=>' ', '('=>'', ')'=>'', '-'=>' ', ' '=>' ', '.'=>'', ','=>''); + foreach ($translatearray as $key => $val) { + $ar1 = str_replace($key, $val, $ar1); + $ar2 = str_replace($key, $val, $ar2); + } + + if ($ar1 < $ar2) { + return -1; + } elseif ($ar1 > $ar2) { + return 1; + } + return 0; +} + +function PoweredBygetID3($string='<br><HR NOSHADE><DIV STYLE="font-size: 8pt; font-face: sans-serif;">Powered by <a href="http://getid3.sourceforge.net" TARGET="_blank"><b>getID3() v<!--GETID3VER--></b><br>http://getid3.sourceforge.net</a></DIV>') { + return str_replace('<!--GETID3VER-->', GETID3_VERSION, $string); +} + + +///////////////////////////////////////////////////////////////// +// Unify the contents of GPC, +// whether magic_quotes_gpc is on or off + +function AddStripSlashesArray($input, $addslashes=false) { + if (is_array($input)) { + + $output = $input; + foreach ($input as $key => $value) { + $output[$key] = AddStripSlashesArray($input[$key]); + } + return $output; + + } elseif ($addslashes) { + return addslashes($input); + } + return stripslashes($input); +} + +function UnifyMagicQuotes($turnon=false) { + global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS; + + if (get_magic_quotes_gpc() && !$turnon) { + + // magic_quotes_gpc is on and we want it off! + $_GET = AddStripSlashesArray($_GET, true); + $_POST = AddStripSlashesArray($_POST, true); + $_COOKIE = AddStripSlashesArray($_COOKIE, true); + + unset($_REQUEST); + $_REQUEST = array_merge_recursive($_GET, $_POST, $_COOKIE); + + } elseif (!get_magic_quotes_gpc() && $turnon) { + + // magic_quotes_gpc is off and we want it on (why??) + $_GET = AddStripSlashesArray($_GET, true); + $_POST = AddStripSlashesArray($_POST, true); + $_COOKIE = AddStripSlashesArray($_COOKIE, true); + + unset($_REQUEST); + $_REQUEST = array_merge_recursive($_GET, $_POST, $_COOKIE); + + } + $HTTP_GET_VARS = $_GET; + $HTTP_POST_VARS = $_POST; + $HTTP_COOKIE_VARS = $_COOKIE; + + return true; +} +///////////////////////////////////////////////////////////////// + +?>
\ No newline at end of file |