From 06f945f27840b53e57795dadbc38e76f7e11ab1c Mon Sep 17 00:00:00 2001 From: Horus3 Date: Mon, 24 Feb 2014 16:42:14 +0100 Subject: init --- zend/library/Zend/Gdata/Entry.php | 132 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 zend/library/Zend/Gdata/Entry.php (limited to 'zend/library/Zend/Gdata/Entry.php') diff --git a/zend/library/Zend/Gdata/Entry.php b/zend/library/Zend/Gdata/Entry.php new file mode 100644 index 0000000..fec1fe4 --- /dev/null +++ b/zend/library/Zend/Gdata/Entry.php @@ -0,0 +1,132 @@ +registerAllNamespaces(Zend_Gdata::$namespaces); + parent::__construct($element); + } + + public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + // ETags are special. We only support them in protocol >= 2.X. + // This will be duplicated by the HTTP ETag header. + if ($majorVersion >= 2) { + if ($this->_etag != null) { + $element->setAttributeNS($this->lookupNamespace('gd'), + 'gd:etag', + $this->_etag); + } + } + return $element; + } + + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('atom') . ':' . 'content': + $content = new Zend_Gdata_App_Extension_Content(); + $content->transferFromDOM($child); + $this->_content = $content; + break; + case $this->lookupNamespace('atom') . ':' . 'published': + $published = new Zend_Gdata_App_Extension_Published(); + $published->transferFromDOM($child); + $this->_published = $published; + break; + case $this->lookupNamespace('atom') . ':' . 'source': + $source = new Zend_Gdata_App_Extension_Source(); + $source->transferFromDOM($child); + $this->_source = $source; + break; + case $this->lookupNamespace('atom') . ':' . 'summary': + $summary = new Zend_Gdata_App_Extension_Summary(); + $summary->transferFromDOM($child); + $this->_summary = $summary; + break; + case $this->lookupNamespace('app') . ':' . 'control': + $control = new Zend_Gdata_App_Extension_Control(); + $control->transferFromDOM($child); + $this->_control = $control; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and value are + * stored in an array. + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + switch ($attribute->localName) { + case 'etag': + // ETags are special, since they can be conveyed by either the + // HTTP ETag header or as an XML attribute. + $etag = $attribute->nodeValue; + if ($this->_etag === null) { + $this->_etag = $etag; + } + elseif ($this->_etag != $etag) { + require_once('Zend/Gdata/App/IOException.php'); + throw new Zend_Gdata_App_IOException("ETag mismatch"); + } + break; + default: + parent::takeAttributeFromDOM($attribute); + break; + } + } + +} -- cgit v1.2.3