Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge branch 'feature/3110' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
weierophinney committed Jan 7, 2013
5 parents 0ee86d0 + 2f039d3 + 8677f66 + de6a155 + 86ee531 commit e20a954
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 17 deletions.
29 changes: 23 additions & 6 deletions src/Writer/Extension/ITunes/Entry.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

use Zend\Feed\Writer;
use Zend\Feed\Writer\Extension;
use Zend\Stdlib\StringUtils;
use Zend\Stdlib\StringWrapper\StringWrapperInterface;

/**
* @category Zend
Expand All @@ -33,6 +35,18 @@ class Entry
*/
protected $encoding = 'UTF-8';

/**
* The used string wrapper supporting encoding
*
* @var StringWrapperInterface
*/
protected $stringWrapper;

public function __construct()
{
$this->stringWrapper = StringUtils::getWrapper($this->encoding);
}

/**
* Set feed encoding
*
Expand All @@ -41,7 +55,8 @@ class Entry
*/
public function setEncoding($enc)
{
$this->encoding = $enc;
$this->stringWrapper = StringUtils::getWrapper($enc);
$this->encoding = $enc;
return $this;
}

Expand All @@ -68,7 +83,8 @@ public function setItunesBlock($value)
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
. ' contain alphabetic characters');
}
if (iconv_strlen($value, $this->getEncoding()) > 255) {

if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
. ' contain a maximum of 255 characters');
}
Expand Down Expand Up @@ -98,7 +114,7 @@ public function addItunesAuthors(array $values)
*/
public function addItunesAuthor($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "author" may only'
. ' contain a maximum of 255 characters each');
}
Expand Down Expand Up @@ -160,8 +176,9 @@ public function setItunesKeywords(array $value)
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
. ' contain a maximum of 12 terms');
}

$concat = implode(',', $value);
if (iconv_strlen($concat, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($concat) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
. ' have a concatenated length of 255 chars where terms are delimited'
. ' by a comma');
Expand All @@ -179,7 +196,7 @@ public function setItunesKeywords(array $value)
*/
public function setItunesSubtitle($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "subtitle" may only'
. ' contain a maximum of 255 characters');
}
Expand All @@ -196,7 +213,7 @@ public function setItunesSubtitle($value)
*/
public function setItunesSummary($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 4000) {
if ($this->stringWrapper->strlen($value) > 4000) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "summary" may only'
. ' contain a maximum of 4000 characters');
}
Expand Down
40 changes: 29 additions & 11 deletions src/Writer/Extension/ITunes/Feed.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

use Zend\Feed\Writer;
use Zend\Uri;
use Zend\Stdlib\StringUtils;
use Zend\Stdlib\StringWrapper\StringWrapperInterface;

/**
* @category Zend
Expand All @@ -33,6 +35,21 @@ class Feed
*/
protected $encoding = 'UTF-8';

/**
* The used string wrapper supporting encoding
*
* @var StringWrapperInterface
*/
protected $stringWrapper;

/**
* Constructor
*/
public function __construct()
{
$this->stringWrapper = StringUtils::getWrapper($this->encoding);
}

/**
* Set feed encoding
*
Expand All @@ -41,7 +58,8 @@ class Feed
*/
public function setEncoding($enc)
{
$this->encoding = $enc;
$this->stringWrapper = StringUtils::getWrapper($enc);
$this->encoding = $enc;
return $this;
}

Expand All @@ -68,7 +86,7 @@ public function setItunesBlock($value)
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
. ' contain alphabetic characters');
}
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
. ' contain a maximum of 255 characters');
}
Expand Down Expand Up @@ -99,7 +117,7 @@ public function addItunesAuthors(array $values)
*/
public function addItunesAuthor($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "author" may only'
. ' contain a maximum of 255 characters each');
}
Expand All @@ -124,19 +142,19 @@ public function setItunesCategories(array $values)
}
foreach ($values as $key=>$value) {
if (!is_array($value)) {
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
. ' contain a maximum of 255 characters each');
}
$this->data['categories'][] = $value;
} else {
if (iconv_strlen($key, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($key) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
. ' contain a maximum of 255 characters each');
}
$this->data['categories'][$key] = array();
foreach ($value as $val) {
if (iconv_strlen($val, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($val) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
. ' contain a maximum of 255 characters each');
}
Expand Down Expand Up @@ -221,7 +239,7 @@ public function setItunesKeywords(array $value)
. ' contain a maximum of 12 terms');
}
$concat = implode(',', $value);
if (iconv_strlen($concat, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($concat) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
. ' have a concatenated length of 255 chars where terms are delimited'
. ' by a comma');
Expand Down Expand Up @@ -274,8 +292,8 @@ public function addItunesOwner(array $value)
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" must'
. ' be an array containing keys "name" and "email"');
}
if (iconv_strlen($value['name'], $this->getEncoding()) > 255
|| iconv_strlen($value['email'], $this->getEncoding()) > 255
if ($this->stringWrapper->strlen($value['name']) > 255
|| $this->stringWrapper->strlen($value['email']) > 255
) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" may only'
. ' contain a maximum of 255 characters each for "name" and "email"');
Expand All @@ -296,7 +314,7 @@ public function addItunesOwner(array $value)
*/
public function setItunesSubtitle($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 255) {
if ($this->stringWrapper->strlen($value) > 255) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "subtitle" may only'
. ' contain a maximum of 255 characters');
}
Expand All @@ -313,7 +331,7 @@ public function setItunesSubtitle($value)
*/
public function setItunesSummary($value)
{
if (iconv_strlen($value, $this->getEncoding()) > 4000) {
if ($this->stringWrapper->strlen($value) > 4000) {
throw new Writer\Exception\InvalidArgumentException('invalid parameter: "summary" may only'
. ' contain a maximum of 4000 characters');
}
Expand Down

0 comments on commit e20a954

Please sign in to comment.