comparison modules/aggregator/aggregator.install @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ff03f76ab3fe
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 ),
264 'foreign keys' => array(
265 'aggregator_feed' => array(
266 'table' => 'aggregator_feed',
267 'columns' => array('fid' => 'fid'),
268 ),
269 ),
270 );
271
272 return $schema;
273 }
274
275 /**
276 * @addtogroup updates-6.x-to-7.x
277 * @{
278 */
279
280 /**
281 * Add hash column to aggregator_feed table.
282 */
283 function aggregator_update_7000() {
284 db_add_field('aggregator_feed', 'hash', array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''));
285 }
286
287 /**
288 * Add aggregator teaser length to settings from old global default teaser length
289 */
290 function aggregator_update_7001() {
291 variable_set('aggregator_teaser_length', variable_get('teaser_length'));
292 }
293
294 /**
295 * Add queued timestamp.
296 */
297 function aggregator_update_7002() {
298 db_add_field('aggregator_feed', 'queued', array(
299 'type' => 'int',
300 'not null' => TRUE,
301 'default' => 0,
302 'description' => 'Time when this feed was queued for refresh, 0 if not queued.',
303 ));
304 db_add_index('aggregator_feed', 'queued', array('queued'));
305 }
306
307 /**
308 * @} End of "addtogroup updates-6.x-to-7.x"
309 */
310
311 /**
312 * @addtogroup updates-7.x-extra
313 * @{
314 */
315
316 /**
317 * Increase the length of {aggregator_feed}.url.
318 */
319 function aggregator_update_7003() {
320 db_drop_unique_key('aggregator_feed', 'url');
321 db_change_field('aggregator_feed', 'url', 'url', array('type' => 'text', 'not null' => TRUE, 'description' => 'URL to the feed.'));
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.'));
323 db_change_field('aggregator_item', 'link', 'link', array('type' => 'text', 'not null' => TRUE, 'description' => 'Link to the feed item.'));
324 db_change_field('aggregator_item', 'guid', 'guid', array('type' => 'text', 'not null' => TRUE, 'description' => 'Unique identifier for the feed item.'));
325 db_add_index('aggregator_feed', 'url', array(array('url', 255)));
326 }
327
328 /**
329 * @} End of "addtogroup updates-7.x-extra"
330 */