688 lines
19 KiB
PHP
688 lines
19 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Zend Framework
|
|
*
|
|
* LICENSE
|
|
*
|
|
* This source file is subject to the new BSD license that is bundled
|
|
* with this package in the file LICENSE.txt.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* http://framework.zend.com/license/new-bsd
|
|
* If you did not receive a copy of the license and are unable to
|
|
* obtain it through the world-wide-web, please send an email
|
|
* to license@zend.com so we can send you a copy immediately.
|
|
*
|
|
* @category Zend
|
|
* @package Zend_Gdata
|
|
* @subpackage Books
|
|
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
* @version $Id: VolumeEntry.php 24593 2012-01-05 20:35:02Z matthew $
|
|
*/
|
|
|
|
/**
|
|
* @see Zend_Gdata_Entry
|
|
*/
|
|
require_once 'Zend/Gdata/Entry.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_Extension_Comments
|
|
*/
|
|
require_once 'Zend/Gdata/Extension/Comments.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Creator
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Creator.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Date
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Date.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Description
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Description.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_Books_Extension_Embeddability
|
|
*/
|
|
require_once 'Zend/Gdata/Books/Extension/Embeddability.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Format
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Format.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Identifier
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Identifier.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Language
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Language.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Publisher
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Publisher.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_Extension_Rating
|
|
*/
|
|
require_once 'Zend/Gdata/Extension/Rating.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_Books_Extension_Review
|
|
*/
|
|
require_once 'Zend/Gdata/Books/Extension/Review.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Subject
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Subject.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_DublinCore_Extension_Title
|
|
*/
|
|
require_once 'Zend/Gdata/DublinCore/Extension/Title.php';
|
|
|
|
/**
|
|
* @see Zend_Gdata_Books_Extension_Viewability
|
|
*/
|
|
require_once 'Zend/Gdata/Books/Extension/Viewability.php';
|
|
|
|
/**
|
|
* Describes an entry in a feed of Book Search volumes
|
|
*
|
|
* @category Zend
|
|
* @package Zend_Gdata
|
|
* @subpackage Books
|
|
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
*/
|
|
class Zend_Gdata_Books_VolumeEntry extends Zend_Gdata_Entry
|
|
{
|
|
|
|
const THUMBNAIL_LINK_REL = 'http://schemas.google.com/books/2008/thumbnail';
|
|
const PREVIEW_LINK_REL = 'http://schemas.google.com/books/2008/preview';
|
|
const INFO_LINK_REL = 'http://schemas.google.com/books/2008/info';
|
|
const ANNOTATION_LINK_REL = 'http://schemas.google.com/books/2008/annotation';
|
|
|
|
protected $_comments = null;
|
|
protected $_creators = array();
|
|
protected $_dates = array();
|
|
protected $_descriptions = array();
|
|
protected $_embeddability = null;
|
|
protected $_formats = array();
|
|
protected $_identifiers = array();
|
|
protected $_languages = array();
|
|
protected $_publishers = array();
|
|
protected $_rating = null;
|
|
protected $_review = null;
|
|
protected $_subjects = array();
|
|
protected $_titles = array();
|
|
protected $_viewability = null;
|
|
|
|
/**
|
|
* Constructor for Zend_Gdata_Books_VolumeEntry which
|
|
* Describes an entry in a feed of Book Search volumes
|
|
*
|
|
* @param DOMElement $element (optional) DOMElement from which this
|
|
* object should be constructed.
|
|
*/
|
|
public function __construct($element = null)
|
|
{
|
|
$this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
|
|
parent::__construct($element);
|
|
}
|
|
|
|
/**
|
|
* Retrieves DOMElement which corresponds to this element and all
|
|
* child properties. This is used to build this object back into a DOM
|
|
* and eventually XML text for sending to the server upon updates, or
|
|
* for application storage/persistance.
|
|
*
|
|
* @param DOMDocument $doc The DOMDocument used to construct DOMElements
|
|
* @return DOMElement The DOMElement representing this element and all
|
|
* child properties.
|
|
*/
|
|
public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
|
|
{
|
|
$element = parent::getDOM($doc);
|
|
if ($this->_creators !== null) {
|
|
foreach ($this->_creators as $creators) {
|
|
$element->appendChild($creators->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_dates !== null) {
|
|
foreach ($this->_dates as $dates) {
|
|
$element->appendChild($dates->getDOM($element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_descriptions !== null) {
|
|
foreach ($this->_descriptions as $descriptions) {
|
|
$element->appendChild($descriptions->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_formats !== null) {
|
|
foreach ($this->_formats as $formats) {
|
|
$element->appendChild($formats->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_identifiers !== null) {
|
|
foreach ($this->_identifiers as $identifiers) {
|
|
$element->appendChild($identifiers->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_languages !== null) {
|
|
foreach ($this->_languages as $languages) {
|
|
$element->appendChild($languages->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_publishers !== null) {
|
|
foreach ($this->_publishers as $publishers) {
|
|
$element->appendChild($publishers->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_subjects !== null) {
|
|
foreach ($this->_subjects as $subjects) {
|
|
$element->appendChild($subjects->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_titles !== null) {
|
|
foreach ($this->_titles as $titles) {
|
|
$element->appendChild($titles->getDOM($element->ownerDocument));
|
|
}
|
|
}
|
|
if ($this->_comments !== null) {
|
|
$element->appendChild($this->_comments->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
if ($this->_embeddability !== null) {
|
|
$element->appendChild($this->_embeddability->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
if ($this->_rating !== null) {
|
|
$element->appendChild($this->_rating->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
if ($this->_review !== null) {
|
|
$element->appendChild($this->_review->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
if ($this->_viewability !== null) {
|
|
$element->appendChild($this->_viewability->getDOM(
|
|
$element->ownerDocument));
|
|
}
|
|
return $element;
|
|
}
|
|
|
|
/**
|
|
* Creates individual objects of the appropriate type and stores
|
|
* them in this object based upon DOM data.
|
|
*
|
|
* @param DOMNode $child The DOMNode to process.
|
|
*/
|
|
protected function takeChildFromDOM($child)
|
|
{
|
|
$absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
|
|
switch ($absoluteNodeName) {
|
|
case $this->lookupNamespace('dc') . ':' . 'creator':
|
|
$creators = new Zend_Gdata_DublinCore_Extension_Creator();
|
|
$creators->transferFromDOM($child);
|
|
$this->_creators[] = $creators;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'date':
|
|
$dates = new Zend_Gdata_DublinCore_Extension_Date();
|
|
$dates->transferFromDOM($child);
|
|
$this->_dates[] = $dates;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'description':
|
|
$descriptions = new Zend_Gdata_DublinCore_Extension_Description();
|
|
$descriptions->transferFromDOM($child);
|
|
$this->_descriptions[] = $descriptions;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'format':
|
|
$formats = new Zend_Gdata_DublinCore_Extension_Format();
|
|
$formats->transferFromDOM($child);
|
|
$this->_formats[] = $formats;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'identifier':
|
|
$identifiers = new Zend_Gdata_DublinCore_Extension_Identifier();
|
|
$identifiers->transferFromDOM($child);
|
|
$this->_identifiers[] = $identifiers;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'language':
|
|
$languages = new Zend_Gdata_DublinCore_Extension_Language();
|
|
$languages->transferFromDOM($child);
|
|
$this->_languages[] = $languages;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'publisher':
|
|
$publishers = new Zend_Gdata_DublinCore_Extension_Publisher();
|
|
$publishers->transferFromDOM($child);
|
|
$this->_publishers[] = $publishers;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'subject':
|
|
$subjects = new Zend_Gdata_DublinCore_Extension_Subject();
|
|
$subjects->transferFromDOM($child);
|
|
$this->_subjects[] = $subjects;
|
|
break;
|
|
case $this->lookupNamespace('dc') . ':' . 'title':
|
|
$titles = new Zend_Gdata_DublinCore_Extension_Title();
|
|
$titles->transferFromDOM($child);
|
|
$this->_titles[] = $titles;
|
|
break;
|
|
case $this->lookupNamespace('gd') . ':' . 'comments':
|
|
$comments = new Zend_Gdata_Extension_Comments();
|
|
$comments->transferFromDOM($child);
|
|
$this->_comments = $comments;
|
|
break;
|
|
case $this->lookupNamespace('gbs') . ':' . 'embeddability':
|
|
$embeddability = new Zend_Gdata_Books_Extension_Embeddability();
|
|
$embeddability->transferFromDOM($child);
|
|
$this->_embeddability = $embeddability;
|
|
break;
|
|
case $this->lookupNamespace('gd') . ':' . 'rating':
|
|
$rating = new Zend_Gdata_Extension_Rating();
|
|
$rating->transferFromDOM($child);
|
|
$this->_rating = $rating;
|
|
break;
|
|
case $this->lookupNamespace('gbs') . ':' . 'review':
|
|
$review = new Zend_Gdata_Books_Extension_Review();
|
|
$review->transferFromDOM($child);
|
|
$this->_review = $review;
|
|
break;
|
|
case $this->lookupNamespace('gbs') . ':' . 'viewability':
|
|
$viewability = new Zend_Gdata_Books_Extension_Viewability();
|
|
$viewability->transferFromDOM($child);
|
|
$this->_viewability = $viewability;
|
|
break;
|
|
default:
|
|
parent::takeChildFromDOM($child);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the Comments class
|
|
*
|
|
* @return Zend_Gdata_Extension_Comments|null The comments
|
|
*/
|
|
public function getComments()
|
|
{
|
|
return $this->_comments;
|
|
}
|
|
|
|
/**
|
|
* Returns the creators
|
|
*
|
|
* @return array The creators
|
|
*/
|
|
public function getCreators()
|
|
{
|
|
return $this->_creators;
|
|
}
|
|
|
|
/**
|
|
* Returns the dates
|
|
*
|
|
* @return array The dates
|
|
*/
|
|
public function getDates()
|
|
{
|
|
return $this->_dates;
|
|
}
|
|
|
|
/**
|
|
* Returns the descriptions
|
|
*
|
|
* @return array The descriptions
|
|
*/
|
|
public function getDescriptions()
|
|
{
|
|
return $this->_descriptions;
|
|
}
|
|
|
|
/**
|
|
* Returns the embeddability
|
|
*
|
|
* @return Zend_Gdata_Books_Extension_Embeddability|null The embeddability
|
|
*/
|
|
public function getEmbeddability()
|
|
{
|
|
return $this->_embeddability;
|
|
}
|
|
|
|
/**
|
|
* Returns the formats
|
|
*
|
|
* @return array The formats
|
|
*/
|
|
public function getFormats()
|
|
{
|
|
return $this->_formats;
|
|
}
|
|
|
|
/**
|
|
* Returns the identifiers
|
|
*
|
|
* @return array The identifiers
|
|
*/
|
|
public function getIdentifiers()
|
|
{
|
|
return $this->_identifiers;
|
|
}
|
|
|
|
/**
|
|
* Returns the languages
|
|
*
|
|
* @return array The languages
|
|
*/
|
|
public function getLanguages()
|
|
{
|
|
return $this->_languages;
|
|
}
|
|
|
|
/**
|
|
* Returns the publishers
|
|
*
|
|
* @return array The publishers
|
|
*/
|
|
public function getPublishers()
|
|
{
|
|
return $this->_publishers;
|
|
}
|
|
|
|
/**
|
|
* Returns the rating
|
|
*
|
|
* @return Zend_Gdata_Extension_Rating|null The rating
|
|
*/
|
|
public function getRating()
|
|
{
|
|
return $this->_rating;
|
|
}
|
|
|
|
/**
|
|
* Returns the review
|
|
*
|
|
* @return Zend_Gdata_Books_Extension_Review|null The review
|
|
*/
|
|
public function getReview()
|
|
{
|
|
return $this->_review;
|
|
}
|
|
|
|
/**
|
|
* Returns the subjects
|
|
*
|
|
* @return array The subjects
|
|
*/
|
|
public function getSubjects()
|
|
{
|
|
return $this->_subjects;
|
|
}
|
|
|
|
/**
|
|
* Returns the titles
|
|
*
|
|
* @return array The titles
|
|
*/
|
|
public function getTitles()
|
|
{
|
|
return $this->_titles;
|
|
}
|
|
|
|
/**
|
|
* Returns the viewability
|
|
*
|
|
* @return Zend_Gdata_Books_Extension_Viewability|null The viewability
|
|
*/
|
|
public function getViewability()
|
|
{
|
|
return $this->_viewability;
|
|
}
|
|
|
|
/**
|
|
* Sets the Comments class
|
|
*
|
|
* @param Zend_Gdata_Extension_Comments|null $comments Comments class
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setComments($comments)
|
|
{
|
|
$this->_comments = $comments;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the creators
|
|
*
|
|
* @param array $creators Creators|null
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setCreators($creators)
|
|
{
|
|
$this->_creators = $creators;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the dates
|
|
*
|
|
* @param array $dates dates
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setDates($dates)
|
|
{
|
|
$this->_dates = $dates;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the descriptions
|
|
*
|
|
* @param array $descriptions descriptions
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setDescriptions($descriptions)
|
|
{
|
|
$this->_descriptions = $descriptions;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the embeddability
|
|
*
|
|
* @param Zend_Gdata_Books_Extension_Embeddability|null $embeddability
|
|
* embeddability
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setEmbeddability($embeddability)
|
|
{
|
|
$this->_embeddability = $embeddability;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the formats
|
|
*
|
|
* @param array $formats formats
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setFormats($formats)
|
|
{
|
|
$this->_formats = $formats;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the identifiers
|
|
*
|
|
* @param array $identifiers identifiers
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setIdentifiers($identifiers)
|
|
{
|
|
$this->_identifiers = $identifiers;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the languages
|
|
*
|
|
* @param array $languages languages
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setLanguages($languages)
|
|
{
|
|
$this->_languages = $languages;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the publishers
|
|
*
|
|
* @param array $publishers publishers
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setPublishers($publishers)
|
|
{
|
|
$this->_publishers = $publishers;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the rating
|
|
*
|
|
* @param Zend_Gdata_Extension_Rating|null $rating rating
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setRating($rating)
|
|
{
|
|
$this->_rating = $rating;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the review
|
|
*
|
|
* @param Zend_Gdata_Books_Extension_Review|null $review review
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setReview($review)
|
|
{
|
|
$this->_review = $review;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the subjects
|
|
*
|
|
* @param array $subjects subjects
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setSubjects($subjects)
|
|
{
|
|
$this->_subjects = $subjects;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the titles
|
|
*
|
|
* @param array $titles titles
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setTitles($titles)
|
|
{
|
|
$this->_titles = $titles;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Sets the viewability
|
|
*
|
|
* @param Zend_Gdata_Books_Extension_Viewability|null $viewability
|
|
* viewability
|
|
* @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
|
|
*/
|
|
public function setViewability($viewability)
|
|
{
|
|
$this->_viewability = $viewability;
|
|
return $this;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the volume ID based upon the atom:id value
|
|
*
|
|
* @return string The volume ID
|
|
* @throws Zend_Gdata_App_Exception
|
|
*/
|
|
public function getVolumeId()
|
|
{
|
|
$fullId = $this->getId()->getText();
|
|
$position = strrpos($fullId, '/');
|
|
if ($position === false) {
|
|
require_once 'Zend/Gdata/App/Exception.php';
|
|
throw new Zend_Gdata_App_Exception('Slash not found in atom:id');
|
|
} else {
|
|
return substr($fullId, strrpos($fullId,'/') + 1);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets the thumbnail link
|
|
*
|
|
* @return Zend_Gdata_App_Extension_link|null The thumbnail link
|
|
*/
|
|
public function getThumbnailLink()
|
|
{
|
|
return $this->getLink(self::THUMBNAIL_LINK_REL);
|
|
}
|
|
|
|
/**
|
|
* Gets the preview link
|
|
*
|
|
* @return Zend_Gdata_App_Extension_Link|null The preview link
|
|
*/
|
|
public function getPreviewLink()
|
|
{
|
|
return $this->getLink(self::PREVIEW_LINK_REL);
|
|
}
|
|
|
|
/**
|
|
* Gets the info link
|
|
*
|
|
* @return Zend_Gdata_App_Extension_Link|null The info link
|
|
*/
|
|
public function getInfoLink()
|
|
{
|
|
return $this->getLink(self::INFO_LINK_REL);
|
|
}
|
|
|
|
/**
|
|
* Gets the annotations link
|
|
*
|
|
* @return Zend_Gdata_App_Extension_Link|null The annotations link
|
|
*/
|
|
public function getAnnotationLink()
|
|
{
|
|
return $this->getLink(self::ANNOTATION_LINK_REL);
|
|
}
|
|
|
|
}
|