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