]> git.immae.eu Git - github/wallabag/wallabag.git/blob - inc/3rdparty/simplepie/SimplePie/Cache/DB.php
Merge pull request #181 from inthepoche/dev
[github/wallabag/wallabag.git] / inc / 3rdparty / simplepie / SimplePie / Cache / DB.php
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-2009, 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-dev
37 * @copyright 2004-2010 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 * @todo phpDoc comments
44 */
45
46 abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
47 {
48 protected static function prepare_simplepie_object_for_cache(&$data)
49 {
50 $items = $data->get_items();
51 $items_by_id = array();
52
53 if (!empty($items))
54 {
55 foreach ($items as $item)
56 {
57 $items_by_id[$item->get_id()] = $item;
58 }
59
60 if (count($items_by_id) !== count($items))
61 {
62 $items_by_id = array();
63 foreach ($items as $item)
64 {
65 $items_by_id[$item->get_id(true)] = $item;
66 }
67 }
68
69 if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
70 {
71 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
72 }
73 elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
74 {
75 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
76 }
77 elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
78 {
79 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
80 }
81 elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
82 {
83 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
84 }
85 else
86 {
87 $channel = null;
88 }
89
90 if ($channel !== null)
91 {
92 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
93 {
94 unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
95 }
96 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
97 {
98 unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
99 }
100 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
101 {
102 unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
103 }
104 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
105 {
106 unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
107 }
108 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
109 {
110 unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
111 }
112 }
113 if (isset($data->data['items']))
114 {
115 unset($data->data['items']);
116 }
117 if (isset($data->data['ordered_items']))
118 {
119 unset($data->data['ordered_items']);
120 }
121 }
122 return array(serialize($data->data), $items_by_id);
123 }
124 }