<?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 [email protected] so we can send you a copy immediately. * * @category Zend * @package Zend_Gdata * @subpackage Books * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id$ */ /** * @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-2014 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); } }