diff --git a/src/ID3/ExtendedHeader.php b/src/ID3/ExtendedHeader.php index d1e1d73..35ca410 100644 --- a/src/ID3/ExtendedHeader.php +++ b/src/ID3/ExtendedHeader.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -48,7 +49,7 @@ require_once("ID3/Object.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -128,7 +129,7 @@ final class ID3_ExtendedHeader extends ID3_Object /* ID3v2.4.0 ExtendedHeader */ else { - $this->_size = $this->decodeSynchsafe32($this->_size); + $this->_size = $this->_decodeSynchsafe32($this->_size); $this->_reader->skip(1); $this->_flags = $this->_reader->readInt8(); if ($this->hasFlag(self::UPDATE)) @@ -137,7 +138,7 @@ final class ID3_ExtendedHeader extends ID3_Object $this->_reader->skip(1); $this->_crc = Transform::fromInt8($this->_reader->read(1)) * (0xfffffff + 1) + - decodeSynchsafe32(Transform::fromUInt32BE($this->_reader->read(4))); + _decodeSynchsafe32(Transform::fromUInt32BE($this->_reader->read(4))); } if ($this->hasFlag(self::RESTRICTED)) { $this->_reader->skip(1); @@ -294,7 +295,7 @@ final class ID3_ExtendedHeader extends ID3_Object public function setPadding($padding) { return $this->_padding = $padding; } /** - * Returns the header raw data. + * Returns the header data. * * @return string */ @@ -310,12 +311,12 @@ final class ID3_ExtendedHeader extends ID3_Object /* ID3v2.4.0 ExtendedHeader */ else { - return Transform::toUInt32BE($this->encodeSynchsafe32($this->_size)) . + return Transform::toUInt32BE($this->_encodeSynchsafe32($this->_size)) . Transform::toInt8(1) . Transform::toInt8($this->_flags) . ($this->hasFlag(self::UPDATE) ? "\0" : "") . ($this->hasFlag(self::CRC32) ? Transform::toInt8(5) . Transform::toInt8($this->_crc & 0xf0000000 >> 28 & 0xf /*eq >>> 28*/) . - Transform::toUInt32BE($this->encodeSynchsafe32($this->_crc)) : "") . + Transform::toUInt32BE($this->_encodeSynchsafe32($this->_crc)) : "") . ($this->hasFlag(self::RESTRICTED) ? Transform::toInt8(1) . Transform::toInt8($this->_restrictions) : ""); } diff --git a/src/ID3/Frame.php b/src/ID3/Frame.php index 1e490ba..638b218 100644 --- a/src/ID3/Frame.php +++ b/src/ID3/Frame.php @@ -52,7 +52,7 @@ require_once("ID3/Object.php"); * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ -class ID3_Frame extends ID3_Object +abstract class ID3_Frame extends ID3_Object { /** * This flag tells the tag parser what to do with this frame if it is unknown @@ -171,13 +171,14 @@ class ID3_Frame extends ID3_Object /* ID3v2.4.0 size and flags */ else { - $this->_size = $this->decodeSynchsafe32($this->_reader->readUInt32BE()); + $this->_size = + $this->_decodeSynchsafe32($this->_reader->readUInt32BE()); $this->_flags = $this->_reader->readUInt16BE(); } $dataLength = $this->_size; if ($this->hasFlag(self::DATA_LENGTH_INDICATOR)) { - $dataLength = $this->decodeSynchsafe32($this->_reader->readUInt32BE()); + $dataLength = $this->_decodeSynchsafe32($this->_reader->readUInt32BE()); $this->_size -= 4; } $this->_data = $this->_reader->read($this->_size); @@ -185,7 +186,7 @@ class ID3_Frame extends ID3_Object if ($this->hasFlag(self::UNSYNCHRONISATION) || $this->getOption("unsynchronisation", false) === true) - $this->_data = $this->decodeUnsynchronisation($this->_data); + $this->_data = $this->_decodeUnsynchronisation($this->_data); } } @@ -221,7 +222,10 @@ class ID3_Frame extends ID3_Object * @param integer $flag The flag to query. * @return boolean */ - public final function hasFlag($flag) { return ($this->_flags & $flag) == $flag; } + public final function hasFlag($flag) + { + return ($this->_flags & $flag) == $flag; + } /** * Returns the frame flags byte. @@ -238,18 +242,14 @@ class ID3_Frame extends ID3_Object public final function setFlags($flags) { $this->_flags = $flags; } /** - * Sets the frame raw data. + * Returns the frame raw data without the header. * - * @param string $data + * @return string */ - protected function setData($data) - { - $this->_data = $data; - $this->_size = strlen($data); - } + abstract protected function _getData(); /** - * Returns the frame raw data. + * Returns the frame data with the header. * * @return string */ @@ -275,15 +275,17 @@ class ID3_Frame extends ID3_Object /* ID3v2.4.0 Flags */ else $flags = $this->_flags; - - $size = $this->_size; - if ($this->getOption("version", 4) < 4) - $data = $this->_data; - else { - $data = $this->encodeUnsynchronisation($this->_data); + + if ($this->getOption("version", 4) < 4) { + $data = $this->_data = $this->_getData(); + $size = $this->_size = strlen($data); + } else { + $data = $this->_data = $this->_getData(); + $size = $this->_size = strlen($data); + $data = $this->_encodeUnsynchronisation($data); if (($dataLength = strlen($data)) != $size) { $size = 4 + $dataLength; - $data = Transform::toUInt32BE($this->encodeSynchsafe32($this->_size)) . + $data = Transform::toUInt32BE($this->_encodeSynchsafe32($this->_size)) . $data; $flags |= self::DATA_LENGTH_INDICATOR | self::UNSYNCHRONISATION; $this->setOption("unsynchronisation", true); @@ -291,7 +293,7 @@ class ID3_Frame extends ID3_Object $flags &= ~(self::DATA_LENGTH_INDICATOR | self::UNSYNCHRONISATION); } return Transform::toString8(substr($this->_identifier, 0, 4), 4) . - Transform::toUInt32BE($this->encodeSynchsafe32($size)) . + Transform::toUInt32BE($this->_encodeSynchsafe32($size)) . Transform::toUInt16BE($flags) . $data; } } diff --git a/src/ID3/Frame/AENC.php b/src/ID3/Frame/AENC.php index 2364338..a454887 100644 --- a/src/ID3/Frame/AENC.php +++ b/src/ID3/Frame/AENC.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -54,7 +55,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -85,7 +86,7 @@ final class ID3_Frame_AENC extends ID3_Frame if ($reader === null) return; - list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2); + list($this->_owner, $this->_data) = $this->_explodeString8($this->_data, 2); $this->_previewStart = Transform::fromUInt16BE(substr($this->_data, 0, 2)); $this->_previewLength = Transform::fromUInt16BE(substr($this->_data, 2, 2)); $this->_encryptionInfo = substr($this->_data, 4); @@ -157,15 +158,14 @@ final class ID3_Frame_AENC extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - ($this->_owner . "\0" . Transform::toUInt16BE($this->_previewStart) . - Transform::toUInt16BE($this->_previewLength) . $this->_encryptionInfo); - return parent::__toString(); + return + $this->_owner . "\0" . Transform::toUInt16BE($this->_previewStart) . + Transform::toUInt16BE($this->_previewLength) . $this->_encryptionInfo; } } diff --git a/src/ID3/Frame/APIC.php b/src/ID3/Frame/APIC.php index 60785d7..bf0913c 100644 --- a/src/ID3/Frame/APIC.php +++ b/src/ID3/Frame/APIC.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -57,7 +58,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -121,26 +122,26 @@ final class ID3_Frame_APIC extends ID3_Frame switch ($encoding) { case self::UTF16: list ($this->_description, $this->_imageData) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); break; case self::UTF16BE: list ($this->_description, $this->_imageData) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); break; case self::UTF8: list ($this->_description, $this->_imageData) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString ($this->_description, "utf-8"); break; default: list ($this->_description, $this->_imageData) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString ($this->_description, "iso-8859-1"); } @@ -248,11 +249,11 @@ final class ID3_Frame_APIC extends ID3_Frame public function getImageSize() { return $this->_imageSize; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_mimeType . "\0" . Transform::toUInt8($this->_imageType); @@ -270,7 +271,6 @@ final class ID3_Frame_APIC extends ID3_Frame default: $data .= $this->_description . "\0"; } - parent::setData($data . $this->_imageData); - return parent::__toString(); + return $data . $this->_imageData; } } diff --git a/src/ID3/Frame/ASPI.php b/src/ID3/Frame/ASPI.php index 59ff25c..379ba2c 100644 --- a/src/ID3/Frame/ASPI.php +++ b/src/ID3/Frame/ASPI.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @since ID3v2.4.0 @@ -54,7 +55,7 @@ require_once("ID3/Frame.php"); * @package php-reader * @subpackage ID3 * @author Sven Vollbehr - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @since ID3v2.4.0 diff --git a/src/ID3/Frame/AbstractLink.php b/src/ID3/Frame/AbstractLink.php index 2596357..73650ed 100644 --- a/src/ID3/Frame/AbstractLink.php +++ b/src/ID3/Frame/AbstractLink.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -46,7 +47,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -66,7 +67,7 @@ abstract class ID3_Frame_AbstractLink extends ID3_Frame parent::__construct($reader, $options); if ($reader !== null) - $this->_link = implode($this->explodeString8($this->_data, 1), ""); + $this->_link = implode($this->_explodeString8($this->_data, 1), ""); } /** @@ -84,13 +85,12 @@ abstract class ID3_Frame_AbstractLink extends ID3_Frame public function setLink($link) { $this->_link = $link; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData($this->_link); - return parent::__toString(); + return $this->_link; } } diff --git a/src/ID3/Frame/AbstractText.php b/src/ID3/Frame/AbstractText.php index bc0112d..e9c4702 100644 --- a/src/ID3/Frame/AbstractText.php +++ b/src/ID3/Frame/AbstractText.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -47,7 +48,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -87,22 +88,22 @@ abstract class ID3_Frame_AbstractText extends ID3_Frame $this->_data = substr($this->_data, 1); switch ($encoding) { case self::UTF16: - $this->_text = $this->convertString - ($this->explodeString16(Transform::fromString16($this->_data)), + $this->_text = $this->_convertString + ($this->_explodeString16(Transform::fromString16($this->_data)), "utf-16"); break; case self::UTF16BE: - $this->_text = $this->convertString - ($this->explodeString16(Transform::fromString16BE($this->_data)), + $this->_text = $this->_convertString + ($this->_explodeString16(Transform::fromString16BE($this->_data)), "utf-16be"); break; case self::UTF8: - $this->_text = $this->convertString - ($this->explodeString8(Transform::fromString8($this->_data)), "utf-8"); + $this->_text = $this->_convertString + ($this->_explodeString8(Transform::fromString8($this->_data)), "utf-8"); break; default: - $this->_text = $this->convertString - ($this->explodeString8(Transform::fromString8($this->_data)), + $this->_text = $this->_convertString + ($this->_explodeString8(Transform::fromString8($this->_data)), "iso-8859-1"); } } @@ -161,11 +162,11 @@ abstract class ID3_Frame_AbstractText extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding); switch ($this->_encoding) { @@ -184,7 +185,6 @@ abstract class ID3_Frame_AbstractText extends ID3_Frame default: $data .= implode("\0", $this->_text); } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/COMM.php b/src/ID3/Frame/COMM.php index 32a86b6..2e87aff 100644 --- a/src/ID3/Frame/COMM.php +++ b/src/ID3/Frame/COMM.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -54,7 +55,7 @@ require_once("ID3/Exception.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -97,34 +98,34 @@ final class ID3_Frame_COMM extends ID3_Frame switch ($encoding) { case self::UTF16: list ($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16($this->_text), "utf-16"); break; case self::UTF16BE: list ($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16BE($this->_text), "utf-16be"); break; case self::UTF8: list ($this->_description, $this->_text) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "utf-8"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_text), "utf-8"); break; default: list ($this->_description, $this->_text) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "iso-8859-1"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_text), "iso-8859-1"); } } @@ -227,11 +228,11 @@ final class ID3_Frame_COMM extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_language; switch ($this->_encoding) { @@ -249,7 +250,6 @@ final class ID3_Frame_COMM extends ID3_Frame default: $data .= $this->_description . "\0" . $this->_text; } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/COMR.php b/src/ID3/Frame/COMR.php index 40d57f4..2fa3ac2 100644 --- a/src/ID3/Frame/COMR.php +++ b/src/ID3/Frame/COMR.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -53,7 +54,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -121,46 +122,46 @@ final class ID3_Frame_COMR extends ID3_Frame $encoding = Transform::fromUInt8($this->_data[0]); list($pricing, $this->_data) = - $this->explodeString8(substr($this->_data, 1), 2); + $this->_explodeString8(substr($this->_data, 1), 2); $this->_currency = substr($pricing, 0, 3); $this->_price = substr($pricing, 3); $this->_date = substr($this->_data, 0, 8); list($this->_contact, $this->_data) = - $this->explodeString8(substr($this->_data, 8), 2); + $this->_explodeString8(substr($this->_data, 8), 2); $this->_delivery = Transform::fromUInt8($this->_data[0]); $this->_data = substr($this->_data, 1); switch ($encoding) { case self::UTF16: list ($this->_seller, $this->_description, $this->_data) = - $this->explodeString16($this->_data, 3); - $this->_seller = $this->convertString + $this->_explodeString16($this->_data, 3); + $this->_seller = $this->_convertString (Transform::fromString16($this->_seller), "utf-16"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); break; case self::UTF16BE: list ($this->_seller, $this->_description, $this->_data) = - $this->explodeString16($this->_data, 3); - $this->_seller = $this->convertString + $this->_explodeString16($this->_data, 3); + $this->_seller = $this->_convertString (Transform::fromString16BE($this->_seller), "utf-16be"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); break; case self::UTF8: list ($this->_seller, $this->_description, $this->_data) = - $this->explodeString8($this->_data, 3); - $this->_seller = $this->convertString + $this->_explodeString8($this->_data, 3); + $this->_seller = $this->_convertString (Transform::fromString8($this->_seller), "utf-8"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "utf-8"); break; default: list ($this->_seller, $this->_description, $this->_data) = - $this->explodeString8($this->_data, 3); - $this->_seller = $this->convertString + $this->_explodeString8($this->_data, 3); + $this->_seller = $this->_convertString (Transform::fromString8($this->_seller), "iso-8859-1"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "iso-8859-1"); } @@ -168,7 +169,7 @@ final class ID3_Frame_COMR extends ID3_Frame return; list($this->_mimeType, $this->_imageData) = - $this->explodeString8($this->_data, 2); + $this->_explodeString8($this->_data, 2); $this->_imageSize = strlen($this->_imageData); } @@ -368,11 +369,11 @@ final class ID3_Frame_COMR extends ID3_Frame public function getImageSize() { return $this->_imageSize; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_currency . $this->_price . "\0" . $this->_date . $this->_contact . "\0" . @@ -392,9 +393,8 @@ final class ID3_Frame_COMR extends ID3_Frame default: $data .= $this->_seller . "\0" . $this->_description . "\0"; } - parent::setData - ($data . ($this->_mimeType ? - $this->_mimeType . "\0" . $this->_imageData : "")); - return parent::__toString(); + return + $data . ($this->_mimeType ? + $this->_mimeType . "\0" . $this->_imageData : ""); } } diff --git a/src/ID3/Frame/ENCR.php b/src/ID3/Frame/ENCR.php index 6eba403..b3cccc4 100644 --- a/src/ID3/Frame/ENCR.php +++ b/src/ID3/Frame/ENCR.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -63,7 +64,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -91,7 +92,7 @@ final class ID3_Frame_ENCR extends ID3_Frame if ($reader === null) return; - list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2); + list($this->_owner, $this->_data) = $this->_explodeString8($this->_data, 2); $this->_method = Transform::fromInt8($this->_data[0]); $this->_encryptionData = substr($this->_data, 1); } @@ -142,15 +143,14 @@ final class ID3_Frame_ENCR extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - parent::setData - ($this->_owner . "\0" . Transform::toInt8($this->_method) . - $this->_encryptionData); - return parent::__toString(); + return + $this->_owner . "\0" . Transform::toInt8($this->_method) . + $this->_encryptionData; } } diff --git a/src/ID3/Frame/EQU2.php b/src/ID3/Frame/EQU2.php index 153e2af..323064d 100644 --- a/src/ID3/Frame/EQU2.php +++ b/src/ID3/Frame/EQU2.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @since ID3v2.4.0 @@ -50,7 +51,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @since ID3v2.4.0 @@ -94,7 +95,7 @@ final class ID3_Frame_EQU2 extends ID3_Frame $this->_interpolation = Transform::fromInt8($this->_data[0]); list ($this->_device, $this->_data) = - $this->explodeString8(substr($this->_data, 1), 2); + $this->_explodeString8(substr($this->_data, 1), 2); for ($i = 0; $i < strlen($this->_data); $i += 4) $this->_adjustments @@ -177,17 +178,16 @@ final class ID3_Frame_EQU2 extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toInt8($this->_interpolation) . $this->_device . "\0"; foreach ($this->_adjustments as $frequency => $adjustment) $data .= Transform::toUInt16BE($frequency * 2) . Transform::toInt16BE($adjustment * 512); - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/EQUA.php b/src/ID3/Frame/EQUA.php index 7d9f221..e324b54 100644 --- a/src/ID3/Frame/EQUA.php +++ b/src/ID3/Frame/EQUA.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @deprecated ID3v2.3.0 @@ -49,7 +50,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @deprecated ID3v2.3.0 @@ -123,18 +124,17 @@ final class ID3_Frame_EQUA extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toInt8(16); foreach ($this->_adjustments as $frequency => $adjustment) $data .= Transform::toUInt16BE ($adjustment > 0 ? $frequency | 0x8000 : $frequency & ~0x8000) . Transform::toUInt16BE(abs($adjustment)); - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/ETCO.php b/src/ID3/Frame/ETCO.php index bfce399..95a4e69 100644 --- a/src/ID3/Frame/ETCO.php +++ b/src/ID3/Frame/ETCO.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -58,7 +59,7 @@ require_once("ID3/Timing.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -153,16 +154,15 @@ final class ID3_Frame_ETCO extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_format); foreach ($this->_events as $timestamp => $type) $data .= Transform::toUInt8($type) . Transform::toUInt32BE($timestamp); - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/GEOB.php b/src/ID3/Frame/GEOB.php index ce1561e..944a164 100644 --- a/src/ID3/Frame/GEOB.php +++ b/src/ID3/Frame/GEOB.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -48,7 +49,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -93,34 +94,34 @@ final class ID3_Frame_GEOB extends ID3_Frame switch ($encoding) { case self::UTF16: list ($this->_filename, $this->_description, $this->_objectData) = - $this->explodeString16($this->_data, 3); - $this->_filename = $this->convertString + $this->_explodeString16($this->_data, 3); + $this->_filename = $this->_convertString (Transform::fromString16($this->_filename), "utf-16"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); break; case self::UTF16BE: list ($this->_filename, $this->_description, $this->_objectData) = - $this->explodeString16($this->_data, 3); - $this->_filename = $this->convertString + $this->_explodeString16($this->_data, 3); + $this->_filename = $this->_convertString (Transform::fromString16BE($this->_filename), "utf-16be"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); break; case self::UTF8: list ($this->_filename, $this->_description, $this->_objectData) = - $this->explodeString8($this->_data, 3); - $this->_filename = $this->convertString + $this->_explodeString8($this->_data, 3); + $this->_filename = $this->_convertString (Transform::fromString8($this->_filename), "utf-8"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "utf-8"); break; default: list ($this->_filename, $this->_description, $this->_objectData) = - $this->explodeString8($this->_data, 3); - $this->_filename = $this->convertString + $this->_explodeString8($this->_data, 3); + $this->_filename = $this->_convertString (Transform::fromString8($this->_filename), "iso-8859-1"); - $this->_description = $this->convertString + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "iso-8859-1"); } } @@ -225,11 +226,11 @@ final class ID3_Frame_GEOB extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_mimeType . "\0"; switch ($this->_encoding) { @@ -247,7 +248,6 @@ final class ID3_Frame_GEOB extends ID3_Frame default: $data .= $this->_filename . "\0" . $this->_description . "\0"; } - $this->setData($data . $this->_objectData); - return parent::__toString(); + return $data . $this->_objectData; } } diff --git a/src/ID3/Frame/GRID.php b/src/ID3/Frame/GRID.php index 18aa8ec..faac81c 100644 --- a/src/ID3/Frame/GRID.php +++ b/src/ID3/Frame/GRID.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -62,7 +63,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -90,7 +91,7 @@ final class ID3_Frame_GRID extends ID3_Frame if ($reader === null) return; - list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2); + list($this->_owner, $this->_data) = $this->_explodeString8($this->_data, 2); $this->_group = Transform::fromUInt8($this->_data[0]); $this->_groupData = substr($this->_data, 1); } @@ -138,15 +139,14 @@ final class ID3_Frame_GRID extends ID3_Frame public function setGroupData($groupData) { $this->_groupData = $groupData; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - parent::setData - ($this->_owner . "\0" . Transform::toUInt8($this->_group) . - $this->_groupData); - return parent::__toString(); + return + $this->_owner . "\0" . Transform::toUInt8($this->_group) . + $this->_groupData; } } diff --git a/src/ID3/Frame/IPLS.php b/src/ID3/Frame/IPLS.php index ddf9a04..2b70086 100644 --- a/src/ID3/Frame/IPLS.php +++ b/src/ID3/Frame/IPLS.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @deprecated ID3v2.3.0 @@ -50,7 +51,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @deprecated ID3v2.3.0 @@ -84,22 +85,22 @@ final class ID3_Frame_IPLS extends ID3_Frame $order = Transform::MACHINE_ENDIAN_ORDER; switch ($encoding) { case self::UTF16: - $data = $this->explodeString16($data); + $data = $this->_explodeString16($data); foreach ($data as &$str) - $str = $this->convertString + $str = $this->_convertString (Transform::fromString16($str, $order), "utf-16"); break; case self::UTF16BE: - $data = $this->explodeString16($data); + $data = $this->_explodeString16($data); foreach ($data as &$str) - $str = $this->convertString + $str = $this->_convertString (Transform::fromString16BE($str), "utf-16be"); break; case self::UTF8: - $data = $this->convertString($this->explodeString8($data), "utf-8"); + $data = $this->_convertString($this->_explodeString8($data), "utf-8"); break; default: - $data = $this->convertString($this->explodeString8($data), "iso-8859-1"); + $data = $this->_convertString($this->_explodeString8($data), "iso-8859-1"); } for ($i = 0; $i < count($data) - 1; $i += 2) @@ -161,11 +162,11 @@ final class ID3_Frame_IPLS extends ID3_Frame public function setPeople($people) { $this->_people = $people; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding); $order = $this->_encoding == self::UTF16 ? @@ -186,7 +187,6 @@ final class ID3_Frame_IPLS extends ID3_Frame } } } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/LINK.php b/src/ID3/Frame/LINK.php index becd1fd..341eeb4 100644 --- a/src/ID3/Frame/LINK.php +++ b/src/ID3/Frame/LINK.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -80,7 +81,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -110,7 +111,7 @@ final class ID3_Frame_LINK extends ID3_Frame $this->_target = substr($this->_data, 0, 4); list($this->_url, $this->_qualifier) = - $this->explodeString8(substr($this->_data, 4), 2); + $this->_explodeString8(substr($this->_data, 4), 2); } /** @@ -159,15 +160,14 @@ final class ID3_Frame_LINK extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - (Transform::toString8(substr($this->_target, 0, 4), 4) . - $this->_url . "\0" . $this->_qualifier); - return parent::__toString(); + return + Transform::toString8(substr($this->_target, 0, 4), 4) . + $this->_url . "\0" . $this->_qualifier; } } diff --git a/src/ID3/Frame/MCDI.php b/src/ID3/Frame/MCDI.php index 6c496e5..625fd6f 100644 --- a/src/ID3/Frame/MCDI.php +++ b/src/ID3/Frame/MCDI.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -56,7 +57,7 @@ require_once("ID3/Frame.php"); * @package php-reader * @subpackage ID3 * @author Sven Vollbehr - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -74,5 +75,12 @@ final class ID3_Frame_MCDI extends ID3_Frame * * @param string $data The CD TOC binary dump string. */ - public function setData($data) { parent::setData($data); } + public function setData($data) { $this->_data = $data; } + + /** + * Returns the frame raw data without the header. + * + * @return string + */ + protected function _getData() { return $this->_data; } } diff --git a/src/ID3/Frame/MLLT.php b/src/ID3/Frame/MLLT.php index b916158..b3b5f63 100644 --- a/src/ID3/Frame/MLLT.php +++ b/src/ID3/Frame/MLLT.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -63,7 +64,7 @@ require_once("ID3/Frame.php"); * @package php-reader * @subpackage ID3 * @author Sven Vollbehr - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ diff --git a/src/ID3/Frame/OWNE.php b/src/ID3/Frame/OWNE.php index de55b3e..74d50fa 100644 --- a/src/ID3/Frame/OWNE.php +++ b/src/ID3/Frame/OWNE.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -51,7 +52,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -90,7 +91,7 @@ final class ID3_Frame_OWNE extends ID3_Frame $encoding = Transform::fromUInt8($this->_data[0]); list($tmp, $this->_data) = - $this->explodeString8(substr($this->_data, 1), 2); + $this->_explodeString8(substr($this->_data, 1), 2); $this->_currency = substr($tmp, 0, 3); $this->_price = substr($tmp, 3); $this->_date = substr($this->_data, 0, 8); @@ -98,19 +99,19 @@ final class ID3_Frame_OWNE extends ID3_Frame switch ($encoding) { case self::UTF16: - $this->_seller = $this->convertString + $this->_seller = $this->_convertString (Transform::fromString16($this->_data), "utf-16"); break; case self::UTF16BE: - $this->_seller = $this->convertString + $this->_seller = $this->_convertString (Transform::fromString16BE($this->_data), "utf-16be"); break; case self::UTF8: - $this->_seller = $this->convertString + $this->_seller = $this->_convertString (Transform::fromString8($this->_data), "utf-8"); break; default: - $this->_seller = $this->convertString + $this->_seller = $this->_convertString (Transform::fromString8($this->_data), "iso-8859-1"); } } @@ -212,11 +213,11 @@ final class ID3_Frame_OWNE extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_currency . $this->_price . "\0" . $this->_date; @@ -233,7 +234,6 @@ final class ID3_Frame_OWNE extends ID3_Frame default: $data .= $this->_seller; } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/PCNT.php b/src/ID3/Frame/PCNT.php index 93ec7b8..233412f 100644 --- a/src/ID3/Frame/PCNT.php +++ b/src/ID3/Frame/PCNT.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -48,7 +49,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -96,16 +97,15 @@ final class ID3_Frame_PCNT extends ID3_Frame public function setCounter($counter) { $this->_counter = $counter; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - ($this->_counter > 4294967295 ? - Transform::toInt64BE($this->_counter) : // UInt64 - Transform::toUInt32BE($this->_counter)); - return parent::__toString(); + return + $this->_counter > 4294967295 ? + Transform::toInt64BE($this->_counter) : // UInt64 + Transform::toUInt32BE($this->_counter); } } diff --git a/src/ID3/Frame/POPM.php b/src/ID3/Frame/POPM.php index 6e0d42c..b182a7b 100644 --- a/src/ID3/Frame/POPM.php +++ b/src/ID3/Frame/POPM.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -59,7 +60,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -87,7 +88,7 @@ final class ID3_Frame_POPM extends ID3_Frame if ($reader === null) return; - list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2); + list($this->_owner, $this->_data) = $this->_explodeString8($this->_data, 2); $this->_rating = Transform::fromUInt8($this->_data[0]); $this->_data = substr($this->_data, 1); @@ -145,17 +146,16 @@ final class ID3_Frame_POPM extends ID3_Frame public function setCounter($counter) { $this->_counter = $counter; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - ($this->_owner . "\0" . Transform::toInt8($this->_rating) . - ($this->_counter > 0xffffffff ? - Transform::toInt64BE($this->_counter) : - ($this->_counter > 0 ? Transform::toUInt32BE($this->_counter) : 0))); - return parent::__toString(); + return + $this->_owner . "\0" . Transform::toInt8($this->_rating) . + ($this->_counter > 0xffffffff ? + Transform::toInt64BE($this->_counter) : + ($this->_counter > 0 ? Transform::toUInt32BE($this->_counter) : 0)); } } diff --git a/src/ID3/Frame/POSS.php b/src/ID3/Frame/POSS.php index 3fd9b78..5b0f67a 100644 --- a/src/ID3/Frame/POSS.php +++ b/src/ID3/Frame/POSS.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -50,7 +51,7 @@ require_once("ID3/Timing.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -118,15 +119,14 @@ final class ID3_Frame_POSS extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - (Transform::toUInt8($this->_format) . - Transform::toUInt32BE($this->_position)); - return parent::__toString(); + return + Transform::toUInt8($this->_format) . + Transform::toUInt32BE($this->_position); } } diff --git a/src/ID3/Frame/PRIV.php b/src/ID3/Frame/PRIV.php index bcfd0ce..e340591 100644 --- a/src/ID3/Frame/PRIV.php +++ b/src/ID3/Frame/PRIV.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -53,7 +54,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -79,7 +80,7 @@ final class ID3_Frame_PRIV extends ID3_Frame return; list($this->_owner, $this->_privateData) = - $this->explodeString8($this->_data, 2); + $this->_explodeString8($this->_data, 2); } /** @@ -114,13 +115,12 @@ final class ID3_Frame_PRIV extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - parent::setData($this->_owner . "\0" . $this->_privateData); - return parent::__toString(); + return $this->_owner . "\0" . $this->_privateData; } } diff --git a/src/ID3/Frame/RBUF.php b/src/ID3/Frame/RBUF.php index d8648b6..87095bf 100644 --- a/src/ID3/Frame/RBUF.php +++ b/src/ID3/Frame/RBUF.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -67,7 +68,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -166,16 +167,15 @@ final class ID3_Frame_RBUF extends ID3_Frame public function setOffset($offset) { $this->_offset = $offset; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - (substr(Transform::toUInt32BE($this->_bufferSize), 1, 3) . - Transform::toInt8($this->_infoFlags) . - Transform::toInt32BE($this->_offset)); - return parent::__toString(); + return + substr(Transform::toUInt32BE($this->_bufferSize), 1, 3) . + Transform::toInt8($this->_infoFlags) . + Transform::toInt32BE($this->_offset); } } diff --git a/src/ID3/Frame/RVA2.php b/src/ID3/Frame/RVA2.php index 7a84742..f54dda1 100644 --- a/src/ID3/Frame/RVA2.php +++ b/src/ID3/Frame/RVA2.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @since ID3v2.4.0 @@ -58,7 +59,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @since ID3v2.4.0 @@ -117,7 +118,7 @@ final class ID3_Frame_RVA2 extends ID3_Frame return; list ($this->_device, $this->_data) = - $this->explodeString8($this->_data, 2); + $this->_explodeString8($this->_data, 2); for ($i = $j = 0; $i < 9; $i++) { $this->_adjustments[$i] = array @@ -188,11 +189,11 @@ final class ID3_Frame_RVA2 extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = $this->_device . "\0"; foreach ($this->_adjustments as $channel) { @@ -211,7 +212,6 @@ final class ID3_Frame_RVA2 extends ID3_Frame $data .= Transform::toInt8(64) . Transform::toInt64BE($channel[self::peakVolume]); // UInt64 } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/RVAD.php b/src/ID3/Frame/RVAD.php index 36b8452..13e5f0a 100644 --- a/src/ID3/Frame/RVAD.php +++ b/src/ID3/Frame/RVAD.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @deprecated ID3v2.3.0 @@ -54,7 +55,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @deprecated ID3v2.3.0 @@ -197,11 +198,11 @@ final class ID3_Frame_RVAD extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $flags = 0; if ($this->_adjustments[self::right] > 0) @@ -246,7 +247,6 @@ final class ID3_Frame_RVAD extends ID3_Frame Transform::toUInt16BE(abs($this->_adjustments[self::bass])) . Transform::toUInt16BE(abs($this->_adjustments[self::peakBass])); } - $this->setData(Transform::toInt8($flags) . $data); - return parent::__toString(); + return Transform::toInt8($flags) . $data; } } diff --git a/src/ID3/Frame/RVRB.php b/src/ID3/Frame/RVRB.php index 68b5492..3443c6d 100644 --- a/src/ID3/Frame/RVRB.php +++ b/src/ID3/Frame/RVRB.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -60,7 +61,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -292,23 +293,22 @@ final class ID3_Frame_RVRB extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData - (Transform::toUInt16BE($this->_reverbLeft) . - Transform::toUInt16BE($this->_reverbRight) . - Transform::toUInt8($this->_reverbBouncesLeft) . - Transform::toUInt8($this->_reverbBouncesRight) . - Transform::toUInt8($this->_reverbFeedbackLtoL) . - Transform::toUInt8($this->_reverbFeedbackLtoR) . - Transform::toUInt8($this->_reverbFeedbackRtoR) . - Transform::toUInt8($this->_reverbFeedbackRtoL) . - Transform::toUInt8($this->_premixLtoR) . - Transform::toUInt8($this->_premixRtoL)); - return parent::__toString(); + return + Transform::toUInt16BE($this->_reverbLeft) . + Transform::toUInt16BE($this->_reverbRight) . + Transform::toUInt8($this->_reverbBouncesLeft) . + Transform::toUInt8($this->_reverbBouncesRight) . + Transform::toUInt8($this->_reverbFeedbackLtoL) . + Transform::toUInt8($this->_reverbFeedbackLtoR) . + Transform::toUInt8($this->_reverbFeedbackRtoR) . + Transform::toUInt8($this->_reverbFeedbackRtoL) . + Transform::toUInt8($this->_premixLtoR) . + Transform::toUInt8($this->_premixRtoL); } } diff --git a/src/ID3/Frame/SEEK.php b/src/ID3/Frame/SEEK.php index 756f88d..380be46 100644 --- a/src/ID3/Frame/SEEK.php +++ b/src/ID3/Frame/SEEK.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @since ID3v2.4.0 @@ -48,7 +49,7 @@ require_once("ID3/Frame.php"); * @package php-reader * @subpackage ID3 * @author Sven Vollbehr - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @since ID3v2.4.0 @@ -92,13 +93,12 @@ final class ID3_Frame_SEEK extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData(Transform::toInt32BE($this->_minOffset)); - return parent::__toString(); + return Transform::toInt32BE($this->_minOffset); } } diff --git a/src/ID3/Frame/SIGN.php b/src/ID3/Frame/SIGN.php index f5481d7..9a14060 100644 --- a/src/ID3/Frame/SIGN.php +++ b/src/ID3/Frame/SIGN.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ * @since ID3v2.4.0 @@ -51,7 +52,7 @@ require_once("ID3/Frame.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ * @since ID3v2.4.0 @@ -110,13 +111,12 @@ final class ID3_Frame_SIGN extends ID3_Frame public function setSignature($signature) { $this->_signature = $signature; } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { - $this->setData(Transform::toUInt8($this->_group) . $this->_signature); - return parent::__toString(); + return Transform::toUInt8($this->_group) . $this->_signature; } } diff --git a/src/ID3/Frame/SYLT.php b/src/ID3/Frame/SYLT.php index 580e43d..114b80e 100644 --- a/src/ID3/Frame/SYLT.php +++ b/src/ID3/Frame/SYLT.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -55,7 +56,7 @@ require_once("ID3/Timing.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -115,26 +116,26 @@ final class ID3_Frame_SYLT extends ID3_Frame switch ($encoding) { case self::UTF16: list($this->_description, $this->_data) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); break; case self::UTF16BE: list($this->_description, $this->_data) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); break; case self::UTF8: list($this->_description, $this->_data) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "utf-8"); break; default: list($this->_description, $this->_data) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "iso-8859-1"); } @@ -142,26 +143,26 @@ final class ID3_Frame_SYLT extends ID3_Frame switch ($encoding) { case self::UTF16: list($syllable, $this->_data) = - $this->explodeString16($this->_data, 2); - $syllable = $this->convertString + $this->_explodeString16($this->_data, 2); + $syllable = $this->_convertString (Transform::fromString16($syllable), "utf-16"); break; case self::UTF16BE: list($syllable, $this->_data) = - $this->explodeString16($this->_data, 2); - $syllable = $this->convertString + $this->_explodeString16($this->_data, 2); + $syllable = $this->_convertString (Transform::fromString16BE($syllable), "utf-16be"); break; case self::UTF8: list($syllable, $this->_data) = - $this->explodeString8($this->_data, 2); - $syllable = $this->convertString + $this->_explodeString8($this->_data, 2); + $syllable = $this->_convertString (Transform::fromString8($syllable), "utf-8"); break; default: list($syllable, $this->_data) = - $this->explodeString8($this->_data, 2); - $syllable = $this->convertString + $this->_explodeString8($this->_data, 2); + $syllable = $this->_convertString (Transform::fromString8($syllable), "iso-8859-1"); } $this->_events[Transform::fromUInt32BE(substr($this->_data, 0, 4))] = @@ -299,11 +300,11 @@ final class ID3_Frame_SYLT extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_language . Transform::toUInt8($this->_format) . Transform::toUInt8($this->_type); @@ -338,7 +339,6 @@ final class ID3_Frame_SYLT extends ID3_Frame } $data .= Transform::toUInt32BE($timestamp); } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/SYTC.php b/src/ID3/Frame/SYTC.php index b2b1d22..1654593 100644 --- a/src/ID3/Frame/SYTC.php +++ b/src/ID3/Frame/SYTC.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -62,7 +63,7 @@ require_once("ID3/Timing.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -141,11 +142,11 @@ final class ID3_Frame_SYTC extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_format); foreach ($this->_events as $timestamp => $tempo) { @@ -155,7 +156,6 @@ final class ID3_Frame_SYTC extends ID3_Frame $data .= Transform::toUInt8($tempo); $data .= Transform::toUInt32BE($timestamp); } - parent::setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/TXXX.php b/src/ID3/Frame/TXXX.php index 1662780..d06fc0f 100644 --- a/src/ID3/Frame/TXXX.php +++ b/src/ID3/Frame/TXXX.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -53,7 +54,7 @@ require_once("ID3/Frame/AbstractText.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -83,28 +84,28 @@ final class ID3_Frame_TXXX extends ID3_Frame_AbstractText switch ($encoding) { case self::UTF16: list($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (array(Transform::fromString16($this->_text)), "utf-16"); break; case self::UTF16BE: list($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (array(Transform::fromString16BE($this->_text)), "utf-16be"); break; case self::UTF8: - list($this->_description, $this->_text) = $this->convertString - ($this->explodeString8($this->_data, 2), "utf-8"); + list($this->_description, $this->_text) = $this->_convertString + ($this->_explodeString8($this->_data, 2), "utf-8"); $this->_text = array($this->_text); break; default: - list($this->_description, $this->_text) = $this->convertString - ($this->explodeString8($this->_data, 2), "iso-8859-1"); + list($this->_description, $this->_text) = $this->_convertString + ($this->_explodeString8($this->_data, 2), "iso-8859-1"); $this->_text = array($this->_text); } } @@ -130,11 +131,11 @@ final class ID3_Frame_TXXX extends ID3_Frame_AbstractText } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding); switch ($this->_encoding) { @@ -152,8 +153,7 @@ final class ID3_Frame_TXXX extends ID3_Frame_AbstractText default: $data .= $this->_description . "\0" . $this->_text[0]; } - $this->setData($data); - return ID3_Frame::__toString(); + return $data; } } diff --git a/src/ID3/Frame/USER.php b/src/ID3/Frame/USER.php index 61903b7..b0b6d6b 100644 --- a/src/ID3/Frame/USER.php +++ b/src/ID3/Frame/USER.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -52,7 +53,7 @@ require_once("ID3/Language.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -91,19 +92,19 @@ final class ID3_Frame_USER extends ID3_Frame switch ($encoding) { case self::UTF16: - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16($this->_data), "utf-16"); break; case self::UTF16BE: - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16BE($this->_data), "utf-16be"); break; case self::UTF8: - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_data), "utf-8"); break; default: - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_data), "iso-8859-1"); } } @@ -180,11 +181,11 @@ final class ID3_Frame_USER extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_language; switch ($this->_encoding) { @@ -200,7 +201,6 @@ final class ID3_Frame_USER extends ID3_Frame default: $data .= $this->_text; } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/USLT.php b/src/ID3/Frame/USLT.php index cad67d6..aeea686 100644 --- a/src/ID3/Frame/USLT.php +++ b/src/ID3/Frame/USLT.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -51,7 +52,7 @@ require_once("ID3/Language.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -94,34 +95,34 @@ final class ID3_Frame_USLT extends ID3_Frame switch ($encoding) { case self::UTF16: list ($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16($this->_text), "utf-16"); break; case self::UTF16BE: list ($this->_description, $this->_text) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString16BE($this->_text), "utf-16be"); break; case self::UTF8: list ($this->_description, $this->_text) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "utf-8"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_text), "utf-8"); break; default: list ($this->_description, $this->_text) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString8($this->_description), "iso-8859-1"); - $this->_text = $this->convertString + $this->_text = $this->_convertString (Transform::fromString8($this->_text), "iso-8859-1"); } } @@ -224,11 +225,11 @@ final class ID3_Frame_USLT extends ID3_Frame } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding) . $this->_language; switch ($this->_encoding) { @@ -246,7 +247,6 @@ final class ID3_Frame_USLT extends ID3_Frame default: $data .= $this->_description . "\0" . $this->_text; } - $this->setData($data); - return parent::__toString(); + return $data; } } diff --git a/src/ID3/Frame/Unknown.php b/src/ID3/Frame/Unknown.php new file mode 100644 index 0000000..d3c6b27 --- /dev/null +++ b/src/ID3/Frame/Unknown.php @@ -0,0 +1,60 @@ + + * @copyright Copyright (c) 2009 The PHP Reader Project Workgroup + * @license http://code.google.com/p/php-reader/wiki/License New BSD License + * @version $Rev$ + */ +final class ID3_Frame_Unknown extends ID3_Frame +{ + /** + * Returns the frame raw data without the header. + * + * @return string + */ + protected function _getData() { return $this->_data; } +} diff --git a/src/ID3/Frame/WXXX.php b/src/ID3/Frame/WXXX.php index ce4463f..67c523d 100644 --- a/src/ID3/Frame/WXXX.php +++ b/src/ID3/Frame/WXXX.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -51,7 +52,7 @@ require_once("ID3/Encoding.php"); * @subpackage ID3 * @author Sven Vollbehr * @author Ryan Butterfield - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -85,28 +86,28 @@ final class ID3_Frame_WXXX extends ID3_Frame_AbstractLink switch ($encoding) { case self::UTF16: list($this->_description, $this->_link) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16($this->_description), "utf-16"); break; case self::UTF16BE: list($this->_description, $this->_link) = - $this->explodeString16($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString16($this->_data, 2); + $this->_description = $this->_convertString (Transform::fromString16BE($this->_description), "utf-16be"); break; case self::UTF8: list($this->_description, $this->_link) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString($this->_description, "utf-8"); + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString($this->_description, "utf-8"); break; default: list($this->_description, $this->_link) = - $this->explodeString8($this->_data, 2); - $this->_description = $this->convertString + $this->_explodeString8($this->_data, 2); + $this->_description = $this->_convertString ($this->_description, "iso-8859-1"); } - $this->_link = implode($this->explodeString8($this->_link, 1), ""); + $this->_link = implode($this->_explodeString8($this->_link, 1), ""); } /** @@ -156,11 +157,11 @@ final class ID3_Frame_WXXX extends ID3_Frame_AbstractLink } /** - * Returns the frame raw data. + * Returns the frame raw data without the header. * * @return string */ - public function __toString() + protected function _getData() { $data = Transform::toUInt8($this->_encoding); switch ($this->_encoding) { @@ -177,7 +178,6 @@ final class ID3_Frame_WXXX extends ID3_Frame_AbstractLink default: $data .= $this->_description . "\0"; } - $this->setData($data . $this->_link); - return ID3_Frame::__toString(); + return $data . $this->_link; } } diff --git a/src/ID3/Header.php b/src/ID3/Header.php index fc79683..cd8c5e6 100644 --- a/src/ID3/Header.php +++ b/src/ID3/Header.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,7 +31,7 @@ * * @package php-reader * @subpackage ID3 - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Id$ */ @@ -46,7 +47,7 @@ require_once("ID3/Object.php"); * @package php-reader * @subpackage ID3 * @author Sven Vollbehr - * @copyright Copyright (c) 2008 The PHP Reader Project Workgroup + * @copyright Copyright (c) 2008-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ @@ -97,7 +98,7 @@ final class ID3_Header extends ID3_Object $this->_version = $options["version"] = $this->_reader->readInt8() + $this->_reader->readInt8() / 10; $this->_flags = $this->_reader->readInt8(); - $this->_size = $this->decodeSynchsafe32($this->_reader->readUInt32BE()); + $this->_size = $this->_decodeSynchsafe32($this->_reader->readUInt32BE()); } /** @@ -159,7 +160,7 @@ final class ID3_Header extends ID3_Object public function setSize($size) { $this->_size = $size; } /** - * Returns the header/footer raw data without the identifier. + * Returns the header/footer data without the identifier. * * @return string */ @@ -168,6 +169,6 @@ final class ID3_Header extends ID3_Object return Transform::toInt8(floor($this->_version)) . Transform::toInt8(($this->_version - floor($this->_version)) * 10) . Transform::toInt8($this->_flags) . - Transform::toUInt32BE($this->encodeSynchsafe32($this->_size)); + Transform::toUInt32BE($this->_encodeSynchsafe32($this->_size)); } } diff --git a/src/ID3/Object.php b/src/ID3/Object.php index 7d39a37..c166fd7 100644 --- a/src/ID3/Object.php +++ b/src/ID3/Object.php @@ -2,7 +2,8 @@ /** * PHP Reader Library * - * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights reserved. + * Copyright (c) 2008-2009 The PHP Reader Project Workgroup. All rights + * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -149,7 +150,7 @@ abstract class ID3_Object * @param integer $val The integer to encode. * @return integer */ - protected final function encodeSynchsafe32($val) + protected final function _encodeSynchsafe32($val) { return ($val & 0x7f) | ($val & 0x3f80) << 1 | ($val & 0x1fc000) << 2 | ($val & 0xfe00000) << 3; @@ -161,7 +162,7 @@ abstract class ID3_Object * @param integer $val The integer to decode * @return integer */ - protected final function decodeSynchsafe32($val) + protected final function _decodeSynchsafe32($val) { return ($val & 0x7f) | ($val & 0x7f00) >> 1 | ($val & 0x7f0000) >> 2 | ($val & 0x7f000000) >> 3; @@ -180,7 +181,7 @@ abstract class ID3_Object * @param string $data The input data. * @return string */ - protected final function encodeUnsynchronisation(&$data) + protected final function _encodeUnsynchronisation(&$data) { $result = ""; for ($i = 0, $j = 0; $i < strlen($data) - 1; $i++) @@ -195,11 +196,11 @@ abstract class ID3_Object /** * Reverses the unsynchronisation scheme from the given data string. * - * @see encodeUnsynchronisation + * @see _encodeUnsynchronisation * @param string $data The input data. * @return string */ - protected final function decodeUnsynchronisation(&$data) + protected final function _decodeUnsynchronisation(&$data) { $result = ""; for ($i = 0, $j = 0; $i < strlen($data) - 1; $i++) @@ -217,7 +218,7 @@ abstract class ID3_Object * @param string $value The input string. * @return Array */ - protected final function explodeString16($value, $limit = null) + protected final function _explodeString16($value, $limit = null) { $i = 0; $array = array(); @@ -244,7 +245,7 @@ abstract class ID3_Object * @param string $value The input string. * @return Array */ - protected final function explodeString8($value, $limit = null) + protected final function _explodeString8($value, $limit = null) { return preg_split("/\\x00/", $value, $limit); } @@ -256,7 +257,7 @@ abstract class ID3_Object * @param string|Array $string * @param string $encoding */ - protected final function convertString($string, $encoding) + protected final function _convertString($string, $encoding) { $target = $this->getOption("encoding", ID3_Encoding::UTF8); switch ($target) { @@ -286,4 +287,11 @@ abstract class ID3_Object $string = iconv($encoding, $target, $string); return $string; } + + /** + * Returns the object data. + * + * @return string + */ + abstract public function __toString(); } diff --git a/src/ID3v2.php b/src/ID3v2.php index dbfaa33..79095f9 100644 --- a/src/ID3v2.php +++ b/src/ID3v2.php @@ -184,8 +184,10 @@ final class ID3v2 require_once($filename); if (class_exists($classname = "ID3_Frame_" . $identifier)) $frame = new $classname($this->_reader, $options); - else - $frame = new ID3_Frame($this->_reader, $options); + else { + require_once("ID3/Frame/Unknown.php"); + $frame = new ID3_Frame_Unknown($this->_reader, $options); + } if (!isset($this->_frames[$frame->getIdentifier()])) $this->_frames[$frame->getIdentifier()] = array(); @@ -246,6 +248,7 @@ final class ID3v2 * Returns true if one ore more frames are present, * false otherwise. * + * @param string $identifier The frame name. * @return boolean */ public function hasFrame($identifier) @@ -271,8 +274,9 @@ final class ID3v2 * * Please note that one may also use the shorthand $obj->identifier to access * the first frame with the identifier given. Wildcards cannot be used with - * the shorthand. + * the shorthand method. * + * @param string $identifier The frame name. * @return Array */ public function getFramesByIdentifier($identifier) @@ -286,6 +290,27 @@ final class ID3v2 $matches[] = $frame; return $matches; } + + /** + * Removes any frames matching the given object identifier. + * + * The identifier may contain wildcard characters "*" and "?". The asterisk + * matches against zero or more characters, and the question mark matches any + * single character. + * + * One may also use the shorthand unset($obj->identifier) to achieve the same + * result. Wildcards cannot be used with the shorthand method. + * + * @param string $identifier The frame name. + */ + public final function removeFramesByIdentifier($identifier) + { + $searchPattern = "/^" . + str_replace(array("*", "?"), array(".*", "."), $identifier) . "$/i"; + foreach ($this->_frames as $identifier => $frames) + if (preg_match($searchPattern, $identifier)) + unset($this->_frames[$identifier]); + } /** * Adds a new frame to the tag and returns it. @@ -301,6 +326,19 @@ final class ID3v2 return $this->_frames[$frame->getIdentifier()][] = $frame; } + /** + * Remove the given frame from the tag. + * + * @param ID3_Frame $frame The frame to remove. + */ + public function removeFrame($frame) + { + if (!$this->hasFrame($frame->getIdentifier())) + foreach ($this->_frames[$frame->getIdentifier()] as $key => $value) + if ($frame === $value) + unset($this->_frames[$frame->getIdentifier()][$key]); + } + /** * Checks whether there is a footer present in the tag. Returns * true if the footer is present, false otherwise.