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

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

new extension: Google2Piwigo

File size: 7.6 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: DocumentQuery.php 24594 2012-01-05 21:27:01Z matthew $
22 */
23
24/**
25 * Zend_Gdata_App_util
26 */
27require_once('Zend/Gdata/App/Util.php');
28
29/**
30 * Zend_Gdata_Query
31 */
32require_once('Zend/Gdata/Query.php');
33
34/**
35 * Assists in constructing queries for Google Spreadsheets documents
36 *
37 * @link http://code.google.com/apis/gdata/spreadsheets/
38 *
39 * @category   Zend
40 * @package    Zend_Gdata
41 * @subpackage   Spreadsheets
42 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
43 * @license    http://framework.zend.com/license/new-bsd     New BSD License
44 */
45class Zend_Gdata_Spreadsheets_DocumentQuery extends Zend_Gdata_Query
46{
47
48    const SPREADSHEETS_FEED_URI = 'https://spreadsheets.google.com/feeds';
49
50    protected $_defaultFeedUri = self::SPREADSHEETS_FEED_URI;
51    protected $_documentType;
52    protected $_visibility = 'private';
53    protected $_projection = 'full';
54    protected $_spreadsheetKey = null;
55    protected $_worksheetId = null;
56
57    /**
58     * Constructs a new Zend_Gdata_Spreadsheets_DocumentQuery object.
59     */
60    public function __construct()
61    {
62        parent::__construct();
63    }
64
65    /**
66     * Sets the spreadsheet key for this query.
67     * @param string $value
68     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
69     */
70    public function setSpreadsheetKey($value)
71    {
72        $this->_spreadsheetKey = $value;
73        return $this;
74    }
75
76    /**
77     * Gets the spreadsheet key for this query.
78     * @return string spreadsheet key
79     */
80    public function getSpreadsheetKey()
81    {
82        return $this->_spreadsheetKey;
83    }
84
85    /**
86     * Sets the worksheet id for this query.
87     * @param string $value
88     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
89     */
90    public function setWorksheetId($value)
91    {
92        $this->_worksheetId = $value;
93        return $this;
94    }
95
96    /**
97     * Gets the worksheet id for this query.
98     * @return string worksheet id
99     */
100    public function getWorksheetId()
101    {
102        return $this->_worksheetId;
103    }
104
105    /**
106     * Sets the document type for this query.
107     * @param string $value spreadsheets or worksheets
108     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
109     */
110    public function setDocumentType($value)
111    {
112        $this->_documentType = $value;
113        return $this;
114    }
115
116    /**
117     * Gets the document type for this query.
118     * @return string document type
119     */
120    public function getDocumentType()
121    {
122        return $this->_documentType;
123    }
124
125    /**
126     * Sets the projection for this query.
127     * @param string $value
128     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
129     */
130    public function setProjection($value)
131    {
132        $this->_projection = $value;
133        return $this;
134    }
135
136    /**
137     * Sets the visibility for this query.
138     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
139     */
140    public function setVisibility($value)
141    {
142        $this->_visibility = $value;
143        return $this;
144    }
145
146    /**
147     * Gets the projection for this query.
148     * @return string projection
149     */
150    public function getProjection()
151    {
152        return $this->_projection;
153    }
154
155    /**
156     * Gets the visibility for this query.
157     * @return string visibility
158     */
159    public function getVisibility()
160    {
161        return $this->_visibility;
162    }
163
164    /**
165     * Sets the title attribute for this query.
166     * @param string $value
167     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
168     */
169    public function setTitle($value)
170    {
171        if ($value != null) {
172            $this->_params['title'] = $value;
173        } else {
174            unset($this->_params['title']);
175        }
176        return $this;
177    }
178
179    /**
180     * Sets the title-exact attribute for this query.
181     * @param string $value
182     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
183     */
184    public function setTitleExact($value)
185    {
186        if ($value != null) {
187            $this->_params['title-exact'] = $value;
188        } else {
189            unset($this->_params['title-exact']);
190        }
191        return $this;
192    }
193
194    /**
195     * Gets the title attribute for this query.
196     * @return string title
197     */
198    public function getTitle()
199    {
200        if (array_key_exists('title', $this->_params)) {
201            return $this->_params['title'];
202        } else {
203            return null;
204        }
205    }
206
207    /**
208     * Gets the title-exact attribute for this query.
209     * @return string title-exact
210     */
211    public function getTitleExact()
212    {
213        if (array_key_exists('title-exact', $this->_params)) {
214            return $this->_params['title-exact'];
215        } else {
216            return null;
217        }
218    }
219
220    private function appendVisibilityProjection()
221    {
222        $uri = '';
223
224        if ($this->_visibility != null) {
225            $uri .= '/'.$this->_visibility;
226        } else {
227            require_once 'Zend/Gdata/App/Exception.php';
228            throw new Zend_Gdata_App_Exception('A visibility must be provided for document queries.');
229        }
230
231        if ($this->_projection != null) {
232            $uri .= '/'.$this->_projection;
233        } else {
234            require_once 'Zend/Gdata/App/Exception.php';
235            throw new Zend_Gdata_App_Exception('A projection must be provided for document queries.');
236        }
237
238        return $uri;
239    }
240
241
242    /**
243     * Gets the full query URL for this query.
244     * @return string url
245     */
246    public function getQueryUrl()
247    {
248        $uri = $this->_defaultFeedUri;
249
250        if ($this->_documentType != null) {
251            $uri .= '/'.$this->_documentType;
252        } else {
253            require_once 'Zend/Gdata/App/Exception.php';
254            throw new Zend_Gdata_App_Exception('A document type must be provided for document queries.');
255        }
256
257        if ($this->_documentType == 'spreadsheets') {
258            $uri .= $this->appendVisibilityProjection();
259            if ($this->_spreadsheetKey != null) {
260                $uri .= '/'.$this->_spreadsheetKey;
261            }
262        } else if ($this->_documentType == 'worksheets') {
263            if ($this->_spreadsheetKey != null) {
264                $uri .= '/'.$this->_spreadsheetKey;
265            } else {
266                require_once 'Zend/Gdata/App/Exception.php';
267                throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for worksheet document queries.');
268            }
269            $uri .= $this->appendVisibilityProjection();
270            if ($this->_worksheetId != null) {
271                $uri .= '/'.$this->_worksheetId;
272            }
273        }
274
275        $uri .= $this->getQueryString();
276        return $uri;
277    }
278
279    /**
280     * Gets the attribute query string for this query.
281     * @return string query string
282     */
283    public function getQueryString()
284    {
285        return parent::getQueryString();
286    }
287
288}
Note: See TracBrowser for help on using the repository browser.