source: extensions/Google2Piwigo/include/Zend/Gdata/App/FeedEntryParent.php @ 17475

Revision 17475, 20.8 KB checked in by mistic100, 7 years ago (diff)

new extension: Google2Piwigo

Line 
1<?php
2
3/**
4 * Zend Framework
5 *
6 * LICENSE
7 *
8 * This source file is subject to the new BSD license that is bundled
9 * with this package in the file LICENSE.txt.
10 * It is also available through the world-wide-web at this URL:
11 * http://framework.zend.com/license/new-bsd
12 * If you did not receive a copy of the license and are unable to
13 * obtain it through the world-wide-web, please send an email
14 * to license@zend.com so we can send you a copy immediately.
15 *
16 * @category   Zend
17 * @package    Zend_Gdata
18 * @subpackage App
19 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
20 * @license    http://framework.zend.com/license/new-bsd     New BSD License
21 * @version    $Id: FeedEntryParent.php 24594 2012-01-05 21:27:01Z matthew $
22 */
23
24/**
25 * @see Zend_Gdata_App_Extension_Element
26*/
27require_once 'Zend/Gdata/App/Extension/Element.php';
28
29/**
30 * @see Zend_Gdata_App_Extension_Author
31*/
32require_once 'Zend/Gdata/App/Extension/Author.php';
33
34/**
35 * @see Zend_Gdata_App_Extension_Category
36*/
37require_once 'Zend/Gdata/App/Extension/Category.php';
38
39/**
40 * @see Zend_Gdata_App_Extension_Contributor
41*/
42require_once 'Zend/Gdata/App/Extension/Contributor.php';
43
44/**
45 * @see Zend_Gdata_App_Extension_Id
46 */
47require_once 'Zend/Gdata/App/Extension/Id.php';
48
49/**
50 * @see Zend_Gdata_App_Extension_Link
51 */
52require_once 'Zend/Gdata/App/Extension/Link.php';
53
54/**
55 * @see Zend_Gdata_App_Extension_Rights
56 */
57require_once 'Zend/Gdata/App/Extension/Rights.php';
58
59/**
60 * @see Zend_Gdata_App_Extension_Title
61 */
62require_once 'Zend/Gdata/App/Extension/Title.php';
63
64/**
65 * @see Zend_Gdata_App_Extension_Updated
66 */
67require_once 'Zend/Gdata/App/Extension/Updated.php';
68
69/**
70 * Zend_Version
71 */
72require_once 'Zend/Version.php';
73
74/**
75 * Abstract class for common functionality in entries and feeds
76 *
77 * @category   Zend
78 * @package    Zend_Gdata
79 * @subpackage App
80 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
81 * @license    http://framework.zend.com/license/new-bsd     New BSD License
82 */
83abstract class Zend_Gdata_App_FeedEntryParent extends Zend_Gdata_App_Base
84{
85    /**
86     * Service instance used to make network requests.
87     *
88     * @see setService(), getService()
89     */
90    protected $_service = null;
91
92    /**
93     * The HTTP ETag associated with this entry. Used for optimistic
94     * concurrency in protoco v2 or greater.
95     *
96     * @var string|null
97     */
98    protected $_etag = NULL;
99
100    protected $_author = array();
101    protected $_category = array();
102    protected $_contributor = array();
103    protected $_id = null;
104    protected $_link = array();
105    protected $_rights = null;
106    protected $_title = null;
107    protected $_updated = null;
108
109    /**
110      * Indicates the major protocol version that should be used.
111      * At present, recognized values are either 1 or 2. However, any integer
112      * value >= 1 is considered valid.
113      *
114      * @see setMajorProtocolVersion()
115      * @see getMajorProtocolVersion()
116      */
117    protected $_majorProtocolVersion = 1;
118
119    /**
120      * Indicates the minor protocol version that should be used. Can be set
121      * to either an integer >= 0, or NULL if no minor version should be sent
122      * to the server.
123      *
124      * @see setMinorProtocolVersion()
125      * @see getMinorProtocolVersion()
126      */
127    protected $_minorProtocolVersion = null;
128
129    /**
130     * Constructs a Feed or Entry
131     */
132    public function __construct($element = null)
133    {
134        if (!($element instanceof DOMElement)) {
135            if ($element) {
136                $this->transferFromXML($element);
137            }
138        } else {
139            $this->transferFromDOM($element);
140        }
141    }
142
143    /**
144     * Set the HTTP client instance
145     *
146     * Sets the HTTP client object to use for retrieving the feed.
147     *
148     * @deprecated Deprecated as of Zend Framework 1.7. Use
149     *             setService() instead.
150     * @param  Zend_Http_Client $httpClient
151     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
152     */
153    public function setHttpClient(Zend_Http_Client $httpClient)
154    {
155        if (!$this->_service) {
156            $this->_service = new Zend_Gdata_App();
157        }
158        $this->_service->setHttpClient($httpClient);
159        return $this;
160    }
161
162    /**
163     * Gets the HTTP client object. If none is set, a new Zend_Http_Client
164     * will be used.
165     *
166     * @deprecated Deprecated as of Zend Framework 1.7. Use
167     *             getService() instead.
168     * @return Zend_Http_Client_Abstract
169     */
170    public function getHttpClient()
171    {
172        if (!$this->_service) {
173            $this->_service = new Zend_Gdata_App();
174        }
175        $client = $this->_service->getHttpClient();
176        return $client;
177    }
178
179    /**
180     * Set the active service instance for this object. This will be used to
181     * perform network requests, such as when calling save() and delete().
182     *
183     * @param Zend_Gdata_App $instance The new service instance.
184     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface.
185     */
186    public function setService($instance)
187    {
188        $this->_service = $instance;
189        return $this;
190    }
191
192    /**
193     * Get the active service instance for this object. This will be used to
194     * perform network requests, such as when calling save() and delete().
195     *
196     * @return Zend_Gdata_App|null The current service instance, or null if
197     *         not set.
198     */
199    public function getService()
200    {
201        return $this->_service;
202    }
203
204    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
205    {
206        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
207        foreach ($this->_author as $author) {
208            $element->appendChild($author->getDOM($element->ownerDocument));
209        }
210        foreach ($this->_category as $category) {
211            $element->appendChild($category->getDOM($element->ownerDocument));
212        }
213        foreach ($this->_contributor as $contributor) {
214            $element->appendChild($contributor->getDOM($element->ownerDocument));
215        }
216        if ($this->_id != null) {
217            $element->appendChild($this->_id->getDOM($element->ownerDocument));
218        }
219        foreach ($this->_link as $link) {
220            $element->appendChild($link->getDOM($element->ownerDocument));
221        }
222        if ($this->_rights != null) {
223            $element->appendChild($this->_rights->getDOM($element->ownerDocument));
224        }
225        if ($this->_title != null) {
226            $element->appendChild($this->_title->getDOM($element->ownerDocument));
227        }
228        if ($this->_updated != null) {
229            $element->appendChild($this->_updated->getDOM($element->ownerDocument));
230        }
231        return $element;
232    }
233
234    protected function takeChildFromDOM($child)
235    {
236        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
237        switch ($absoluteNodeName) {
238        case $this->lookupNamespace('atom') . ':' . 'author':
239            $author = new Zend_Gdata_App_Extension_Author();
240            $author->transferFromDOM($child);
241            $this->_author[] = $author;
242            break;
243        case $this->lookupNamespace('atom') . ':' . 'category':
244            $category = new Zend_Gdata_App_Extension_Category();
245            $category->transferFromDOM($child);
246            $this->_category[] = $category;
247            break;
248        case $this->lookupNamespace('atom') . ':' . 'contributor':
249            $contributor = new Zend_Gdata_App_Extension_Contributor();
250            $contributor->transferFromDOM($child);
251            $this->_contributor[] = $contributor;
252            break;
253        case $this->lookupNamespace('atom') . ':' . 'id':
254            $id = new Zend_Gdata_App_Extension_Id();
255            $id->transferFromDOM($child);
256            $this->_id = $id;
257            break;
258        case $this->lookupNamespace('atom') . ':' . 'link':
259            $link = new Zend_Gdata_App_Extension_Link();
260            $link->transferFromDOM($child);
261            $this->_link[] = $link;
262            break;
263        case $this->lookupNamespace('atom') . ':' . 'rights':
264            $rights = new Zend_Gdata_App_Extension_Rights();
265            $rights->transferFromDOM($child);
266            $this->_rights = $rights;
267            break;
268        case $this->lookupNamespace('atom') . ':' . 'title':
269            $title = new Zend_Gdata_App_Extension_Title();
270            $title->transferFromDOM($child);
271            $this->_title = $title;
272            break;
273        case $this->lookupNamespace('atom') . ':' . 'updated':
274            $updated = new Zend_Gdata_App_Extension_Updated();
275            $updated->transferFromDOM($child);
276            $this->_updated = $updated;
277            break;
278        default:
279            parent::takeChildFromDOM($child);
280            break;
281        }
282    }
283
284    /**
285     * @return Zend_Gdata_App_Extension_Author
286     */
287    public function getAuthor()
288    {
289        return $this->_author;
290    }
291
292    /**
293     * Sets the list of the authors of this feed/entry.  In an atom feed, each
294     * author is represented by an atom:author element
295     *
296     * @param array $value
297     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
298     */
299    public function setAuthor($value)
300    {
301        $this->_author = $value;
302        return $this;
303    }
304
305    /**
306     * Returns the array of categories that classify this feed/entry.  Each
307     * category is represented in an atom feed by an atom:category element.
308     *
309     * @return array Array of Zend_Gdata_App_Extension_Category
310     */
311    public function getCategory()
312    {
313        return $this->_category;
314    }
315
316    /**
317     * Sets the array of categories that classify this feed/entry.  Each
318     * category is represented in an atom feed by an atom:category element.
319     *
320     * @param array $value Array of Zend_Gdata_App_Extension_Category
321     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
322     */
323    public function setCategory($value)
324    {
325        $this->_category = $value;
326        return $this;
327    }
328
329    /**
330     * Returns the array of contributors to this feed/entry.  Each contributor
331     * is represented in an atom feed by an atom:contributor XML element
332     *
333     * @return array An array of Zend_Gdata_App_Extension_Contributor
334     */
335    public function getContributor()
336    {
337        return $this->_contributor;
338    }
339
340    /**
341     * Sets the array of contributors to this feed/entry.  Each contributor
342     * is represented in an atom feed by an atom:contributor XML element
343     *
344     * @param array $value
345     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
346     */
347    public function setContributor($value)
348    {
349        $this->_contributor = $value;
350        return $this;
351    }
352
353    /**
354     * @return Zend_Gdata_App_Extension_Id
355     */
356    public function getId()
357    {
358        return $this->_id;
359    }
360
361    /**
362     * @param Zend_Gdata_App_Extension_Id $value
363     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
364     */
365    public function setId($value)
366    {
367        $this->_id = $value;
368        return $this;
369    }
370
371    /**
372     * Given a particular 'rel' value, this method returns a matching
373     * Zend_Gdata_App_Extension_Link element.  If the 'rel' value
374     * is not provided, the full array of Zend_Gdata_App_Extension_Link
375     * elements is returned.  In an atom feed, each link is represented
376     * by an atom:link element.  The 'rel' value passed to this function
377     * is the atom:link/@rel attribute.  Example rel values include 'self',
378     * 'edit', and 'alternate'.
379     *
380     * @param string $rel The rel value of the link to be found.  If null,
381     *     the array of Zend_Gdata_App_Extension_link elements is returned
382     * @return mixed Either a single Zend_Gdata_App_Extension_link element,
383     *     an array of the same or null is returned depending on the rel value
384     *     supplied as the argument to this function
385     */
386    public function getLink($rel = null)
387    {
388        if ($rel == null) {
389            return $this->_link;
390        } else {
391            foreach ($this->_link as $link) {
392                if ($link->rel == $rel) {
393                    return $link;
394                }
395            }
396            return null;
397        }
398    }
399
400    /**
401     * Returns the Zend_Gdata_App_Extension_Link element which represents
402     * the URL used to edit this resource.  This link is in the atom feed/entry
403     * as an atom:link with a rel attribute value of 'edit'.
404     *
405     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
406     */
407    public function getEditLink()
408    {
409        return $this->getLink('edit');
410    }
411
412    /**
413     * Returns the Zend_Gdata_App_Extension_Link element which represents
414     * the URL used to retrieve the next chunk of results when paging through
415     * a feed.  This link is in the atom feed as an atom:link with a
416     * rel attribute value of 'next'.
417     *
418     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
419     */
420    public function getNextLink()
421    {
422        return $this->getLink('next');
423    }
424
425    /**
426     * Returns the Zend_Gdata_App_Extension_Link element which represents
427     * the URL used to retrieve the previous chunk of results when paging
428     * through a feed.  This link is in the atom feed as an atom:link with a
429     * rel attribute value of 'previous'.
430     *
431     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
432     */
433    public function getPreviousLink()
434    {
435        return $this->getLink('previous');
436    }
437
438    /**
439     * @return Zend_Gdata_App_Extension_Link
440     */
441    public function getLicenseLink()
442    {
443        return $this->getLink('license');
444    }
445
446    /**
447     * Returns the Zend_Gdata_App_Extension_Link element which represents
448     * the URL used to retrieve the entry or feed represented by this object
449     * This link is in the atom feed/entry as an atom:link with a
450     * rel attribute value of 'self'.
451     *
452     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
453     */
454    public function getSelfLink()
455    {
456        return $this->getLink('self');
457    }
458
459    /**
460     * Returns the Zend_Gdata_App_Extension_Link element which represents
461     * the URL for an alternate view of the data represented by this feed or
462     * entry.  This alternate view is commonly a user-facing webpage, blog
463     * post, etc.  The MIME type for the data at the URL is available from the
464     * returned Zend_Gdata_App_Extension_Link element.
465     * This link is in the atom feed/entry as an atom:link with a
466     * rel attribute value of 'self'.
467     *
468     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
469     */
470    public function getAlternateLink()
471    {
472        return $this->getLink('alternate');
473    }
474
475    /**
476     * @param array $value The array of Zend_Gdata_App_Extension_Link elements
477     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
478     */
479    public function setLink($value)
480    {
481        $this->_link = $value;
482        return $this;
483    }
484
485    /**
486     * @return Zend_Gdata_AppExtension_Rights
487     */
488    public function getRights()
489    {
490        return $this->_rights;
491    }
492
493    /**
494     * @param Zend_Gdata_App_Extension_Rights $value
495     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
496     */
497    public function setRights($value)
498    {
499        $this->_rights = $value;
500        return $this;
501    }
502
503    /**
504     * Returns the title of this feed or entry.  The title is an extremely
505     * short textual representation of this resource and is found as
506     * an atom:title element in a feed or entry
507     *
508     * @return Zend_Gdata_App_Extension_Title
509     */
510    public function getTitle()
511    {
512        return $this->_title;
513    }
514
515    /**
516     * Returns a string representation of the title of this feed or entry.
517     * The title is an extremely short textual representation of this
518     * resource and is found as an atom:title element in a feed or entry
519     *
520     * @return string
521     */
522    public function getTitleValue()
523    {
524        if (($titleObj = $this->getTitle()) != null) {
525            return $titleObj->getText();
526        } else {
527            return null;
528        }
529    }
530
531    /**
532     * Returns the title of this feed or entry.  The title is an extremely
533     * short textual representation of this resource and is found as
534     * an atom:title element in a feed or entry
535     *
536     * @param Zend_Gdata_App_Extension_Title $value
537     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
538     */
539    public function setTitle($value)
540    {
541        $this->_title = $value;
542        return $this;
543    }
544
545    /**
546     * @return Zend_Gdata_App_Extension_Updated
547     */
548    public function getUpdated()
549    {
550        return $this->_updated;
551    }
552
553    /**
554     * @param Zend_Gdata_App_Extension_Updated $value
555     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
556     */
557    public function setUpdated($value)
558    {
559        $this->_updated = $value;
560        return $this;
561    }
562
563    /**
564     * Set the Etag for the current entry to $value. Setting $value to null
565     * unsets the Etag.
566     *
567     * @param string|null $value
568     * @return Zend_Gdata_App_Entry Provides a fluent interface
569     */
570    public function setEtag($value) {
571        $this->_etag = $value;
572        return $this;
573    }
574
575    /**
576     * Return the Etag for the current entry, or null if not set.
577     *
578     * @return string|null
579     */
580    public function getEtag() {
581        return $this->_etag;
582    }
583
584    /**
585     * Set the major protocol version that should be used. Values < 1
586     * (excluding NULL) will cause a Zend_Gdata_App_InvalidArgumentException
587     * to be thrown.
588     *
589     * @see _majorProtocolVersion
590     * @param (int|NULL) $value The major protocol version to use.
591     * @throws Zend_Gdata_App_InvalidArgumentException
592     */
593    public function setMajorProtocolVersion($value)
594    {
595        if (!($value >= 1) && ($value !== null)) {
596            require_once('Zend/Gdata/App/InvalidArgumentException.php');
597            throw new Zend_Gdata_App_InvalidArgumentException(
598                    'Major protocol version must be >= 1');
599        }
600        $this->_majorProtocolVersion = $value;
601    }
602
603    /**
604     * Get the major protocol version that is in use.
605     *
606     * @see _majorProtocolVersion
607     * @return (int|NULL) The major protocol version in use.
608     */
609    public function getMajorProtocolVersion()
610    {
611        return $this->_majorProtocolVersion;
612    }
613
614    /**
615     * Set the minor protocol version that should be used. If set to NULL, no
616     * minor protocol version will be sent to the server. Values < 0 will
617     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
618     *
619     * @see _minorProtocolVersion
620     * @param (int|NULL) $value The minor protocol version to use.
621     * @throws Zend_Gdata_App_InvalidArgumentException
622     */
623    public function setMinorProtocolVersion($value)
624    {
625        if (!($value >= 0)) {
626            require_once('Zend/Gdata/App/InvalidArgumentException.php');
627            throw new Zend_Gdata_App_InvalidArgumentException(
628                    'Minor protocol version must be >= 0 or null');
629        }
630        $this->_minorProtocolVersion = $value;
631    }
632
633    /**
634     * Get the minor protocol version that is in use.
635     *
636     * @see _minorProtocolVersion
637     * @return (int|NULL) The major protocol version in use, or NULL if no
638     *         minor version is specified.
639     */
640    public function getMinorProtocolVersion()
641    {
642        return $this->_minorProtocolVersion;
643    }
644
645    /**
646     * Get the full version of a namespace prefix
647     *
648     * Looks up a prefix (atom:, etc.) in the list of registered
649     * namespaces and returns the full namespace URI if
650     * available. Returns the prefix, unmodified, if it's not
651     * registered.
652     *
653     * The current entry or feed's version will be used when performing the
654     * namespace lookup unless overridden using $majorVersion and
655     * $minorVersion. If the entry/fee has a null version, then the latest
656     * protocol version will be used by default.
657     *
658     * @param string $prefix The namespace prefix to lookup.
659     * @param integer $majorVersion The major protocol version in effect.
660     *        Defaults to null (auto-select).
661     * @param integer $minorVersion The minor protocol version in effect.
662     *        Defaults to null (auto-select).
663     * @return string
664     */
665    public function lookupNamespace($prefix,
666                                    $majorVersion = null,
667                                    $minorVersion = null)
668    {
669        // Auto-select current version
670        if ($majorVersion === null) {
671            $majorVersion = $this->getMajorProtocolVersion();
672        }
673        if ($minorVersion === null) {
674            $minorVersion = $this->getMinorProtocolVersion();
675        }
676
677        // Perform lookup
678        return parent::lookupNamespace($prefix, $majorVersion, $minorVersion);
679    }
680
681}
Note: See TracBrowser for help on using the repository browser.