Esempio n. 1
0
 /**
  * @return bool
  */
 public function WriteID3v1()
 {
     // File MUST be writeable - CHMOD(646) at least
     if (!empty($this->filename) && is_readable($this->filename) && is_writable($this->filename) && is_file($this->filename)) {
         $this->setRealFileSize();
         if ($this->filesize <= 0 || !Helper::intValueSupported($this->filesize)) {
             $this->errors[] = 'Unable to WriteID3v1(' . $this->filename . ') because filesize (' . $this->filesize . ') is larger than ' . round(PHP_INT_MAX / 1073741824) . 'GB';
             return false;
         }
         if ($fp_source = fopen($this->filename, 'r+b')) {
             fseek($fp_source, -128, SEEK_END);
             if (fread($fp_source, 3) == 'TAG') {
                 fseek($fp_source, -128, SEEK_END);
                 // overwrite existing ID3v1 tag
             } else {
                 fseek($fp_source, 0, SEEK_END);
                 // append new ID3v1 tag
             }
             $this->tag_data['track'] = isset($this->tag_data['track']) ? $this->tag_data['track'] : (isset($this->tag_data['track_number']) ? $this->tag_data['track_number'] : (isset($this->tag_data['tracknumber']) ? $this->tag_data['tracknumber'] : ''));
             $new_id3v1_tag_data = Tag\Id3v1::GenerateID3v1Tag(isset($this->tag_data['title']) ? $this->tag_data['title'] : '', isset($this->tag_data['artist']) ? $this->tag_data['artist'] : '', isset($this->tag_data['album']) ? $this->tag_data['album'] : '', isset($this->tag_data['year']) ? $this->tag_data['year'] : '', isset($this->tag_data['genreid']) ? $this->tag_data['genreid'] : '', isset($this->tag_data['comment']) ? $this->tag_data['comment'] : '', isset($this->tag_data['track']) ? $this->tag_data['track'] : '');
             fwrite($fp_source, $new_id3v1_tag_data, 128);
             fclose($fp_source);
             return true;
         } else {
             $this->errors[] = 'Could not fopen(' . $this->filename . ', "r+b")';
             return false;
         }
     }
     $this->errors[] = 'File is not writeable: ' . $this->filename;
     return false;
 }