Beispiel #1
0
 /**
  *
  * @param type $directorydata
  * @return string
  */
 public function ParseDirectoryRecord($directorydata)
 {
     $info =& $this->getid3->info;
     if (isset($info['iso']['supplementary_volume_descriptor'])) {
         $TextEncoding = 'UTF-16BE';
         // Big-Endian Unicode
     } else {
         $TextEncoding = 'ISO-8859-1';
         // Latin-1
     }
     fseek($this->getid3->fp, $directorydata['location_bytes'], SEEK_SET);
     $DirectoryRecordData = fread($this->getid3->fp, 1);
     while (ord($DirectoryRecordData[0]) > 33) {
         $DirectoryRecordData .= fread($this->getid3->fp, ord($DirectoryRecordData[0]) - 1);
         $ThisDirectoryRecord['raw']['length'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 0, 1));
         $ThisDirectoryRecord['raw']['extended_attribute_length'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 1, 1));
         $ThisDirectoryRecord['raw']['offset_logical'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 2, 4));
         $ThisDirectoryRecord['raw']['filesize'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 10, 4));
         $ThisDirectoryRecord['raw']['recording_date_time'] = substr($DirectoryRecordData, 18, 7);
         $ThisDirectoryRecord['raw']['file_flags'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 25, 1));
         $ThisDirectoryRecord['raw']['file_unit_size'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 26, 1));
         $ThisDirectoryRecord['raw']['interleave_gap_size'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 27, 1));
         $ThisDirectoryRecord['raw']['volume_sequence_number'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 28, 2));
         $ThisDirectoryRecord['raw']['file_identifier_length'] = GetId3_Lib_Helper::LittleEndian2Int(substr($DirectoryRecordData, 32, 1));
         $ThisDirectoryRecord['raw']['file_identifier'] = substr($DirectoryRecordData, 33, $ThisDirectoryRecord['raw']['file_identifier_length']);
         $ThisDirectoryRecord['file_identifier_ascii'] = GetId3_Lib_Helper::iconv_fallback($TextEncoding, $info['encoding'], $ThisDirectoryRecord['raw']['file_identifier']);
         $ThisDirectoryRecord['filesize'] = $ThisDirectoryRecord['raw']['filesize'];
         $ThisDirectoryRecord['offset_bytes'] = $ThisDirectoryRecord['raw']['offset_logical'] * 2048;
         $ThisDirectoryRecord['file_flags']['hidden'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x1);
         $ThisDirectoryRecord['file_flags']['directory'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x2);
         $ThisDirectoryRecord['file_flags']['associated'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x4);
         $ThisDirectoryRecord['file_flags']['extended'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x8);
         $ThisDirectoryRecord['file_flags']['permissions'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x10);
         $ThisDirectoryRecord['file_flags']['multiple'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x80);
         $ThisDirectoryRecord['recording_timestamp'] = $this->ISOtime2UNIXtime($ThisDirectoryRecord['raw']['recording_date_time']);
         if ($ThisDirectoryRecord['file_flags']['directory']) {
             $ThisDirectoryRecord['filename'] = $directorydata['full_path'];
         } else {
             $ThisDirectoryRecord['filename'] = $directorydata['full_path'] . $this->ISOstripFilenameVersion($ThisDirectoryRecord['file_identifier_ascii']);
             $info['iso']['files'] = GetId3_Lib_Helper::array_merge_clobber($info['iso']['files'], GetId3_Lib_Helper::CreateDeepArray($ThisDirectoryRecord['filename'], '/', $ThisDirectoryRecord['filesize']));
         }
         $DirectoryRecord[] = $ThisDirectoryRecord;
         $DirectoryRecordData = fread($this->getid3->fp, 1);
     }
     return $DirectoryRecord;
 }
Beispiel #2
0
 /**
  *
  * @param type $array
  * @param type $encoding
  * @return type converts array to $encoding charset from $this->encoding
  */
 public function CharConvert(&$array, $encoding)
 {
     // identical encoding - end here
     if ($encoding == $this->encoding) {
         return;
     }
     // loop thru array
     foreach ($array as $key => $value) {
         // go recursive
         if (is_array($value)) {
             $this->CharConvert($array[$key], $encoding);
         } elseif (is_string($value)) {
             $array[$key] = trim(GetId3_Lib_Helper::iconv_fallback($encoding, $this->encoding, $value));
         }
     }
 }
Beispiel #3
0
 public static function TrimConvert($string)
 {
     return trim(GetId3_Lib_Helper::iconv_fallback('UTF-16LE', 'ISO-8859-1', self::TrimTerm($string)), ' ');
 }