Ejemplo n.º 1
0
 public function read()
 {
     $engine = new getid3();
     $engine->filename = $this->filename;
     $engine->fp = fopen($this->filename, 'rb');
     $engine->include_module('tag.id3v1');
     $tag = new getid3_id3v1($engine);
     $tag->Analyze();
     if (!isset($engine->info['id3v1'])) {
         return;
     }
     $this->title = $engine->info['id3v1']['title'];
     $this->artist = $engine->info['id3v1']['artist'];
     $this->album = $engine->info['id3v1']['album'];
     $this->year = $engine->info['id3v1']['year'];
     $this->genre_id = $engine->info['id3v1']['genre_id'];
     $this->genre = $engine->info['id3v1']['genre'];
     $this->comment = $engine->info['id3v1']['comment'];
     $this->track = $engine->info['id3v1']['track'];
     return true;
 }
Ejemplo n.º 2
0
 public function remove()
 {
     $engine = new getid3();
     $engine->filename = $this->filename;
     $engine->fp = fopen($this->filename, 'rb');
     $engine->include_module('tag.apetag');
     $tag = new getid3_apetag($engine);
     $tag->Analyze();
     if (isset($engine->info['ape']['tag_offset_start']) && isset($engine->info['ape']['tag_offset_end'])) {
         if (!($fp = @fopen($this->filename, 'a+b'))) {
             throw new getid3_exception('Could not open a+b: ' . $this->filename);
         }
         // get data after apetag
         if (filesize($this->filename) > $engine->info['ape']['tag_offset_end']) {
             fseek($fp, $engine->info['ape']['tag_offset_end'], SEEK_SET);
             $data_after_ape = fread($fp, filesize($this->filename) - $engine->info['ape']['tag_offset_end']);
         }
         // truncate file before start of apetag
         ftruncate($fp, $engine->info['ape']['tag_offset_start']);
         // rewrite data after apetag
         if (isset($data_after_ape)) {
             fseek($fp, $engine->info['ape']['tag_offset_start'], SEEK_SET);
             fwrite($fp, $data_after_ape, strlen($data_after_ape));
         }
         fclose($fp);
         clearstatcache();
     }
     // success when removing non-existant tag
     return true;
 }
Ejemplo n.º 3
0
 public function remove()
 {
     $engine = new getid3();
     $engine->filename = $this->filename;
     $engine->fp = fopen($this->filename, 'rb');
     $engine->include_module('tag.id3v2');
     $tag = new getid3_id3v2($engine);
     $tag->Analyze();
     if ((int) @$engine->info['avdataoffset']) {
         if (!($fp_source = @fopen($this->filename, 'rb'))) {
             throw new getid3_exception('Could not open ' . $this->filename . ' mode "rb"');
         }
         fseek($fp_source, $engine->info['avdataoffset'], SEEK_SET);
         if (!($fp_temp = @fopen($this->filename . 'getid3tmp', 'w+b'))) {
             throw new getid3_exception('Could not open ' . $this->filename . 'getid3tmp mode "w+b"');
         }
         while ($buffer = fread($fp_source, 16384)) {
             fwrite($fp_temp, $buffer, strlen($buffer));
         }
         fclose($fp_temp);
         fclose($fp_source);
         $this->save_permissions();
         unlink($this->filename);
         rename($this->filename . 'getid3tmp', $this->filename);
         $this->restore_permissions();
         clearstatcache();
     }
     // success when removing non-existant tag
     return true;
 }