~canonical-sysadmins/wordpress/4.7.2

« back to all changes in this revision

Viewing changes to wp-includes/SimplePie/Source.php

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/**
 
3
 * SimplePie
 
4
 *
 
5
 * A PHP-Based RSS and Atom Feed Framework.
 
6
 * Takes the hard work out of managing a complete RSS/Atom solution.
 
7
 *
 
8
 * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
 
9
 * All rights reserved.
 
10
 *
 
11
 * Redistribution and use in source and binary forms, with or without modification, are
 
12
 * permitted provided that the following conditions are met:
 
13
 *
 
14
 *      * Redistributions of source code must retain the above copyright notice, this list of
 
15
 *        conditions and the following disclaimer.
 
16
 *
 
17
 *      * Redistributions in binary form must reproduce the above copyright notice, this list
 
18
 *        of conditions and the following disclaimer in the documentation and/or other materials
 
19
 *        provided with the distribution.
 
20
 *
 
21
 *      * Neither the name of the SimplePie Team nor the names of its contributors may be used
 
22
 *        to endorse or promote products derived from this software without specific prior
 
23
 *        written permission.
 
24
 *
 
25
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
 
26
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 
27
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
 
28
 * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 
29
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
30
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
31
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 
32
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
33
 * POSSIBILITY OF SUCH DAMAGE.
 
34
 *
 
35
 * @package SimplePie
 
36
 * @version 1.3.1
 
37
 * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
 
38
 * @author Ryan Parman
 
39
 * @author Geoffrey Sneddon
 
40
 * @author Ryan McCue
 
41
 * @link http://simplepie.org/ SimplePie
 
42
 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 
43
 */
 
44
 
 
45
/**
 
46
 * Handles `<atom:source>`
 
47
 *
 
48
 * Used by {@see SimplePie_Item::get_source()}
 
49
 *
 
50
 * This class can be overloaded with {@see SimplePie::set_source_class()}
 
51
 *
 
52
 * @package SimplePie
 
53
 * @subpackage API
 
54
 */
 
55
class SimplePie_Source
 
56
{
 
57
        var $item;
 
58
        var $data = array();
 
59
        protected $registry;
 
60
 
 
61
        public function __construct($item, $data)
 
62
        {
 
63
                $this->item = $item;
 
64
                $this->data = $data;
 
65
        }
 
66
 
 
67
        public function set_registry(SimplePie_Registry $registry)
 
68
        {
 
69
                $this->registry = $registry;
 
70
        }
 
71
 
 
72
        public function __toString()
 
73
        {
 
74
                return md5(serialize($this->data));
 
75
        }
 
76
 
 
77
        public function get_source_tags($namespace, $tag)
 
78
        {
 
79
                if (isset($this->data['child'][$namespace][$tag]))
 
80
                {
 
81
                        return $this->data['child'][$namespace][$tag];
 
82
                }
 
83
                else
 
84
                {
 
85
                        return null;
 
86
                }
 
87
        }
 
88
 
 
89
        public function get_base($element = array())
 
90
        {
 
91
                return $this->item->get_base($element);
 
92
        }
 
93
 
 
94
        public function sanitize($data, $type, $base = '')
 
95
        {
 
96
                return $this->item->sanitize($data, $type, $base);
 
97
        }
 
98
 
 
99
        public function get_item()
 
100
        {
 
101
                return $this->item;
 
102
        }
 
103
 
 
104
        public function get_title()
 
105
        {
 
106
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
 
107
                {
 
108
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
109
                }
 
110
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
 
111
                {
 
112
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
113
                }
 
114
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
 
115
                {
 
116
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
117
                }
 
118
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
 
119
                {
 
120
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
121
                }
 
122
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
 
123
                {
 
124
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
125
                }
 
126
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
 
127
                {
 
128
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
129
                }
 
130
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
 
131
                {
 
132
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
133
                }
 
134
                else
 
135
                {
 
136
                        return null;
 
137
                }
 
138
        }
 
139
 
 
140
        public function get_category($key = 0)
 
141
        {
 
142
                $categories = $this->get_categories();
 
143
                if (isset($categories[$key]))
 
144
                {
 
145
                        return $categories[$key];
 
146
                }
 
147
                else
 
148
                {
 
149
                        return null;
 
150
                }
 
151
        }
 
152
 
 
153
        public function get_categories()
 
154
        {
 
155
                $categories = array();
 
156
 
 
157
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
 
158
                {
 
159
                        $term = null;
 
160
                        $scheme = null;
 
161
                        $label = null;
 
162
                        if (isset($category['attribs']['']['term']))
 
163
                        {
 
164
                                $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
 
165
                        }
 
166
                        if (isset($category['attribs']['']['scheme']))
 
167
                        {
 
168
                                $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
 
169
                        }
 
170
                        if (isset($category['attribs']['']['label']))
 
171
                        {
 
172
                                $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
 
173
                        }
 
174
                        $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
 
175
                }
 
176
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
 
177
                {
 
178
                        // This is really the label, but keep this as the term also for BC.
 
179
                        // Label will also work on retrieving because that falls back to term.
 
180
                        $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
181
                        if (isset($category['attribs']['']['domain']))
 
182
                        {
 
183
                                $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
 
184
                        }
 
185
                        else
 
186
                        {
 
187
                                $scheme = null;
 
188
                        }
 
189
                        $categories[] = $this->registry->create('Category', array($term, $scheme, null));
 
190
                }
 
191
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
 
192
                {
 
193
                        $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
 
194
                }
 
195
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
 
196
                {
 
197
                        $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
 
198
                }
 
199
 
 
200
                if (!empty($categories))
 
201
                {
 
202
                        return array_unique($categories);
 
203
                }
 
204
                else
 
205
                {
 
206
                        return null;
 
207
                }
 
208
        }
 
209
 
 
210
        public function get_author($key = 0)
 
211
        {
 
212
                $authors = $this->get_authors();
 
213
                if (isset($authors[$key]))
 
214
                {
 
215
                        return $authors[$key];
 
216
                }
 
217
                else
 
218
                {
 
219
                        return null;
 
220
                }
 
221
        }
 
222
 
 
223
        public function get_authors()
 
224
        {
 
225
                $authors = array();
 
226
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
 
227
                {
 
228
                        $name = null;
 
229
                        $uri = null;
 
230
                        $email = null;
 
231
                        if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
 
232
                        {
 
233
                                $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
234
                        }
 
235
                        if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
 
236
                        {
 
237
                                $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
 
238
                        }
 
239
                        if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
 
240
                        {
 
241
                                $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
242
                        }
 
243
                        if ($name !== null || $email !== null || $uri !== null)
 
244
                        {
 
245
                                $authors[] = $this->registry->create('Author', array($name, $uri, $email));
 
246
                        }
 
247
                }
 
248
                if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
 
249
                {
 
250
                        $name = null;
 
251
                        $url = null;
 
252
                        $email = null;
 
253
                        if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
 
254
                        {
 
255
                                $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
256
                        }
 
257
                        if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
 
258
                        {
 
259
                                $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
 
260
                        }
 
261
                        if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
 
262
                        {
 
263
                                $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
264
                        }
 
265
                        if ($name !== null || $email !== null || $url !== null)
 
266
                        {
 
267
                                $authors[] = $this->registry->create('Author', array($name, $url, $email));
 
268
                        }
 
269
                }
 
270
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
 
271
                {
 
272
                        $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
 
273
                }
 
274
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
 
275
                {
 
276
                        $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
 
277
                }
 
278
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
 
279
                {
 
280
                        $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
 
281
                }
 
282
 
 
283
                if (!empty($authors))
 
284
                {
 
285
                        return array_unique($authors);
 
286
                }
 
287
                else
 
288
                {
 
289
                        return null;
 
290
                }
 
291
        }
 
292
 
 
293
        public function get_contributor($key = 0)
 
294
        {
 
295
                $contributors = $this->get_contributors();
 
296
                if (isset($contributors[$key]))
 
297
                {
 
298
                        return $contributors[$key];
 
299
                }
 
300
                else
 
301
                {
 
302
                        return null;
 
303
                }
 
304
        }
 
305
 
 
306
        public function get_contributors()
 
307
        {
 
308
                $contributors = array();
 
309
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
 
310
                {
 
311
                        $name = null;
 
312
                        $uri = null;
 
313
                        $email = null;
 
314
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
 
315
                        {
 
316
                                $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
317
                        }
 
318
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
 
319
                        {
 
320
                                $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
 
321
                        }
 
322
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
 
323
                        {
 
324
                                $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
325
                        }
 
326
                        if ($name !== null || $email !== null || $uri !== null)
 
327
                        {
 
328
                                $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
 
329
                        }
 
330
                }
 
331
                foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
 
332
                {
 
333
                        $name = null;
 
334
                        $url = null;
 
335
                        $email = null;
 
336
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
 
337
                        {
 
338
                                $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
339
                        }
 
340
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
 
341
                        {
 
342
                                $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
 
343
                        }
 
344
                        if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
 
345
                        {
 
346
                                $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
347
                        }
 
348
                        if ($name !== null || $email !== null || $url !== null)
 
349
                        {
 
350
                                $contributors[] = $this->registry->create('Author', array($name, $url, $email));
 
351
                        }
 
352
                }
 
353
 
 
354
                if (!empty($contributors))
 
355
                {
 
356
                        return array_unique($contributors);
 
357
                }
 
358
                else
 
359
                {
 
360
                        return null;
 
361
                }
 
362
        }
 
363
 
 
364
        public function get_link($key = 0, $rel = 'alternate')
 
365
        {
 
366
                $links = $this->get_links($rel);
 
367
                if (isset($links[$key]))
 
368
                {
 
369
                        return $links[$key];
 
370
                }
 
371
                else
 
372
                {
 
373
                        return null;
 
374
                }
 
375
        }
 
376
 
 
377
        /**
 
378
         * Added for parity between the parent-level and the item/entry-level.
 
379
         */
 
380
        public function get_permalink()
 
381
        {
 
382
                return $this->get_link(0);
 
383
        }
 
384
 
 
385
        public function get_links($rel = 'alternate')
 
386
        {
 
387
                if (!isset($this->data['links']))
 
388
                {
 
389
                        $this->data['links'] = array();
 
390
                        if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
 
391
                        {
 
392
                                foreach ($links as $link)
 
393
                                {
 
394
                                        if (isset($link['attribs']['']['href']))
 
395
                                        {
 
396
                                                $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
 
397
                                                $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
 
398
                                        }
 
399
                                }
 
400
                        }
 
401
                        if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
 
402
                        {
 
403
                                foreach ($links as $link)
 
404
                                {
 
405
                                        if (isset($link['attribs']['']['href']))
 
406
                                        {
 
407
                                                $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
 
408
                                                $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
 
409
 
 
410
                                        }
 
411
                                }
 
412
                        }
 
413
                        if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
 
414
                        {
 
415
                                $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
 
416
                        }
 
417
                        if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
 
418
                        {
 
419
                                $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
 
420
                        }
 
421
                        if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
 
422
                        {
 
423
                                $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
 
424
                        }
 
425
 
 
426
                        $keys = array_keys($this->data['links']);
 
427
                        foreach ($keys as $key)
 
428
                        {
 
429
                                if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
 
430
                                {
 
431
                                        if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
 
432
                                        {
 
433
                                                $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
 
434
                                                $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
 
435
                                        }
 
436
                                        else
 
437
                                        {
 
438
                                                $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
 
439
                                        }
 
440
                                }
 
441
                                elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
 
442
                                {
 
443
                                        $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
 
444
                                }
 
445
                                $this->data['links'][$key] = array_unique($this->data['links'][$key]);
 
446
                        }
 
447
                }
 
448
 
 
449
                if (isset($this->data['links'][$rel]))
 
450
                {
 
451
                        return $this->data['links'][$rel];
 
452
                }
 
453
                else
 
454
                {
 
455
                        return null;
 
456
                }
 
457
        }
 
458
 
 
459
        public function get_description()
 
460
        {
 
461
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
 
462
                {
 
463
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
464
                }
 
465
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
 
466
                {
 
467
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
468
                }
 
469
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
 
470
                {
 
471
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
472
                }
 
473
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
 
474
                {
 
475
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
476
                }
 
477
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
 
478
                {
 
479
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
 
480
                }
 
481
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
 
482
                {
 
483
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
484
                }
 
485
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
 
486
                {
 
487
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
488
                }
 
489
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
 
490
                {
 
491
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
 
492
                }
 
493
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
 
494
                {
 
495
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
 
496
                }
 
497
                else
 
498
                {
 
499
                        return null;
 
500
                }
 
501
        }
 
502
 
 
503
        public function get_copyright()
 
504
        {
 
505
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
 
506
                {
 
507
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
508
                }
 
509
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
 
510
                {
 
511
                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
 
512
                }
 
513
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
 
514
                {
 
515
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
516
                }
 
517
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
 
518
                {
 
519
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
520
                }
 
521
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
 
522
                {
 
523
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
524
                }
 
525
                else
 
526
                {
 
527
                        return null;
 
528
                }
 
529
        }
 
530
 
 
531
        public function get_language()
 
532
        {
 
533
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
 
534
                {
 
535
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
536
                }
 
537
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
 
538
                {
 
539
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
540
                }
 
541
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
 
542
                {
 
543
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 
544
                }
 
545
                elseif (isset($this->data['xml_lang']))
 
546
                {
 
547
                        return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
 
548
                }
 
549
                else
 
550
                {
 
551
                        return null;
 
552
                }
 
553
        }
 
554
 
 
555
        public function get_latitude()
 
556
        {
 
557
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
 
558
                {
 
559
                        return (float) $return[0]['data'];
 
560
                }
 
561
                elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
 
562
                {
 
563
                        return (float) $match[1];
 
564
                }
 
565
                else
 
566
                {
 
567
                        return null;
 
568
                }
 
569
        }
 
570
 
 
571
        public function get_longitude()
 
572
        {
 
573
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
 
574
                {
 
575
                        return (float) $return[0]['data'];
 
576
                }
 
577
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
 
578
                {
 
579
                        return (float) $return[0]['data'];
 
580
                }
 
581
                elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
 
582
                {
 
583
                        return (float) $match[2];
 
584
                }
 
585
                else
 
586
                {
 
587
                        return null;
 
588
                }
 
589
        }
 
590
 
 
591
        public function get_image_url()
 
592
        {
 
593
                if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
 
594
                {
 
595
                        return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
 
596
                }
 
597
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
 
598
                {
 
599
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
 
600
                }
 
601
                elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
 
602
                {
 
603
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
 
604
                }
 
605
                else
 
606
                {
 
607
                        return null;
 
608
                }
 
609
        }
 
610
}
 
611