source: extensions/Google2Piwigo/include/Zend/Gdata/Spreadsheets/ListEntry.php @ 17475

Last change on this file since 17475 was 17475, checked in by mistic100, 12 years ago

new extension: Google2Piwigo

File size: 6.9 KB
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   Spreadsheets
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: ListEntry.php 24594 2012-01-05 21:27:01Z matthew $
22 */
23
24/**
25 * @see Zend_Gdata_Entry
26 */
27require_once 'Zend/Gdata/Entry.php';
28
29/**
30 * @see Zend_Gdata_Spreadsheets_Extension_Custom
31 */
32require_once 'Zend/Gdata/Spreadsheets/Extension/Custom.php';
33
34/**
35 * Concrete class for working with List entries.
36 *
37 * @category     Zend
38 * @package      Zend_Gdata
39 * @subpackage   Spreadsheets
40 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
41 * @license    http://framework.zend.com/license/new-bsd     New BSD License
42 */
43class Zend_Gdata_Spreadsheets_ListEntry extends Zend_Gdata_Entry
44{
45
46    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_ListEntry';
47
48    /**
49     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
50     * indexed by order added to this entry.
51     * @var array
52     */
53    protected $_custom = array();
54
55    /**
56     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
57     * indexed by element name.
58     * @var array
59     */
60    protected $_customByName = array();
61
62    /**
63     * Constructs a new Zend_Gdata_Spreadsheets_ListEntry object.
64     * @param DOMElement $element An existing XML element on which to base this new object.
65     */
66    public function __construct($element = null)
67    {
68        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
69        parent::__construct($element);
70    }
71
72    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
73    {
74        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
75        if (!empty($this->_custom)) {
76            foreach ($this->_custom as $custom) {
77                $element->appendChild($custom->getDOM($element->ownerDocument));
78            }
79        }
80        return $element;
81    }
82
83    protected function takeChildFromDOM($child)
84    {
85        switch ($child->namespaceURI) {
86        case $this->lookupNamespace('gsx');
87            $custom = new Zend_Gdata_Spreadsheets_Extension_Custom($child->localName);
88            $custom->transferFromDOM($child);
89            $this->addCustom($custom);
90            break;
91        default:
92            parent::takeChildFromDOM($child);
93            break;
94        }
95    }
96
97    /**
98     * Gets the row elements contained by this list entry.
99     * @return array The custom row elements in this list entry
100     */
101    public function getCustom()
102    {
103        return $this->_custom;
104    }
105
106    /**
107     * Gets a single row element contained by this list entry using its name.
108     * @param string $name The name of a custom element to return. If null
109     *          or not defined, an array containing all custom elements
110     *          indexed by name will be returned.
111     * @return mixed If a name is specified, the
112     *          Zend_Gdata_Spreadsheets_Extension_Custom element requested,
113     *          is returned or null if not found. Otherwise, an array of all
114     *          Zend_Gdata_Spreadsheets_Extension_Custom elements is returned
115     *          indexed by name.
116     */
117    public function getCustomByName($name = null)
118    {
119        if ($name === null) {
120            return $this->_customByName;
121        } else {
122            if (array_key_exists($name, $this->customByName)) {
123                return $this->_customByName[$name];
124            } else {
125                return null;
126            }
127        }
128    }
129
130    /**
131     * Sets the row elements contained by this list entry. If any
132     * custom row elements were previously stored, they will be overwritten.
133     * @param array $custom The custom row elements to be contained in this
134     *          list entry.
135     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
136     */
137    public function setCustom($custom)
138    {
139        $this->_custom = array();
140        foreach ($custom as $c) {
141            $this->addCustom($c);
142        }
143        return $this;
144    }
145
146    /**
147     * Add an individual custom row element to this list entry.
148     * @param Zend_Gdata_Spreadsheets_Extension_Custom $custom The custom
149     *             element to be added.
150     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
151     */
152    public function addCustom($custom)
153    {
154        $this->_custom[] = $custom;
155        $this->_customByName[$custom->getColumnName()] = $custom;
156        return $this;
157    }
158
159    /**
160     * Remove an individual row element from this list entry by index. This
161     * will cause the array to be re-indexed.
162     * @param int $index The index of the custom element to be deleted.
163     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
164     * @throws Zend_Gdata_App_InvalidArgumentException
165     */
166    public function removeCustom($index)
167    {
168        if (array_key_exists($index, $this->_custom)) {
169            $element = $this->_custom[$index];
170            // Remove element
171            unset($this->_custom[$index]);
172            // Re-index the array
173            $this->_custom = array_values($this->_custom);
174            // Be sure to delete form both arrays!
175            $key = array_search($element, $this->_customByName);
176            unset($this->_customByName[$key]);
177        } else {
178            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
179            throw new Zend_Gdata_App_InvalidArgumentException(
180                'Element does not exist.');
181        }
182        return $this;
183    }
184
185    /**
186     * Remove an individual row element from this list entry by name.
187     * @param string $name The name of the custom element to be deleted.
188     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
189     * @throws Zend_Gdata_App_InvalidArgumentException
190     */
191    public function removeCustomByName($name)
192    {
193        if (array_key_exists($name, $this->_customByName)) {
194            $element = $this->_customByName[$name];
195            // Remove element
196            unset($this->_customByName[$name]);
197            // Be sure to delete from both arrays!
198            $key = array_search($element, $this->_custom);
199            unset($this->_custom[$key]);
200        } else {
201            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
202            throw new Zend_Gdata_App_InvalidArgumentException(
203                'Element does not exist.');
204        }
205        return $this;
206    }
207
208}
Note: See TracBrowser for help on using the repository browser.