/[drupal]/contributions/modules/simplefeed/simplefeed_item_views.inc
ViewVC logotype

Contents of /contributions/modules/simplefeed/simplefeed_item_views.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.7 - (show annotations) (download) (as text)
Fri Feb 8 00:48:16 2008 UTC (21 months, 2 weeks ago) by csevb10
Branch: MAIN
CVS Tags: DRUPAL-6--1-0, HEAD
Branch point for: DRUPAL-6--1
Changes since 1.6: +41 -41 lines
File MIME type: text/x-php
Purely aesthetic modifications to fix breaks with standard Drupal coding practice.
1 <?php
2 // $Id: simplefeed_item_views.inc,v 1.6 2007/10/03 21:19:05 m3avrck Exp $
3
4 /**
5 * Implementation of hook_views_tables().
6 */
7 function simplefeed_item_views_tables() {
8 $tables['simplefeed_feed_item'] = array(
9 'name' => 'simplefeed_feed_item',
10 'join' => array(
11 'left' => array(
12 'table' => 'node',
13 'field' => 'vid'
14 ),
15 'right' => array(
16 'field' => 'vid'
17 )
18 ),
19 'fields' => array(
20 'expires' => array(
21 'name' => t('SimpleFeed Feed Item: Expires'),
22 'sortable' => TRUE,
23 'handler' => views_handler_field_dates(),
24 'option' => 'string',
25 'help' => t('The default expiration date for a feed item.')
26 ),
27 'url' => array(
28 'name' => t('SimpleFeed Feed Item: URL'),
29 'help' => t('The URL to the original page for this feed item.')
30 ),
31 'title' => array(
32 'field' => 'url',
33 'name' => t('SimpleFeed Feed Item: Article title'),
34 'handler' => 'views_handler_field_feed_item_title',
35 'query_handler' => 'views_query_handler_field_feed_item_title',
36 'option' => array(
37 '#type' => 'select',
38 '#options' => array(
39 1 => t('As link'),
40 0 => t('Without link'),
41 ),
42 ),
43 'help' => t('The Title of the original page.')
44 )
45 ),
46 'sorts' => array(
47 'expires' => array(
48 'name' => t('SimpleFeed Feed Item: Expires'),
49 'handler' => 'views_handler_sort_data',
50 'option' => views_handler_sort_date_options(),
51 'help' => t('Sort by the default expiration date for a feed item.')
52 )
53 ),
54 'filters' => array(
55 'expires' => array(
56 'name' => t('SimpleFeed Feed Item: Expires'),
57 'operator' => 'views_handler_operator_gtlt',
58 'value' => views_handler_filter_date_value_form(),
59 'handler' => 'views_handler_filter_timestamp',
60 'option' => 'string',
61 'help' => t('Filter by the default expiration date for a feed item. ') .' '. views_t_strings('filter date'),
62 ),
63 'fid' => array(
64 'name' => t('SimpleFeed Feed Item: Parent Feed Node ID'),
65 'list' => 'views_handler_filter_feed_parent',
66 'operator' => 'views_handler_operator_andor',
67 'help' => t('This allows you to filter feed items based on parent feed.'),
68 ),
69 )
70 );
71
72 // reference the node table using an alias table name
73 $tables['feed_parent_node'] = array(
74 'name' => 'node',
75 'provider' => 'internal',
76 'join' => array(
77 'left' => array(
78 'table' => 'simplefeed_feed_item',
79 'field' => 'fid'
80 ),
81 'right' => array(
82 'field' => 'nid'
83 )
84 ),
85 'fields' => array(
86 'title' => array(
87 'name' => t('SimpleFeed Feed Item: Parent Feed Title'),
88 'handler' => array(
89 'views_handler_field_feed_parent_title' => t('As Link'),
90 'views_handler_field_feed_parent_title_nl' => t('Without Link'),
91 ),
92 'addlfields' => array('nid'),
93 'help' => t('Display the title of the parent feed node.'),
94 ),
95 ),
96 'sorts' => array(
97 'title' => array(
98 'name' => t('SimpleFeed Feed Item: Parent Feed Title'),
99 'help' => t('Sort by the title of the parent feed node.'),
100 ),
101 ),
102 );
103
104 return $tables;
105 }
106
107
108 /**
109 * Implementation of hook_views_arguments().
110 */
111 function simplefeed_item_views_arguments() {
112 $arguments = array(
113 'feed_parent' => array(
114 'name' => t('SimpleFeed Feed Item: Parent Feed Node ID'),
115 'handler' => 'views_handler_arg_feed_parent',
116 'help' => t('This argument will find all feed items for the specified feed node id.'),
117 ),
118 );
119 return $arguments;
120 }
121
122
123 /**
124 * Filter feed items based on parent feed.
125 */
126 function views_handler_filter_feed_parent() {
127 $parents = array();
128 $result = db_query("SELECT DISTINCT fid FROM {simplefeed_feed_item} ORDER BY fid");
129 while ($obj = db_fetch_object($result)) {
130 $parents[$obj->fid] = "$obj->fid";
131 }
132 return $parents;
133 }
134
135
136 /**
137 * Pass in a URL argument to find all feed items for a specific feed node id.
138 */
139 function views_handler_arg_feed_parent($op, &$query, $a1, $a2 = '') {
140 switch ($op) {
141 case 'summary':
142 $query->ensure_table('feed_parent_node');
143 $query->add_field('nid');
144 $query->add_field('fid', 'simplefeed_feed_item');
145 $query->add_field('title', 'feed_parent_node');
146 $query->add_field('nid', 'feed_parent_node', 'fpnid');
147 $query->add_where('feed_parent_node.nid IS NOT NULL');
148 $fieldinfo['field'] = 'feed_parent_node.title';
149 return $fieldinfo;
150 case 'sort':
151 $query->add_orderby('feed_parent_node', 'title', $a1);
152 break;
153 case 'filter':
154 $query->ensure_table('simplefeed_feed_item');
155 $query->add_where('simplefeed_feed_item.fid = %d', $a2);
156 $query->add_where('simplefeed_feed_item.vid = node.vid');
157 break;
158 case 'link':
159 $query->num_nodes .= format_plural($query->num_nodes, ' item', ' items');
160 return l($query->title, "$a2/$query->fpnid");
161 case 'title':
162 if ($query) {
163 $title = db_result(db_query('SELECT title FROM {node} WHERE nid = %d', $query));
164 return check_plain($title);
165 }
166 }
167 }
168
169 /**
170 * Add additional query information to the article title field
171 */
172 function views_query_handler_field_feed_item_title($fielddata, $fieldinfo, &$query) {
173 $query->add_field('title', 'node');
174 }
175
176 /**
177 * Format a field as a title to the article (possibly as a link)
178 */
179 function views_handler_field_feed_item_title($fieldinfo, $fielddata, $value, $data) {
180 if ($fielddata['options']) {
181 return l($data->title, $value);
182 }
183 else {
184 return check_plain($data->title);
185 }
186 }
187
188 /*
189 * Format a field as a link to the book parent node
190 */
191 function views_handler_field_feed_parent_title($fieldinfo, $fielddata, $value, $data) {
192 return l($value, "node/$data->feed_parent_node_nid");
193 }
194
195 function views_handler_field_feed_parent_title_nl($fieldinfo, $fielddata, $value, $data) {
196 return check_plain($value);
197 }
198
199
200 /**
201 * Implementation of hook_views_default_views().
202 */
203 function simplefeed_item_views_default_views() {
204 // feeds overview page
205 $view = new stdClass();
206 $view->name = 'feeds';
207 $view->description = t('Show a listing of all feeds and links to see each feed.');
208 $view->access = array();
209 $view->view_args_php = '';
210 $view->page = TRUE;
211 $view->page_title = t('Feeds');
212 $view->page_header = '';
213 $view->page_header_format = '1';
214 $view->page_footer = '';
215 $view->page_footer_format = '1';
216 $view->page_empty = t('No feed items found.');
217 $view->page_empty_format = '1';
218 $view->page_type = 'teaser';
219 $view->url = 'feeds';
220 $view->use_pager = TRUE;
221 $view->nodes_per_page = '10';
222 $view->sort = array(
223 array(
224 'tablename' => 'node',
225 'field' => 'created',
226 'sortorder' => 'DESC',
227 'options' => 'normal',
228 ),
229 );
230 $view->argument = array(
231 array(
232 'type' => 'feed_parent',
233 'argdefault' => '4',
234 'title' => '%1',
235 'options' => '',
236 'wildcard' => '',
237 'wildcard_substitution' => '',
238 ),
239 );
240 $view->field = array(
241 array(
242 'tablename' => 'node',
243 'field' => 'title',
244 'label' => '',
245 'handler' => 'views_handler_field_nodelink',
246 'options' => 'link',
247 ),
248 array(
249 'tablename' => 'node',
250 'field' => 'body',
251 'label' => '',
252 'handler' => 'views_handler_field_teaser',
253 ),
254 array(
255 'tablename' => 'feed_parent_node',
256 'field' => 'title',
257 'label' => '',
258 'handler' => 'views_handler_field_feed_parent_title',
259 ),
260 );
261 $view->filter = array(
262 array(
263 'tablename' => 'node',
264 'field' => 'status',
265 'operator' => '=',
266 'options' => '',
267 'value' => '1',
268 ),
269 array(
270 'tablename' => 'node',
271 'field' => 'type',
272 'operator' => 'OR',
273 'options' => '',
274 'value' => array(
275 0 => 'feed_item',
276 ),
277 ),
278 );
279 $view->exposed_filter = array();
280 $view->requires = array(node, feed_parent_node);
281 $views[$view->name] = $view;
282
283 // last feed items view
284 $view = new stdClass();
285 $view->name = 'feeds_latest';
286 $view->description = 'Show the latest feeds items.';
287 $view->access = array();
288 $view->view_args_php = '';
289 $view->page = TRUE;
290 $view->page_title = 'Latest feeds';
291 $view->page_header = '';
292 $view->page_header_format = '1';
293 $view->page_footer = '';
294 $view->page_footer_format = '1';
295 $view->page_empty = t('No feed items found.');
296 $view->page_empty_format = '1';
297 $view->page_type = 'teaser';
298 $view->url = 'feeds/latest';
299 $view->use_pager = TRUE;
300 $view->nodes_per_page = '10';
301 $view->sort = array(
302 array(
303 'tablename' => 'node',
304 'field' => 'created',
305 'sortorder' => 'DESC',
306 'options' => 'normal',
307 ),
308 );
309 $view->argument = array(
310 );
311 $view->field = array(
312 array(
313 'tablename' => 'node',
314 'field' => 'title',
315 'label' => '',
316 'handler' => 'views_handler_field_nodelink',
317 'options' => 'link',
318 ),
319 array(
320 'tablename' => 'node',
321 'field' => 'body',
322 'label' => '',
323 'handler' => 'views_handler_field_teaser',
324 ),
325 array(
326 'tablename' => 'feed_parent_node',
327 'field' => 'title',
328 'label' => '',
329 'handler' => 'views_handler_field_feed_parent_title',
330 ),
331 );
332 $view->filter = array(
333 array(
334 'tablename' => 'node',
335 'field' => 'status',
336 'operator' => '=',
337 'options' => '',
338 'value' => '1',
339 ),
340 array(
341 'tablename' => 'node',
342 'field' => 'type',
343 'operator' => 'OR',
344 'options' => '',
345 'value' => array(
346 0 => 'feed_item',
347 ),
348 ),
349 );
350 $view->exposed_filter = array();
351 $view->requires = array(node, feed_parent_node);
352 $views[$view->name] = $view;
353
354 // latest feeds block
355 $view = new stdClass();
356 $view->name = 'feeds_latest_block';
357 $view->description = 'Show the latest feeds items in a block.';
358 $view->access = array();
359 $view->view_args_php = '';
360 $view->url = 'feeds/latest';
361 $view->block = TRUE;
362 $view->block_title = 'Latest feeds';
363 $view->block_header = '';
364 $view->block_header_format = '1';
365 $view->block_footer = '';
366 $view->block_footer_format = '1';
367 $view->block_empty = t('No feed items found.');
368 $view->block_empty_format = '1';
369 $view->block_type = 'list';
370 $view->nodes_per_block = '10';
371 $view->block_more = TRUE;
372 $view->block_use_page_header = FALSE;
373 $view->block_use_page_footer = FALSE;
374 $view->block_use_page_empty = FALSE;
375 $view->sort = array(
376 array(
377 'tablename' => 'node',
378 'field' => 'created',
379 'sortorder' => 'DESC',
380 'options' => 'normal',
381 ),
382 );
383 $view->argument = array(
384 );
385 $view->field = array(
386 array(
387 'tablename' => 'node',
388 'field' => 'title',
389 'label' => '',
390 'handler' => 'views_handler_field_nodelink',
391 'options' => 'link',
392 ),
393 array(
394 'tablename' => 'feed_parent_node',
395 'field' => 'title',
396 'label' => '',
397 'handler' => 'views_handler_field_feed_parent_title',
398 ),
399 );
400 $view->filter = array(
401 array(
402 'tablename' => 'node',
403 'field' => 'status',
404 'operator' => '=',
405 'options' => '',
406 'value' => '1',
407 ),
408 array(
409 'tablename' => 'node',
410 'field' => 'type',
411 'operator' => 'OR',
412 'options' => '',
413 'value' => array(
414 0 => 'feed_item',
415 ),
416 ),
417 );
418 $view->exposed_filter = array();
419 $view->requires = array(node, feed_parent_node);
420 $views[$view->name] = $view;
421
422 return $views;
423 }

  ViewVC Help
Powered by ViewVC 1.1.2