danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Install, update and uninstall functions for the aggregator module.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Implements hook_uninstall().
|
danielebarchiesi@0
|
10 */
|
danielebarchiesi@0
|
11 function aggregator_uninstall() {
|
danielebarchiesi@0
|
12 variable_del('aggregator_allowed_html_tags');
|
danielebarchiesi@0
|
13 variable_del('aggregator_summary_items');
|
danielebarchiesi@0
|
14 variable_del('aggregator_clear');
|
danielebarchiesi@0
|
15 variable_del('aggregator_category_selector');
|
danielebarchiesi@0
|
16 variable_del('aggregator_fetcher');
|
danielebarchiesi@0
|
17 variable_del('aggregator_parser');
|
danielebarchiesi@0
|
18 variable_del('aggregator_processors');
|
danielebarchiesi@0
|
19 variable_del('aggregator_teaser_length');
|
danielebarchiesi@0
|
20 }
|
danielebarchiesi@0
|
21
|
danielebarchiesi@0
|
22 /**
|
danielebarchiesi@0
|
23 * Implements hook_schema().
|
danielebarchiesi@0
|
24 */
|
danielebarchiesi@0
|
25 function aggregator_schema() {
|
danielebarchiesi@0
|
26 $schema['aggregator_category'] = array(
|
danielebarchiesi@0
|
27 'description' => 'Stores categories for aggregator feeds and feed items.',
|
danielebarchiesi@0
|
28 'fields' => array(
|
danielebarchiesi@0
|
29 'cid' => array(
|
danielebarchiesi@0
|
30 'type' => 'serial',
|
danielebarchiesi@0
|
31 'not null' => TRUE,
|
danielebarchiesi@0
|
32 'description' => 'Primary Key: Unique aggregator category ID.',
|
danielebarchiesi@0
|
33 ),
|
danielebarchiesi@0
|
34 'title' => array(
|
danielebarchiesi@0
|
35 'type' => 'varchar',
|
danielebarchiesi@0
|
36 'length' => 255,
|
danielebarchiesi@0
|
37 'not null' => TRUE,
|
danielebarchiesi@0
|
38 'default' => '',
|
danielebarchiesi@0
|
39 'description' => 'Title of the category.',
|
danielebarchiesi@0
|
40 ),
|
danielebarchiesi@0
|
41 'description' => array(
|
danielebarchiesi@0
|
42 'type' => 'text',
|
danielebarchiesi@0
|
43 'not null' => TRUE,
|
danielebarchiesi@0
|
44 'size' => 'big',
|
danielebarchiesi@0
|
45 'description' => 'Description of the category',
|
danielebarchiesi@0
|
46 ),
|
danielebarchiesi@0
|
47 'block' => array(
|
danielebarchiesi@0
|
48 'type' => 'int',
|
danielebarchiesi@0
|
49 'not null' => TRUE,
|
danielebarchiesi@0
|
50 'default' => 0,
|
danielebarchiesi@0
|
51 'size' => 'tiny',
|
danielebarchiesi@0
|
52 'description' => 'The number of recent items to show within the category block.',
|
danielebarchiesi@0
|
53 )
|
danielebarchiesi@0
|
54 ),
|
danielebarchiesi@0
|
55 'primary key' => array('cid'),
|
danielebarchiesi@0
|
56 'unique keys' => array(
|
danielebarchiesi@0
|
57 'title' => array('title'),
|
danielebarchiesi@0
|
58 ),
|
danielebarchiesi@0
|
59 );
|
danielebarchiesi@0
|
60
|
danielebarchiesi@0
|
61 $schema['aggregator_category_feed'] = array(
|
danielebarchiesi@0
|
62 'description' => 'Bridge table; maps feeds to categories.',
|
danielebarchiesi@0
|
63 'fields' => array(
|
danielebarchiesi@0
|
64 'fid' => array(
|
danielebarchiesi@0
|
65 'type' => 'int',
|
danielebarchiesi@0
|
66 'not null' => TRUE,
|
danielebarchiesi@0
|
67 'default' => 0,
|
danielebarchiesi@0
|
68 'description' => "The feed's {aggregator_feed}.fid.",
|
danielebarchiesi@0
|
69 ),
|
danielebarchiesi@0
|
70 'cid' => array(
|
danielebarchiesi@0
|
71 'type' => 'int',
|
danielebarchiesi@0
|
72 'not null' => TRUE,
|
danielebarchiesi@0
|
73 'default' => 0,
|
danielebarchiesi@0
|
74 'description' => 'The {aggregator_category}.cid to which the feed is being assigned.',
|
danielebarchiesi@0
|
75 )
|
danielebarchiesi@0
|
76 ),
|
danielebarchiesi@0
|
77 'primary key' => array('cid', 'fid'),
|
danielebarchiesi@0
|
78 'indexes' => array(
|
danielebarchiesi@0
|
79 'fid' => array('fid'),
|
danielebarchiesi@0
|
80 ),
|
danielebarchiesi@0
|
81 'foreign keys' => array(
|
danielebarchiesi@0
|
82 'aggregator_category' => array(
|
danielebarchiesi@0
|
83 'table' => 'aggregator_category',
|
danielebarchiesi@0
|
84 'columns' => array('cid' => 'cid'),
|
danielebarchiesi@0
|
85 ),
|
danielebarchiesi@0
|
86 ),
|
danielebarchiesi@0
|
87 );
|
danielebarchiesi@0
|
88
|
danielebarchiesi@0
|
89 $schema['aggregator_category_item'] = array(
|
danielebarchiesi@0
|
90 'description' => 'Bridge table; maps feed items to categories.',
|
danielebarchiesi@0
|
91 'fields' => array(
|
danielebarchiesi@0
|
92 'iid' => array(
|
danielebarchiesi@0
|
93 'type' => 'int',
|
danielebarchiesi@0
|
94 'not null' => TRUE,
|
danielebarchiesi@0
|
95 'default' => 0,
|
danielebarchiesi@0
|
96 'description' => "The feed item's {aggregator_item}.iid.",
|
danielebarchiesi@0
|
97 ),
|
danielebarchiesi@0
|
98 'cid' => array(
|
danielebarchiesi@0
|
99 'type' => 'int',
|
danielebarchiesi@0
|
100 'not null' => TRUE,
|
danielebarchiesi@0
|
101 'default' => 0,
|
danielebarchiesi@0
|
102 'description' => 'The {aggregator_category}.cid to which the feed item is being assigned.',
|
danielebarchiesi@0
|
103 )
|
danielebarchiesi@0
|
104 ),
|
danielebarchiesi@0
|
105 'primary key' => array('cid', 'iid'),
|
danielebarchiesi@0
|
106 'indexes' => array(
|
danielebarchiesi@0
|
107 'iid' => array('iid'),
|
danielebarchiesi@0
|
108 ),
|
danielebarchiesi@0
|
109 'foreign keys' => array(
|
danielebarchiesi@0
|
110 'aggregator_category' => array(
|
danielebarchiesi@0
|
111 'table' => 'aggregator_category',
|
danielebarchiesi@0
|
112 'columns' => array('cid' => 'cid'),
|
danielebarchiesi@0
|
113 ),
|
danielebarchiesi@0
|
114 ),
|
danielebarchiesi@0
|
115 );
|
danielebarchiesi@0
|
116
|
danielebarchiesi@0
|
117 $schema['aggregator_feed'] = array(
|
danielebarchiesi@0
|
118 'description' => 'Stores feeds to be parsed by the aggregator.',
|
danielebarchiesi@0
|
119 'fields' => array(
|
danielebarchiesi@0
|
120 'fid' => array(
|
danielebarchiesi@0
|
121 'type' => 'serial',
|
danielebarchiesi@0
|
122 'not null' => TRUE,
|
danielebarchiesi@0
|
123 'description' => 'Primary Key: Unique feed ID.',
|
danielebarchiesi@0
|
124 ),
|
danielebarchiesi@0
|
125 'title' => array(
|
danielebarchiesi@0
|
126 'type' => 'varchar',
|
danielebarchiesi@0
|
127 'length' => 255,
|
danielebarchiesi@0
|
128 'not null' => TRUE,
|
danielebarchiesi@0
|
129 'default' => '',
|
danielebarchiesi@0
|
130 'description' => 'Title of the feed.',
|
danielebarchiesi@0
|
131 ),
|
danielebarchiesi@0
|
132 'url' => array(
|
danielebarchiesi@0
|
133 'type' => 'text',
|
danielebarchiesi@0
|
134 'not null' => TRUE,
|
danielebarchiesi@0
|
135 'description' => 'URL to the feed.',
|
danielebarchiesi@0
|
136 ),
|
danielebarchiesi@0
|
137 'refresh' => array(
|
danielebarchiesi@0
|
138 'type' => 'int',
|
danielebarchiesi@0
|
139 'not null' => TRUE,
|
danielebarchiesi@0
|
140 'default' => 0,
|
danielebarchiesi@0
|
141 'description' => 'How often to check for new feed items, in seconds.',
|
danielebarchiesi@0
|
142 ),
|
danielebarchiesi@0
|
143 'checked' => array(
|
danielebarchiesi@0
|
144 'type' => 'int',
|
danielebarchiesi@0
|
145 'not null' => TRUE,
|
danielebarchiesi@0
|
146 'default' => 0,
|
danielebarchiesi@0
|
147 'description' => 'Last time feed was checked for new items, as Unix timestamp.',
|
danielebarchiesi@0
|
148 ),
|
danielebarchiesi@0
|
149 'queued' => array(
|
danielebarchiesi@0
|
150 'type' => 'int',
|
danielebarchiesi@0
|
151 'not null' => TRUE,
|
danielebarchiesi@0
|
152 'default' => 0,
|
danielebarchiesi@0
|
153 'description' => 'Time when this feed was queued for refresh, 0 if not queued.',
|
danielebarchiesi@0
|
154 ),
|
danielebarchiesi@0
|
155 'link' => array(
|
danielebarchiesi@0
|
156 'type' => 'text',
|
danielebarchiesi@0
|
157 'not null' => TRUE,
|
danielebarchiesi@0
|
158 'description' => 'The parent website of the feed; comes from the <link> element in the feed.',
|
danielebarchiesi@0
|
159 ),
|
danielebarchiesi@0
|
160 'description' => array(
|
danielebarchiesi@0
|
161 'type' => 'text',
|
danielebarchiesi@0
|
162 'not null' => TRUE,
|
danielebarchiesi@0
|
163 'size' => 'big',
|
danielebarchiesi@0
|
164 'description' => "The parent website's description; comes from the <description> element in the feed.",
|
danielebarchiesi@0
|
165 ),
|
danielebarchiesi@0
|
166 'image' => array(
|
danielebarchiesi@0
|
167 'type' => 'text',
|
danielebarchiesi@0
|
168 'not null' => TRUE,
|
danielebarchiesi@0
|
169 'size' => 'big',
|
danielebarchiesi@0
|
170 'description' => 'An image representing the feed.',
|
danielebarchiesi@0
|
171 ),
|
danielebarchiesi@0
|
172 'hash' => array(
|
danielebarchiesi@0
|
173 'type' => 'varchar',
|
danielebarchiesi@0
|
174 'length' => 64,
|
danielebarchiesi@0
|
175 'not null' => TRUE,
|
danielebarchiesi@0
|
176 'default' => '',
|
danielebarchiesi@0
|
177 'description' => 'Calculated hash of the feed data, used for validating cache.',
|
danielebarchiesi@0
|
178 ),
|
danielebarchiesi@0
|
179 'etag' => array(
|
danielebarchiesi@0
|
180 'type' => 'varchar',
|
danielebarchiesi@0
|
181 'length' => 255,
|
danielebarchiesi@0
|
182 'not null' => TRUE,
|
danielebarchiesi@0
|
183 'default' => '',
|
danielebarchiesi@0
|
184 'description' => 'Entity tag HTTP response header, used for validating cache.',
|
danielebarchiesi@0
|
185 ),
|
danielebarchiesi@0
|
186 'modified' => array(
|
danielebarchiesi@0
|
187 'type' => 'int',
|
danielebarchiesi@0
|
188 'not null' => TRUE,
|
danielebarchiesi@0
|
189 'default' => 0,
|
danielebarchiesi@0
|
190 'description' => 'When the feed was last modified, as a Unix timestamp.',
|
danielebarchiesi@0
|
191 ),
|
danielebarchiesi@0
|
192 'block' => array(
|
danielebarchiesi@0
|
193 'type' => 'int',
|
danielebarchiesi@0
|
194 'not null' => TRUE,
|
danielebarchiesi@0
|
195 'default' => 0,
|
danielebarchiesi@0
|
196 'size' => 'tiny',
|
danielebarchiesi@0
|
197 'description' => "Number of items to display in the feed's block.",
|
danielebarchiesi@0
|
198 )
|
danielebarchiesi@0
|
199 ),
|
danielebarchiesi@0
|
200 'primary key' => array('fid'),
|
danielebarchiesi@0
|
201 'indexes' => array(
|
danielebarchiesi@0
|
202 'url' => array(array('url', 255)),
|
danielebarchiesi@0
|
203 'queued' => array('queued'),
|
danielebarchiesi@0
|
204 ),
|
danielebarchiesi@0
|
205 'unique keys' => array(
|
danielebarchiesi@0
|
206 'title' => array('title'),
|
danielebarchiesi@0
|
207 ),
|
danielebarchiesi@0
|
208 );
|
danielebarchiesi@0
|
209
|
danielebarchiesi@0
|
210 $schema['aggregator_item'] = array(
|
danielebarchiesi@0
|
211 'description' => 'Stores the individual items imported from feeds.',
|
danielebarchiesi@0
|
212 'fields' => array(
|
danielebarchiesi@0
|
213 'iid' => array(
|
danielebarchiesi@0
|
214 'type' => 'serial',
|
danielebarchiesi@0
|
215 'not null' => TRUE,
|
danielebarchiesi@0
|
216 'description' => 'Primary Key: Unique ID for feed item.',
|
danielebarchiesi@0
|
217 ),
|
danielebarchiesi@0
|
218 'fid' => array(
|
danielebarchiesi@0
|
219 'type' => 'int',
|
danielebarchiesi@0
|
220 'not null' => TRUE,
|
danielebarchiesi@0
|
221 'default' => 0,
|
danielebarchiesi@0
|
222 'description' => 'The {aggregator_feed}.fid to which this item belongs.',
|
danielebarchiesi@0
|
223 ),
|
danielebarchiesi@0
|
224 'title' => array(
|
danielebarchiesi@0
|
225 'type' => 'varchar',
|
danielebarchiesi@0
|
226 'length' => 255,
|
danielebarchiesi@0
|
227 'not null' => TRUE,
|
danielebarchiesi@0
|
228 'default' => '',
|
danielebarchiesi@0
|
229 'description' => 'Title of the feed item.',
|
danielebarchiesi@0
|
230 ),
|
danielebarchiesi@0
|
231 'link' => array(
|
danielebarchiesi@0
|
232 'type' => 'text',
|
danielebarchiesi@0
|
233 'not null' => TRUE,
|
danielebarchiesi@0
|
234 'description' => 'Link to the feed item.',
|
danielebarchiesi@0
|
235 ),
|
danielebarchiesi@0
|
236 'author' => array(
|
danielebarchiesi@0
|
237 'type' => 'varchar',
|
danielebarchiesi@0
|
238 'length' => 255,
|
danielebarchiesi@0
|
239 'not null' => TRUE,
|
danielebarchiesi@0
|
240 'default' => '',
|
danielebarchiesi@0
|
241 'description' => 'Author of the feed item.',
|
danielebarchiesi@0
|
242 ),
|
danielebarchiesi@0
|
243 'description' => array(
|
danielebarchiesi@0
|
244 'type' => 'text',
|
danielebarchiesi@0
|
245 'not null' => TRUE,
|
danielebarchiesi@0
|
246 'size' => 'big',
|
danielebarchiesi@0
|
247 'description' => 'Body of the feed item.',
|
danielebarchiesi@0
|
248 ),
|
danielebarchiesi@0
|
249 'timestamp' => array(
|
danielebarchiesi@0
|
250 'type' => 'int',
|
danielebarchiesi@0
|
251 'not null' => FALSE,
|
danielebarchiesi@0
|
252 'description' => 'Posted date of the feed item, as a Unix timestamp.',
|
danielebarchiesi@0
|
253 ),
|
danielebarchiesi@0
|
254 'guid' => array(
|
danielebarchiesi@0
|
255 'type' => 'text',
|
danielebarchiesi@0
|
256 'not null' => TRUE,
|
danielebarchiesi@0
|
257 'description' => 'Unique identifier for the feed item.',
|
danielebarchiesi@0
|
258 )
|
danielebarchiesi@0
|
259 ),
|
danielebarchiesi@0
|
260 'primary key' => array('iid'),
|
danielebarchiesi@0
|
261 'indexes' => array(
|
danielebarchiesi@0
|
262 'fid' => array('fid'),
|
danielebarchiesi@0
|
263 ),
|
danielebarchiesi@0
|
264 'foreign keys' => array(
|
danielebarchiesi@0
|
265 'aggregator_feed' => array(
|
danielebarchiesi@0
|
266 'table' => 'aggregator_feed',
|
danielebarchiesi@0
|
267 'columns' => array('fid' => 'fid'),
|
danielebarchiesi@0
|
268 ),
|
danielebarchiesi@0
|
269 ),
|
danielebarchiesi@0
|
270 );
|
danielebarchiesi@0
|
271
|
danielebarchiesi@0
|
272 return $schema;
|
danielebarchiesi@0
|
273 }
|
danielebarchiesi@0
|
274
|
danielebarchiesi@0
|
275 /**
|
danielebarchiesi@0
|
276 * @addtogroup updates-6.x-to-7.x
|
danielebarchiesi@0
|
277 * @{
|
danielebarchiesi@0
|
278 */
|
danielebarchiesi@0
|
279
|
danielebarchiesi@0
|
280 /**
|
danielebarchiesi@0
|
281 * Add hash column to aggregator_feed table.
|
danielebarchiesi@0
|
282 */
|
danielebarchiesi@0
|
283 function aggregator_update_7000() {
|
danielebarchiesi@0
|
284 db_add_field('aggregator_feed', 'hash', array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''));
|
danielebarchiesi@0
|
285 }
|
danielebarchiesi@0
|
286
|
danielebarchiesi@0
|
287 /**
|
danielebarchiesi@0
|
288 * Add aggregator teaser length to settings from old global default teaser length
|
danielebarchiesi@0
|
289 */
|
danielebarchiesi@0
|
290 function aggregator_update_7001() {
|
danielebarchiesi@0
|
291 variable_set('aggregator_teaser_length', variable_get('teaser_length'));
|
danielebarchiesi@0
|
292 }
|
danielebarchiesi@0
|
293
|
danielebarchiesi@0
|
294 /**
|
danielebarchiesi@0
|
295 * Add queued timestamp.
|
danielebarchiesi@0
|
296 */
|
danielebarchiesi@0
|
297 function aggregator_update_7002() {
|
danielebarchiesi@0
|
298 db_add_field('aggregator_feed', 'queued', array(
|
danielebarchiesi@0
|
299 'type' => 'int',
|
danielebarchiesi@0
|
300 'not null' => TRUE,
|
danielebarchiesi@0
|
301 'default' => 0,
|
danielebarchiesi@0
|
302 'description' => 'Time when this feed was queued for refresh, 0 if not queued.',
|
danielebarchiesi@0
|
303 ));
|
danielebarchiesi@0
|
304 db_add_index('aggregator_feed', 'queued', array('queued'));
|
danielebarchiesi@0
|
305 }
|
danielebarchiesi@0
|
306
|
danielebarchiesi@0
|
307 /**
|
danielebarchiesi@0
|
308 * @} End of "addtogroup updates-6.x-to-7.x"
|
danielebarchiesi@0
|
309 */
|
danielebarchiesi@0
|
310
|
danielebarchiesi@0
|
311 /**
|
danielebarchiesi@0
|
312 * @addtogroup updates-7.x-extra
|
danielebarchiesi@0
|
313 * @{
|
danielebarchiesi@0
|
314 */
|
danielebarchiesi@0
|
315
|
danielebarchiesi@0
|
316 /**
|
danielebarchiesi@0
|
317 * Increase the length of {aggregator_feed}.url.
|
danielebarchiesi@0
|
318 */
|
danielebarchiesi@0
|
319 function aggregator_update_7003() {
|
danielebarchiesi@0
|
320 db_drop_unique_key('aggregator_feed', 'url');
|
danielebarchiesi@0
|
321 db_change_field('aggregator_feed', 'url', 'url', array('type' => 'text', 'not null' => TRUE, 'description' => 'URL to the feed.'));
|
danielebarchiesi@0
|
322 db_change_field('aggregator_feed', 'link', 'link', array('type' => 'text', 'not null' => TRUE, 'description' => 'The parent website of the feed; comes from the <link> element in the feed.'));
|
danielebarchiesi@0
|
323 db_change_field('aggregator_item', 'link', 'link', array('type' => 'text', 'not null' => TRUE, 'description' => 'Link to the feed item.'));
|
danielebarchiesi@0
|
324 db_change_field('aggregator_item', 'guid', 'guid', array('type' => 'text', 'not null' => TRUE, 'description' => 'Unique identifier for the feed item.'));
|
danielebarchiesi@0
|
325 db_add_index('aggregator_feed', 'url', array(array('url', 255)));
|
danielebarchiesi@0
|
326 }
|
danielebarchiesi@0
|
327
|
danielebarchiesi@0
|
328 /**
|
danielebarchiesi@0
|
329 * @} End of "addtogroup updates-7.x-extra"
|
danielebarchiesi@0
|
330 */
|