'theme' => 'views_rss_core_element_skip',
'help' => 'http://www.rssboard.org/rss-profile#element-channel-skipdays',
);
- // @TODO: add 'image', 'pubDate' and 'lastBuildDate', ignore 'textInput'.
+ $elements['lastBuildDate'] = array(
+ 'configurable' => FALSE,
+ 'preprocess functions' => array('views_rss_core_preprocess_channel_lastbuilddate'),
+ 'help' => 'http://www.rssboard.org/rss-profile#element-channel-lastbuilddate',
+ );
+ // @TODO: add 'image' and 'pubDate', ignore 'textInput'.
}
/**
}
/**
+ * Implementation of hook_views_data_alter().
+ */
+function views_rss_core_views_query_alter(&$view, &$query) {
+ if ($view->style_plugin->definition['handler'] == 'views_plugin_style_rss_fields') {
+ // Select the most recent node creation date for <lastBuildDate> element.
+ $query->fields['views_rss_max_created'] = array(
+ 'field' => '(SELECT MAX(created) FROM node)',
+ 'alias' => 'views_rss_max_created',
+ );
+ }
+}
+
+/**
* Preprocess function for channel <title> element.
*/
function views_rss_core_preprocess_channel_title($vars) {
}
/**
+ * Preprocess function for item <lastBuildDate> element.
+ */
+function views_rss_core_preprocess_channel_lastbuilddate($vars) {
+ if (isset($vars['view']->result[0]->views_rss_max_created)) {
+ return date('r', $vars['view']->result[0]->views_rss_max_created);
+ }
+}
+
+/**
* Preprocess function for item <description> element.
*/
function views_rss_core_preprocess_item_description($vars) {
// Channel element defaults.
$channel_elements = $this->xml_channel_elements();
if (count($channel_elements)) {
- foreach (array_keys($channel_elements) as $element_name) {
+ foreach (array_keys($channel_elements) as $element) {
list($namespace, $element_name) = $this->extract_element_names($element, 'core');
$options['channel'][$namespace][$element_name] = array('default' => '');
}