Blame view

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