[3318] | 1 | <?php |
---|
[3544] | 2 | ///////////////////////////////////////////////////////////////// |
---|
| 3 | /// getID3() by James Heinrich <info@getid3.org> // |
---|
| 4 | // available at http://getid3.sourceforge.net // |
---|
| 5 | // or http://www.getid3.org // |
---|
| 6 | ///////////////////////////////////////////////////////////////// |
---|
| 7 | // See readme.txt for more details // |
---|
| 8 | ///////////////////////////////////////////////////////////////// |
---|
| 9 | // // |
---|
| 10 | // write.lyrics3.php // |
---|
| 11 | // module for writing Lyrics3 tags // |
---|
| 12 | // dependencies: module.tag.lyrics3.php // |
---|
| 13 | // /// |
---|
| 14 | ///////////////////////////////////////////////////////////////// |
---|
[3318] | 15 | |
---|
| 16 | |
---|
[3544] | 17 | class getid3_write_lyrics3 |
---|
[3318] | 18 | { |
---|
[3544] | 19 | var $filename; |
---|
| 20 | var $tag_data; |
---|
| 21 | //var $lyrics3_version = 2; // 1 or 2 |
---|
| 22 | var $warnings = array(); // any non-critical errors will be stored here |
---|
| 23 | var $errors = array(); // any critical errors will be stored here |
---|
[3318] | 24 | |
---|
[3544] | 25 | function getid3_write_lyrics3() { |
---|
| 26 | return true; |
---|
| 27 | } |
---|
[3318] | 28 | |
---|
[3544] | 29 | function WriteLyrics3() { |
---|
| 30 | $this->errors[] = 'WriteLyrics3() not yet functional - cannot write Lyrics3'; |
---|
| 31 | return false; |
---|
| 32 | } |
---|
[3318] | 33 | |
---|
[3544] | 34 | function DeleteLyrics3() { |
---|
| 35 | // Initialize getID3 engine |
---|
| 36 | $getID3 = new getID3; |
---|
| 37 | $ThisFileInfo = $getID3->analyze($this->filename); |
---|
| 38 | if (isset($ThisFileInfo['lyrics3']['tag_offset_start']) && isset($ThisFileInfo['lyrics3']['tag_offset_end'])) { |
---|
| 39 | if ($fp = @fopen($this->filename, 'a+b')) { |
---|
[3318] | 40 | |
---|
[3544] | 41 | flock($fp, LOCK_EX); |
---|
| 42 | $oldignoreuserabort = ignore_user_abort(true); |
---|
[3318] | 43 | |
---|
[3544] | 44 | fseek($fp, $ThisFileInfo['lyrics3']['tag_offset_end'], SEEK_SET); |
---|
| 45 | $DataAfterLyrics3 = ''; |
---|
| 46 | if ($ThisFileInfo['filesize'] > $ThisFileInfo['lyrics3']['tag_offset_end']) { |
---|
| 47 | $DataAfterLyrics3 = fread($fp, $ThisFileInfo['filesize'] - $ThisFileInfo['lyrics3']['tag_offset_end']); |
---|
| 48 | } |
---|
[3318] | 49 | |
---|
[3544] | 50 | ftruncate($fp, $ThisFileInfo['lyrics3']['tag_offset_start']); |
---|
[3318] | 51 | |
---|
[3544] | 52 | if (!empty($DataAfterLyrics3)) { |
---|
| 53 | fseek($fp, $ThisFileInfo['lyrics3']['tag_offset_start'], SEEK_SET); |
---|
| 54 | fwrite($fp, $DataAfterLyrics3, strlen($DataAfterLyrics3)); |
---|
| 55 | } |
---|
[3318] | 56 | |
---|
[3544] | 57 | flock($fp, LOCK_UN); |
---|
| 58 | fclose($fp); |
---|
| 59 | ignore_user_abort($oldignoreuserabort); |
---|
[3318] | 60 | |
---|
[3544] | 61 | return true; |
---|
[3318] | 62 | |
---|
[3544] | 63 | } else { |
---|
[3318] | 64 | |
---|
[3544] | 65 | $this->errors[] = 'Cannot open "'.$this->filename.'" in "a+b" mode'; |
---|
| 66 | return false; |
---|
[3318] | 67 | |
---|
[3544] | 68 | } |
---|
| 69 | } |
---|
| 70 | // no Lyrics3 present |
---|
| 71 | return true; |
---|
| 72 | } |
---|
[3318] | 73 | |
---|
| 74 | |
---|
| 75 | |
---|
| 76 | } |
---|
| 77 | |
---|
| 78 | ?> |
---|