comparison modules/aggregator/aggregator.api.php @ 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 * Documentation for aggregator API.
6 */
7
8 /**
9 * @addtogroup hooks
10 * @{
11 */
12
13 /**
14 * Create an alternative fetcher for aggregator.module.
15 *
16 * A fetcher downloads feed data to a Drupal site. The fetcher is called at the
17 * first of the three aggregation stages: first, data is downloaded by the
18 * active fetcher; second, it is converted to a common format by the active
19 * parser; and finally, it is passed to all active processors, which manipulate
20 * or store the data.
21 *
22 * Modules that define this hook can be set as the active fetcher within the
23 * configuration page. Only one fetcher can be active at a time.
24 *
25 * @param $feed
26 * A feed object representing the resource to be downloaded. $feed->url
27 * contains the link to the feed. Download the data at the URL and expose it
28 * to other modules by attaching it to $feed->source_string.
29 *
30 * @return
31 * TRUE if fetching was successful, FALSE otherwise.
32 *
33 * @see hook_aggregator_fetch_info()
34 * @see hook_aggregator_parse()
35 * @see hook_aggregator_process()
36 *
37 * @ingroup aggregator
38 */
39 function hook_aggregator_fetch($feed) {
40 $feed->source_string = mymodule_fetch($feed->url);
41 }
42
43 /**
44 * Specify the title and short description of your fetcher.
45 *
46 * The title and the description provided are shown within the configuration
47 * page. Use as title the human readable name of the fetcher and as description
48 * a brief (40 to 80 characters) explanation of the fetcher's functionality.
49 *
50 * This hook is only called if your module implements hook_aggregator_fetch().
51 * If this hook is not implemented aggregator will use your module's file name
52 * as title and there will be no description.
53 *
54 * @return
55 * An associative array defining a title and a description string.
56 *
57 * @see hook_aggregator_fetch()
58 *
59 * @ingroup aggregator
60 */
61 function hook_aggregator_fetch_info() {
62 return array(
63 'title' => t('Default fetcher'),
64 'description' => t('Default fetcher for resources available by URL.'),
65 );
66 }
67
68 /**
69 * Create an alternative parser for aggregator module.
70 *
71 * A parser converts feed item data to a common format. The parser is called
72 * at the second of the three aggregation stages: first, data is downloaded
73 * by the active fetcher; second, it is converted to a common format by the
74 * active parser; and finally, it is passed to all active processors which
75 * manipulate or store the data.
76 *
77 * Modules that define this hook can be set as the active parser within the
78 * configuration page. Only one parser can be active at a time.
79 *
80 * @param $feed
81 * An object describing the resource to be parsed. $feed->source_string
82 * contains the raw feed data. The hook implementation should parse this data
83 * and add the following properties to the $feed object:
84 * - description: The human-readable description of the feed.
85 * - link: A full URL that directly relates to the feed.
86 * - image: An image URL used to display an image of the feed.
87 * - etag: An entity tag from the HTTP header used for cache validation to
88 * determine if the content has been changed.
89 * - modified: The UNIX timestamp when the feed was last modified.
90 * - items: An array of feed items. The common format for a single feed item
91 * is an associative array containing:
92 * - title: The human-readable title of the feed item.
93 * - description: The full body text of the item or a summary.
94 * - timestamp: The UNIX timestamp when the feed item was last published.
95 * - author: The author of the feed item.
96 * - guid: The global unique identifier (GUID) string that uniquely
97 * identifies the item. If not available, the link is used to identify
98 * the item.
99 * - link: A full URL to the individual feed item.
100 *
101 * @return
102 * TRUE if parsing was successful, FALSE otherwise.
103 *
104 * @see hook_aggregator_parse_info()
105 * @see hook_aggregator_fetch()
106 * @see hook_aggregator_process()
107 *
108 * @ingroup aggregator
109 */
110 function hook_aggregator_parse($feed) {
111 if ($items = mymodule_parse($feed->source_string)) {
112 $feed->items = $items;
113 return TRUE;
114 }
115 return FALSE;
116 }
117
118 /**
119 * Specify the title and short description of your parser.
120 *
121 * The title and the description provided are shown within the configuration
122 * page. Use as title the human readable name of the parser and as description
123 * a brief (40 to 80 characters) explanation of the parser's functionality.
124 *
125 * This hook is only called if your module implements hook_aggregator_parse().
126 * If this hook is not implemented aggregator will use your module's file name
127 * as title and there will be no description.
128 *
129 * @return
130 * An associative array defining a title and a description string.
131 *
132 * @see hook_aggregator_parse()
133 *
134 * @ingroup aggregator
135 */
136 function hook_aggregator_parse_info() {
137 return array(
138 'title' => t('Default parser'),
139 'description' => t('Default parser for RSS, Atom and RDF feeds.'),
140 );
141 }
142
143 /**
144 * Create a processor for aggregator.module.
145 *
146 * A processor acts on parsed feed data. Active processors are called at the
147 * third and last of the aggregation stages: first, data is downloaded by the
148 * active fetcher; second, it is converted to a common format by the active
149 * parser; and finally, it is passed to all active processors that manipulate or
150 * store the data.
151 *
152 * Modules that define this hook can be activated as a processor within the
153 * configuration page.
154 *
155 * @param $feed
156 * A feed object representing the resource to be processed. $feed->items
157 * contains an array of feed items downloaded and parsed at the parsing stage.
158 * See hook_aggregator_parse() for the basic format of a single item in the
159 * $feed->items array. For the exact format refer to the particular parser in
160 * use.
161 *
162 * @see hook_aggregator_process_info()
163 * @see hook_aggregator_fetch()
164 * @see hook_aggregator_parse()
165 *
166 * @ingroup aggregator
167 */
168 function hook_aggregator_process($feed) {
169 foreach ($feed->items as $item) {
170 mymodule_save($item);
171 }
172 }
173
174 /**
175 * Specify the title and short description of your processor.
176 *
177 * The title and the description provided are shown within the configuration
178 * page. Use as title the natural name of the processor and as description a
179 * brief (40 to 80 characters) explanation of the functionality.
180 *
181 * This hook is only called if your module implements hook_aggregator_process().
182 * If this hook is not implemented aggregator will use your module's file name
183 * as title and there will be no description.
184 *
185 * @return
186 * An associative array defining a title and a description string.
187 *
188 * @see hook_aggregator_process()
189 *
190 * @ingroup aggregator
191 */
192 function hook_aggregator_process_info() {
193 return array(
194 'title' => t('Default processor'),
195 'description' => t('Creates lightweight records of feed items.'),
196 );
197 }
198
199 /**
200 * Remove stored feed data.
201 *
202 * Aggregator calls this hook if either a feed is deleted or a user clicks on
203 * "remove items".
204 *
205 * If your module stores feed items for example on hook_aggregator_process() it
206 * is recommended to implement this hook and to remove data related to $feed
207 * when called.
208 *
209 * @param $feed
210 * The $feed object whose items are being removed.
211 *
212 * @ingroup aggregator
213 */
214 function hook_aggregator_remove($feed) {
215 mymodule_remove_items($feed->fid);
216 }
217
218 /**
219 * @} End of "addtogroup hooks".
220 */