Ejemplo n.º 1
0
 public static function table_var_dump(&$variable, $wrap_in_td = false, $show_types = false, $level = 0)
 {
     $returnstring = '';
     if (is_array($variable)) {
         $returnstring .= $wrap_in_td ? '' : '';
         $returnstring .= '<ul class="dump_array dump_level_' . sprintf('%02u', $level) . '">';
         foreach ($variable as $key => &$value) {
             // Assign an extra class representing the (rounded) width in number of characters 'or more':
             // You can use this as a width approximation in pixels to style (very) wide items. It saves
             // a long run through all the nodes in JS, just to measure the actual width and correct any
             // overlap occurring in there.
             $keylen = strlen($key);
             $threshold = 10;
             $overlarge_key_class = '';
             while ($keylen >= $threshold) {
                 $overlarge_key_class .= ' overlarger' . sprintf('%04d', $threshold);
                 $threshold *= 1.6;
             }
             $returnstring .= '<li><span class="key' . $overlarge_key_class . '">' . $key . '</span>';
             $tstring = '';
             if ($show_types) {
                 $tstring = '<span class="type">' . gettype($value);
                 if (is_array($value)) {
                     $tstring .= '&nbsp;(' . count($value) . ')';
                 } elseif (is_string($value)) {
                     $tstring .= '&nbsp;(' . strlen($value) . ')';
                 }
                 $tstring = '</span>';
             }
             switch ((string) $key) {
                 case 'filesize':
                     $returnstring .= '<span class="dump_seconds">' . $tstring . self::fmt_bytecount($value) . ($value >= 1024 ? ' (' . $value . ' bytes)' : '') . '</span></li>';
                     continue 2;
                 case 'playtime seconds':
                     $returnstring .= '<span class="dump_seconds">' . $tstring . number_format($value, 1) . ' s</span></li>';
                     continue 2;
                 case 'compression ratio':
                     $returnstring .= '<span class="dump_compression_ratio">' . $tstring . number_format($value * 100, 1) . '%</span></li>';
                     continue 2;
                 case 'bitrate':
                 case 'bit rate':
                 case 'avg bit rate':
                 case 'max bit rate':
                 case 'max bitrate':
                 case 'sample rate':
                 case 'sample rate2':
                 case 'samples per sec':
                 case 'avg bytes per sec':
                     $returnstring .= '<span class="dump_rate">' . $tstring . self::fmt_bytecount($value) . '/s</span></li>';
                     continue 2;
                 case 'bytes per minute':
                     $returnstring .= '<span class="dump_rate">' . $tstring . self::fmt_bytecount($value) . '/min</span></li>';
                     continue 2;
             }
             $returnstring .= FileManagerUtility::table_var_dump($value, true, $show_types, $level + 1) . '</li>';
         }
         $returnstring .= '</ul>';
         $returnstring .= $wrap_in_td ? '' : '';
     } else {
         if (is_bool($variable)) {
             $returnstring .= ($wrap_in_td ? '<span class="dump_boolean">' : '') . ($variable ? 'TRUE' : 'FALSE') . ($wrap_in_td ? '</span>' : '');
         } else {
             if (is_int($variable)) {
                 $returnstring .= ($wrap_in_td ? '<span class="dump_integer">' : '') . $variable . ($wrap_in_td ? '</span>' : '');
             } else {
                 if (is_float($variable)) {
                     $returnstring .= ($wrap_in_td ? '<span class="dump_double">' : '') . $variable . ($wrap_in_td ? '</span>' : '');
                 } else {
                     if (is_object($variable) && isset($variable->id3_procsupport_obj)) {
                         if (isset($variable->metadata) && isset($variable->imagedata)) {
                             // an embedded image (MP3 et al)
                             $returnstring .= $wrap_in_td ? '<div class="dump_embedded_image">' : '';
                             $returnstring .= '<table class="dump_image">';
                             $returnstring .= '<tr><td><b>type</b></td><td>' . getid3_lib::ImageTypesLookup($variable->metadata[2]) . '</td></tr>';
                             $returnstring .= '<tr><td><b>width</b></td><td>' . number_format($variable->metadata[0]) . ' px</td></tr>';
                             $returnstring .= '<tr><td><b>height</b></td><td>' . number_format($variable->metadata[1]) . ' px</td></tr>';
                             $returnstring .= '<tr><td><b>size</b></td><td>' . number_format(strlen($variable->imagedata)) . ' bytes</td></tr></table>';
                             $returnstring .= '<img src="data:' . $variable->metadata['mime'] . ';base64,' . base64_encode($variable->imagedata) . '" width="' . $variable->metadata[0] . '" height="' . $variable->metadata[1] . '">';
                             $returnstring .= $wrap_in_td ? '</div>' : '';
                         } else {
                             if (isset($variable->binarydata_mode)) {
                                 $returnstring .= $wrap_in_td ? '<span class="dump_binary_data">' : '';
                                 if ($variable->binarydata_mode == 'procd') {
                                     $returnstring .= '<i>' . self::table_var_dump($variable->binarydata, false, false, $level + 1) . '</i>';
                                 } else {
                                     $temp = unpack('H*', $variable->binarydata);
                                     $temp = str_split($temp[1], 8);
                                     $returnstring .= '<i>' . self::table_var_dump(implode(' ', $temp), false, false, $level + 1) . '</i>';
                                 }
                                 $returnstring .= $wrap_in_td ? '</span>' : '';
                             } else {
                                 $returnstring .= ($wrap_in_td ? '<span class="dump_object">' : '') . print_r($variable, true) . ($wrap_in_td ? '</span>' : '');
                             }
                         }
                     } else {
                         if (is_object($variable)) {
                             $returnstring .= ($wrap_in_td ? '<span class="dump_object">' : '') . print_r($variable, true) . ($wrap_in_td ? '</span>' : '');
                         } else {
                             if (is_null($variable)) {
                                 $returnstring .= ($wrap_in_td ? '<span class="dump_null">' : '') . '(null)' . ($wrap_in_td ? '</span>' : '');
                             } else {
                                 if (is_string($variable)) {
                                     $variable = strtr($variable, "", ' ');
                                     $varlen = strlen($variable);
                                     for ($i = 0; $i < $varlen; $i++) {
                                         $returnstring .= htmlentities($variable[$i], ENT_QUOTES, 'UTF-8');
                                     }
                                     $returnstring = ($wrap_in_td ? '<span class="dump_string">' : '') . nl2br($returnstring) . ($wrap_in_td ? '</span>' : '');
                                 } else {
                                     $returnstring .= ($wrap_in_td ? '<span class="dump_other">' : '') . nl2br(htmlspecialchars(strtr($variable, "", ' '))) . ($wrap_in_td ? '</span>' : '');
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $returnstring;
 }