? views_288801.patch
? modules/aggregator
Index: includes/handlers.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/handlers.inc,v
retrieving revision 1.101
diff -u -p -r1.101 handlers.inc
--- includes/handlers.inc	2 Dec 2008 16:04:59 -0000	1.101
+++ includes/handlers.inc	16 Dec 2008 19:46:34 -0000
@@ -1300,6 +1300,8 @@ function views_views_api() {
   );
 }
 
+function aggregator_views_api() { return views_views_api(); }
+
 function book_views_api() { return views_views_api(); }
 
 function comment_views_api() { return views_views_api(); }
Index: modules/aggregator.views.inc
===================================================================
RCS file: modules/aggregator.views.inc
diff -N modules/aggregator.views.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/aggregator.views.inc	16 Dec 2008 19:46:34 -0000
@@ -0,0 +1,292 @@
+<?php
+// $Id$
+/**
+ * @file
+ * Provide views data and handlers for aggregator.module
+ */
+
+/**
+ * @defgroup views_aggregator_module aggregator.module handlers
+ *
+ * Includes the core 'aggregator_feed,' 'aggregator_category,' and 'aggregator_item'
+ * tables.
+ *
+ * @{
+ */
+
+/**
+ * Implementation of hook_views_data()
+ */
+function aggregator_views_data() {
+  // ----------------------------------------------------------------------
+  // Main Aggregator Item base table
+
+  // Define the base group of this table. Fields that don't
+  // have a group defined will go into this field by default.
+  $data['aggregator_item']['table']['group']  = t('Aggregator');
+
+  // Advertise this table as a possible base table
+  $data['aggregator_item']['table']['base'] = array(
+    'field' => 'iid',
+    'title' => t('Aggregator item'),
+    'help' => t("Aggregator items are imported from external RSS and Atom news feeds."),
+  );
+
+  // ----------------------------------------------------------------
+  // Fields
+
+  // title
+  $data['aggregator_item']['title'] = array(
+    'title' => t('Title'), // The item it appears as on the UI,
+    'help' => t('The title of the aggregator item.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_aggregator_title_link',
+      'extra' => array('link'),
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // link
+  $data['aggregator_item']['link'] = array(
+    'title' => t('Link'), // The item it appears as on the UI,
+    'help' => t('The link to the original source URL of the item.'),
+    'field' => array(
+      'handler' => 'views_handler_field_url',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // author
+  $data['aggregator_item']['author'] = array(
+    'title' => t('Author'), // The item it appears as on the UI,
+    'help' => t('The author of the original imported item.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_xss',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  // feed body
+  $data['aggregator_item']['description'] = array(
+    'title' => t('Body'), // The item it appears as on the UI,
+    'help' => t('The actual content of the imported item.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_xss',
+      'click sortable' => FALSE,
+     ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // item timestamp
+  $data['aggregator_item']['timestamp'] = array(
+    'title' => t('Timestamp'), // The item it appears as on the UI,
+    'help' => t('The date the original feed item was posted. (With some feeds, this will be the date it was imported.)'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_date',
+    ),
+  );
+
+
+  // ----------------------------------------------------------------------
+  // Aggregator feed table
+
+  $data['aggregator_feed']['table']['group']  = t('Aggregator feed');
+
+  // Explain how this table joins to others.
+  $data['aggregator_feed']['table']['join'] = array(
+    'aggregator_item' => array(
+      'left_field' => 'fid',
+      'field' => 'fid',
+    ),
+  );
+
+  // fid
+  $data['aggregator_feed']['fid'] = array(
+    'title' => t('Feed ID'),
+    'help' => t('The unique ID of the aggregator feed.'), // The help that appears on the UI,
+    // Information for displaying the fid
+    'field' => array(
+      'handler' => 'views_handler_field_aggregator_feed',
+      'click sortable' => TRUE,
+    ),
+    // Information for accepting a fid as an argument
+    'argument' => array(
+      'handler' => 'views_handler_argument_aggregator_fid',
+      'name field' => 'title', // the field to display in the summary.
+      'numeric' => TRUE,
+    ),
+    // Information for accepting a nid as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_aggregator_feed',
+    ),
+    // Information for sorting on a nid.
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // title
+  $data['aggregator_feed']['title'] = array(
+    'title' => t('Title'), // The item it appears as on the UI,
+    'help' => t('The title of the aggregator feed.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_aggregator_title_link',
+      'extra' => array('link'),
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // link
+  $data['aggregator_feed']['link'] = array(
+    'title' => t('Link'), // The item it appears as on the UI,
+    'help' => t('The link to the source URL of the feed.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_url',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // feed last updated
+  $data['aggregator_feed']['checked'] = array(
+    'title' => t('Last checked'), // The item it appears as on the UI,
+    'help' => t('The date the feed was last checked for new content.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_date',
+    ),
+  );
+
+  // feed description
+  $data['aggregator_feed']['description'] = array(
+    'title' => t('Description'), // The item it appears as on the UI,
+    'help' => t('The description of the aggregator feed.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_xss',
+      'click sortable' => FALSE,
+     ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+  );
+
+  // feed last updated
+  $data['aggregator_feed']['modified'] = array(
+    'title' => t('Last modified'), // The item it appears as on the UI,
+    'help' => t('The date of the most recent new content onf the feed.'),
+     // Information for displaying a title as a field
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+     ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    // Information for accepting a title as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_date',
+    ),
+  );
+
+  return $data;
+}
+
+/**
+ * Implementation of hook_views_handlers() to register all of the basic handlers
+ * views uses.
+ */
+function aggregator_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'views') . '/modules/aggregator',
+    ),
+    'handlers' => array(
+      // field handler
+      'views_handler_field_aggregator_title_link' => array(
+        'parent' => 'views_handler_field',
+      ),
+
+      // argument handlers
+      'views_handler_argument_aggregator_fid' => array(
+        'parent' => 'views_handler_argument_numeric',
+      ),
+    ),
+  );
+}
+
+/**
+ * @}
+ */
