Comments frame is intended for any kind of full text information * that does not fit in any other frame. It consists of a frame header followed * by encoding, language and content descriptors and is ended with the actual * comment as a text string. Newline characters are allowed in the comment text * string. There may be more than one comment frame in each tag, but only one * with the same language and content descriptor. * * @package php-reader * @subpackage ID3 * @author Sven Vollbehr * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ final class ID3_Frame_COMM extends ID3_Frame implements ID3_Encoding, ID3_Language { /** @var integer */ private $_encoding; /** @var string */ private $_language; /** @var string */ private $_description; /** @var string */ private $_text; /** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. */ public function __construct($reader) { parent::__construct($reader); $this->_encoding = ord($this->_data{0}); $this->_language = substr($this->_data, 1, 3); $this->_data = substr($this->_data, 4); switch ($this->_encoding) { case self::UTF16: list ($this->_description, $this->_text) = preg_split("/\\x00\\x00/", $this->_data, 2); $this->_description = Transform::fromString16($this->_description); $this->_text = Transform::fromString16($this->_text); break; case self::UTF16BE: list ($this->_description, $this->_text) = preg_split("/\\x00\\x00/", $this->_data, 2); $this->_description = Transform::fromString16BE($this->_description); $this->_text = Transform::fromString16BE($this->_text); break; default: list ($this->_description, $this->_text) = preg_split("/\\x00/", $this->_data, 2); $this->_description = Transform::fromString8($this->_description); $this->_text = Transform::fromString8($this->_text); } } /** * Returns the text encoding. * * @return integer */ public function getEncoding() { return $this->_encoding; } /** * Returns the language code as specified in the * {@link http://www.loc.gov/standards/iso639-2/ ISO-639-2} standard. * * @see ID3_Language#ISO_639_2 * @return string */ public function getLanguage() { return $this->_language; } /** * Returns the short content description. * * @return string */ public function getDescription() { return $this->_description; } /** * Returns the comment text. * * @return string */ public function getText() { return $this->_text; } }