Blame view

sources/3rdparty/getid3/write.lyrics3.php 2.55 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  <?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
  {
31b7f2792   Kload   Upgrade to ownclo...
19
20
21
22
23
  	public $filename;
  	public $tag_data;
  	//public $lyrics3_version = 2;       // 1 or 2
  	public $warnings        = array(); // any non-critical errors will be stored here
  	public $errors          = array(); // any critical errors will be stored here
03e52840d   Kload   Init
24

31b7f2792   Kload   Upgrade to ownclo...
25
  	public function getid3_write_lyrics3() {
03e52840d   Kload   Init
26
27
  		return true;
  	}
31b7f2792   Kload   Upgrade to ownclo...
28
  	public function WriteLyrics3() {
03e52840d   Kload   Init
29
30
31
  		$this->errors[] = 'WriteLyrics3() not yet functional - cannot write Lyrics3';
  		return false;
  	}
31b7f2792   Kload   Upgrade to ownclo...
32
  	public function DeleteLyrics3() {
03e52840d   Kload   Init
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
  		// 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;
  	}
  
  }