Index: modules/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node.module,v retrieving revision 1.610 diff -u -r1.610 node.module --- modules/node.module 28 Feb 2006 21:10:04 -0000 1.610 +++ modules/node.module 1 Mar 2006 22:40:36 -0000 @@ -1493,19 +1493,35 @@ $item = node_load($node->nid); $link = url("node/$node->nid", NULL, NULL, 1); - if ($item_length != 'title') { - $teaser = ($item_length == 'teaser') ? TRUE : FALSE; + // Allow the module to prepare an RSS specific teaser and body + if (node_hook($item, 'rss_item')) { + $extra = node_invoke($item, 'rss_item', $item_length); + } + else { + // If the modules doesn't care, fall back to hook_view(). + if ($item_length != 'title') { + $teaser = ($item_length == 'teaser') ? TRUE : FALSE; + + // Filter and prepare node teaser + if (node_hook($item, 'view')) { + node_invoke($item, 'view', $teaser, FALSE); + } + else { + $item = node_prepare($item, $teaser); + } - // Filter and prepare node teaser - if (node_hook($item, 'view')) { - node_invoke($item, 'view', $teaser, FALSE); - } - else { - $item = node_prepare($item, $teaser); + // Allow modules to change $node->teaser before viewing + node_invoke_nodeapi($item, 'view', $teaser, FALSE); } + } - // Allow modules to change $node->teaser before viewing. - node_invoke_nodeapi($item, 'view', $teaser, FALSE); + // Allow any other modules to supply extra information + $extra = array_merge($extra, node_invoke_nodeapi($item, 'rss item', $item_length)); + $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => date('r', $item->created)), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid . ' at ' . $base_url, 'attributes' => array('isPermaLink' => 'false')))); + foreach ($extra as $element) { + if ($element['namespace']) { + $namespaces = array_merge($namespaces, $element['namespace']); + } } // Prepare the item description @@ -1524,14 +1540,6 @@ break; } - // Allow modules to add additional item fields - $extra = node_invoke_nodeapi($item, 'rss item'); - $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => date('r', $item->created)), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid . ' at ' . $base_url, 'attributes' => array('isPermaLink' => 'false')))); - foreach ($extra as $element) { - if ($element['namespace']) { - $namespaces = array_merge($namespaces, $element['namespace']); - } - } $items .= format_rss_item($item->title, $link, $item_text, $extra); }