Index: adminrss/README.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/adminrss/README.txt,v
retrieving revision 1.1
diff -u -r1.1 README.txt
--- adminrss/README.txt	1 Feb 2006 07:11:27 -0000	1.1
+++ adminrss/README.txt	31 Oct 2007 06:14:36 -0000
@@ -3,29 +3,22 @@
 Description
 -----------
 
-The AdminRSS module creates RSS feeds for the administrative information for drupal website.
-These are protected with a key that can be set in admin/settings/adminrss page.
+The AdminRSS module creates RSS feeds for the administrative information
+of a drupal website. These are protected with a key string that can be set at
+the "admin/settings/adminrss" page.
 
-The resulting pages can then be read at:
+The resulting pages can then be fetchrd at:
   adminrss/node/keystring  - RSS feed for unapproved nodes
   adminrss/comment/keystring - RSS feed for unapproved comments
-  
-  
-
 
 Installation
 ------------
 
-1) copy the adminrss directory into the modules directory
-
-2) enable the 'gmap module' in drupal
-
-3) edit admin/settings/adminrss to set a keystring
-
+1) copy the adminrss directory into the sites/all/modules directory
+2) enable the 'adminrss module' in drupal
+3) go to admin/settings/adminrss to set a keystring
 4) configure your rss reader to read the appropriate page
 
-
-
 To do
 -----
 
@@ -39,11 +32,13 @@
 http://www.webgeer.com/James
 
 Thanks to Fredrik Jonsson and Gabor Hojtsy for their modules adminblock and
-commentrss which were heavily used to
+commentrss which were heavily used to.
 
 History
 -------
 
-2005-01-30
- - initial development
-
+2007-01-16 Port for Drupal 5 (osinet),
+  New format for the comment feed.
+  Direct links to feeds added in settings.
+2006-01-30 Port for Drupal 4.7
+2005-01-30 Initial development for Drupal 4.6
Index: adminrss/adminrss.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/adminrss/adminrss.info,v
retrieving revision 1.2
diff -u -r1.2 adminrss.info
--- adminrss/adminrss.info	18 Jun 2007 23:50:47 -0000	1.2
+++ adminrss/adminrss.info	31 Oct 2007 06:14:33 -0000
@@ -1,4 +1,5 @@
-; $Id: adminrss.info,v 1.2 2007/06/18 23:50:47 dww Exp $
+; $Id$
 name = Admin RSS
 description = Moderation/approval queue feeds.
-
+version = "$Name$"
+package = Contrib - Admin
Index: adminrss/adminrss.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/adminrss/adminrss.module,v
retrieving revision 1.4
diff -u -r1.4 adminrss.module
--- adminrss/adminrss.module	22 Apr 2007 12:32:46 -0000	1.4
+++ adminrss/adminrss.module	31 Oct 2007 06:14:35 -0000
@@ -1,236 +1,219 @@
-<?php
-// $id$
-
-/**
- * @file
- * Author: James Blake <james at webgeer dot com>
- * Enables one to view unapproved nodes or comments using an RSS reader.
- *
- * This module was made a lot easier for me by both adminblock.module and commentrss.module.
- * Thanks to both Fredrik Jonsson and Gabor Hojtsy.
- */
-
-define('ADMINRSS_KEY', variable_get('adminrss_key',NULL));
-
-/**
- * Implementation of hook_help().
- */
-function adminrss_help($section) {
-  switch ($section) {
-    case 'admin/modules#description':
-      return t('Provide an RSS feed for unapproved nodes and comments');
-  }
-}
-
-/**
- * 5.0 equivalent of hook_settings().
- *
- */
-function adminrss_admin_settings() {
-
-$key = variable_get('adminrss_key', '');
-if ($key == ''){
-  $key = md5(uniqid(rand(), true));
-  variable_set('adminrss_key', $key);
-}
-
-$form = array();
-$form['adminrss_key'] = array(
-  '#type'          => 'textfield',
-  '#title'         => t('Admin RSS Key'),
-  '#required'      => TRUE,
-  '#description'   => t('This is the key that will be required in order to get access to the admin RSS feeds.'),
-  '#default_value' => $key,
-  '#weight'        => -5);
-
-if (!empty($key)) {
-  $form['feeds'] = array(
-  '#type'          => 'markup',
-  '#value'         => t('<ul>Admin RSS Feeds locations: <li>!nodefeed</li><li>!commentfeed</li></ul>',
-    array(
-      '!nodefeed'    => l(t('Nodes feed'),    "adminrss/node/$key"),
-      '!commentfeed' => l(t('Comments feed'), "adminrss/comment/$key")
-      )
-    ),
-  );
-}
-  return system_settings_form($form);
-}
-
-/**
- * Implementation of hook_menu().
- *
- */
-
-function adminrss_menu($may_cache) {
-  $items = array();
-
-  if ($may_cache) {
-    $items[] = array(
-      'path'     => 'adminrss',
-      'title'    => 'Admin RSS Feed',
-      'callback' => 'adminrss_handler',
-      'access'   => TRUE,
-      'type'     => MENU_CALLBACK
-    );
-    $items[] = array(
-      'path'     => 'adminrss/publish',
-      'title'    => 'Publish',
-      'callback' => 'adminrss_publish',
-      'access'   => user_access('administer nodes'),
-      'type'     => MENU_CALLBACK
-    );
-    $items[] = array(
-      'path'     => 'adminrss/publish_promote',
-      'title'    => 'Publish and promote',
-      'callback' => 'adminrss_publish_and_promote',
-      'access'   => user_access('administer nodes'),
-      'type'     => MENU_CALLBACK
-    );
-    $items[] = array(
-      'path'        => 'admin/settings/adminrss',
-      'title'       => 'Admin RSS Feed',
-      'description' => t('Configure access to the Admin RSS feeds.'),
-      'callback'    => 'drupal_get_form',
-      'callback arguments' => array('adminrss_admin_settings'),
-      'access'      => user_access('administer site configuration'),
-      'type'        => MENU_NORMAL_ITEM,
-    );
-  }
-
-  return $items;
-}
-
-/**
- * The handler for admin RSS
- *
- * If the $type is not set to either 'node' or 'comment' or the key is not set,
- * the function returns 401
- */
-function adminrss_handler($type = NULL, $key = NULL) {
-  if (isset($type) && isset($key) && ($key == ADMINRSS_KEY)) {
-    if (in_array($type, array('node', 'comment'))) {
-      if (call_user_func('adminrss_feed_' . $type)) {
-        return;
-      }
-    }
-  }
-  else {
-    //error must specify both a type and provide a key
-    drupal_access_denied();
-  }
-}
-
-/**
-  * Publish the comment/node and then redirect to the node. Uses Drupal auth.
-  */
-function adminrss_publish($type, $nid){
-  if (isset($type) && isset($nid) && in_array($type, array('node', 'comment'))){
-    if ($type=='node'){
-      node_operations_publish(array($nid));
-      drupal_goto('node/'.$nid);
-    } else {
-      $comment = _comment_load($nid);
-      db_query('UPDATE {comments} SET status=0 WHERE cid='.$nid);
-      drupal_goto("node/$comment->nid",NULL,"comment-$comment->cid");
-    }
-  } else {
-    drupal_access_denied();
-  }
-}
-
-/**
-  * Publish and promote the node to the front page.
-  */
-function adminrss_publish_and_promote($nid){
-  if (isset($nid)){
-    node_operations_publish(array($nid));
-    node_operations_promote(array($nid));
-    drupal_goto('node/'.$nid);
-  } else {
-    drupal_access_denied();
-  }
-}
-
-/**
- * Output a node feed for nodes under moderation
- */
-function adminrss_feed_node() {
-  $result = db_query_range('SELECT n.nid, n.title, n.changed, u.name, u.uid
-                            FROM {node} n
-                            INNER JOIN {users} u ON n.uid = u.uid
-                            WHERE n.status = 0 AND n.moderate = 1
-                            ORDER BY n.changed DESC', 0, 15);
-  $items = '';
-  while ($results = db_fetch_object($result)) {
-    $node = node_load($results->nid);
-    $link = url('node/edit/'. $node->nid, NULL,NULL,TRUE); 
-    $content = '<p>'.t($node->type.': !node', array('!node' => l($node->title, "node/$node->nid", NULL, NULL, NULL))).'</p>';
-    // Insert actions
-    $content .= '<p>'.l(t('publish'),'adminrss/publish/node/'.$node->nid, NULL, NULL, NULL).'|'.l(t('publish and promote'),'adminrss/publish_promote/'.$node->nid, NULL, NULL, NULL).'</p>';
-    if (!empty($node->body)) {
-      $content .= " : \n" . filter_xss($node->body);
-    }
-    $items .= format_rss_item($comment->subject, $link, $content, array('pubDate' => date('r', $node->timestamp)));
-  }
-  adminrss_format_feed($items, array(
-    'description' => t('Unapproved Nodes for Administration'),
-    'title'       => variable_get('site_name', 'drupal') . ' - ' . t('Nodes'),
-  ));
-}
-
-/**
- * Output a comment feed for comments under moderation
- * Items include a link to the comment on the node page and the node title,
- * to make it easier to check whether the comment is on topic.
- */
-function adminrss_feed_comment() {
-  $result = db_query_range('SELECT c.timestamp, c.subject, c.cid, c.nid, n.title, c.comment
-                            FROM {comments} c
-                            INNER JOIN {node} n ON c.nid = n.nid
-                            WHERE c.status = 1
-                            ORDER BY c.timestamp DESC ', 0, 15);
-  $items = '';
-  while ($comment = db_fetch_object($result)) {
-    $link = url('comment/edit/'. $comment->cid, NULL,NULL,TRUE); // url("node/{$comment->nid}", NULL, "comment-{$comment->cid}", TRUE);
-    $content = t('Comment on node !node', array('!node' => l($comment->title, "node/$comment->nid", NULL, NULL, "comment-$comment->cid")));
-    $content .= '<p>'.l(t('publish'),'adminrss/publish/comment/'.$comment->cid, NULL, NULL, NULL).'</p>';
-    if (!empty($comment->comment)) {
-      $content .= "\n" . filter_xss($comment->comment);
-    }
-    $items .= format_rss_item($comment->subject, $link, $content, array('pubDate' => date('r', $comment->timestamp)));
-  }
-  adminrss_format_feed($items, array(
-    'description' => t('Unapproved Comments for Administration'),
-    'title'       => variable_get('site_name', 'drupal') . ' - ' . t('Comments'),
-  ));
-}
-
-/**
- * Note this function was originally identical to the commentrss.module's
- * function commentrss_format_feed()
- */
-function adminrss_format_feed($items, $channel = array()) {
-  global $base_url;
-
-  $languages = (function_exists('locale')
-    ? locale_supported_languages()
-    : array('name' => array('en' => 'English')));
-  $channel_defaults = array(
-    'version'     => '0.92',
-    'title'       => variable_get('site_name', 'drupal') . ' - ' . t('AdminRSS'),
-    'link'        => $base_url,
-    'description' => t('AdminRSS'),
-    'language'    => (($key = reset(array_keys($languages['name']))) ? $key : 'en')
-  );
-  $channel = array_merge($channel_defaults, $channel);
-
-  $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
-    . "<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">]>\n"
-    . "<rss version=\"". $channel["version"] . "\" xml:base=\"". $base_url ."\">\n"
-    . format_rss_channel($channel['title'], $channel['link'], $channel['description'], $items, $channel['language'])
-    . "</rss>\n";
-
-  drupal_set_header('Content-Type: text/xml; charset=utf-8');
-  print $output;
-}
+<?php
+// $Id$
+
+/**
+ * @file
+ * Author: James Blake <james at webgeer dot com>
+ * Enables one to view unapproved nodes or comments using an RSS reader.
+ *
+ * This module was made a lot easier for me by both adminblock.module and commentrss.module.
+ * Thanks to both Fredrik Jonsson and Gabor Hojtsy.
+ */
+
+define('ADMINRSS_KEY',       variable_get('adminrss_key', NULL));
+define('ADMINRSS_LINK_TYPE', 'adminrss_link_type');
+
+/**
+ * Implementation of hook_help().
+ *
+ * @return string
+ */
+function adminrss_help($section) {
+  switch ($section) {
+    case 'admin/modules#description':
+      return t('Provide an RSS feed for unapproved nodes and comments');
+  }
+}
+
+/**
+ * 5.0 equivalent of hook_settings().
+ *
+ * @return array
+ */
+function adminrss_admin_settings() {
+
+  $key = variable_get('adminrss_key', '');
+
+  $form = array();
+  $form['adminrss_key'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Admin RSS Key'),
+    '#required'      => TRUE,
+    '#description'   => t('This is the key that will be required in order to get access to the admin RSS feeds.'),
+    '#size'          => 50,
+    '#maxlength'     => 255,
+    '#default_value' => $key,
+    '#weight'        => -5
+    );
+
+  if (!empty($key)) {
+    $form['feeds'] = array(
+      '#type'        => 'fieldset',
+      '#title'       => t('Admin RSS Feeds locations'),
+      '#description' => t('Copy and paste these links to your RSS aggregator.'),
+      );
+    $form['feeds']['links'] = array(
+      '#type'        => 'markup',
+      '#value'       => t('<ul><li>!nodefeed</li><li>!commentfeed</li></ul>',
+        array(
+          '!nodefeed'    => l(t('Nodes feed'),    "adminrss/node/$key"),
+          '!commentfeed' => l(t('Comments feed'), "adminrss/comment/$key")
+        )
+      ),
+    );
+  }
+
+  $form[ADMINRSS_LINK_TYPE] = array(
+    '#type'          => 'select',
+    '#title'         => t('Comment feed links back to'),
+    '#options'       => array(
+      0 => t('Comment approval queue'),
+      1 => t('Individual comment edit'),
+      ),
+    '#default_value' => variable_get(ADMINRSS_LINK_TYPE, 0),
+  );
+
+  return system_settings_form($form);
+}
+
+/**
+ * Implementation of hook_menu().
+ *
+ * @param boolean $may_cache
+ * @return array
+ */
+function adminrss_menu($may_cache) {
+  $items = array();
+
+  if ($may_cache) {
+    $items[] = array(
+      'path'     => 'adminrss',
+      'title'    => t('Admin RSS Feed'),
+      'callback' => 'adminrss_handler',
+      'access'   => TRUE,
+      'type'     => MENU_CALLBACK
+    );
+    $items[] = array(
+      'path'        => 'admin/settings/adminrss',
+      'title'       => t('Admin RSS Feed'),
+      'description' => t('Configure access to the Admin RSS feeds.'),
+      'callback'    => 'drupal_get_form',
+      'callback arguments' => array('adminrss_admin_settings'),
+      'access'      => user_access('administer site configuration'),
+      'type'        => MENU_NORMAL_ITEM,
+    );
+  }
+
+  return $items;
+}
+
+/**
+ * The handler for admin RSS
+ *
+ * If the $type is not set to either 'node' or 'comment' or the key is not set,
+ * the function returns 401.
+ *
+ * @param string $type
+ * @param string $key
+ * @return void
+ */
+function adminrss_handler($type = NULL, $key = NULL) {
+  if (isset($type) && isset($key) && ($key == ADMINRSS_KEY)) {
+    if (in_array($type, array('node', 'comment'))) {
+      if (call_user_func('adminrss_feed_'. $type)) {
+        return;
+      }
+    }
+  }
+  else {
+    //error must specify both a type and provide a key
+    drupal_access_denied();
+  }
+}
+
+/**
+ * Output a node feed for nodes under moderation
+ *
+ * @return string
+ */
+function adminrss_feed_node() {
+  $result = db_query_range('SELECT n.nid, n.title, n.changed, u.name, u.uid
+                            FROM {node} n
+                            INNER JOIN {users} u ON n.uid = u.uid
+                            WHERE n.status = 0 AND n.moderate = 1
+                            ORDER BY n.changed DESC', 0, 15);
+  node_feed($result, array('description' => t('Unapproved Nodes for Administration')));
+}
+
+/**
+ * Output a comment feed for comments under moderation
+ *
+ * Items include a link to the comment on the node page and the node title,
+ * to make it easier to check whether the comment is on topic.
+ *
+ * @return string
+ */
+function adminrss_feed_comment() {
+  $result = db_query_range('SELECT c.timestamp, c.subject, c.cid, c.nid, n.title, c.comment
+                            FROM {comments} c
+                            INNER JOIN {node} n ON c.nid = n.nid
+                            WHERE c.status = 1
+                            ORDER BY c.timestamp DESC ', 0, 15);
+  $items = '';
+  $link_type = variable_get(ADMINRSS_LINK_TYPE, 0);
+  while ($comment = db_fetch_object($result)) {
+    switch ($link_type) {
+      case 0: // approval queue
+        $link = url('admin/content/comment/list/approval', NULL, NULL, TRUE);
+        break;
+      case 1: // individual edit link
+        $link = url("comment/edit/$comment->cid", NULL, NULL, TRUE);
+        // Old-style links below:
+        // url("node/{$comment->nid}", NULL, "comment-{$comment->cid}", TRUE);
+        break;
+      default: // site home
+        $link = base_path();
+    }
+    $content = t('Comment on node !node', array('!node' => l($comment->title, "node/$comment->nid", NULL, NULL, "comment-$comment->cid")));
+    if (!empty($comment->comment)) {
+      $content .= " : \n" . filter_xss($comment->comment);
+    }
+    $items .= format_rss_item($comment->subject, $link, $content, array('pubDate' => date('r', $comment->timestamp)));
+//  $comment = db_fetch_object($result)) {
+//  $items[] = $comment->subject .' - '. format_date($comment->timestamp, 'medium') .'<br />['. l(t('node'), 'node/'. $comment->nid, array('title' => $comment->title)) .']|['. l(t('edit'), 'comment/edit/'. $comment->cid) .']|['. l(t('delete'), 'admin/comment/delete/'. $comment->cid) .']';
+  }
+  adminrss_format_feed($items, array('description' => t('Unapproved Comments for Administration')));
+}
+
+/**
+ * Note this function was originally identical to the commentrss.module's
+ * function commentrss_format_feed()
+ *
+ * @param array $items
+ * @param array $channel
+ * @return void
+ */
+function adminrss_format_feed($items, $channel = array()) {
+  global $base_url;
+
+  $languages = (function_exists('locale')
+    ? locale_supported_languages()
+    : array('name' => array('en' => 'English')));
+  $channel_defaults = array(
+    'version'     => '0.92',
+    'title'       => variable_get('site_name', 'drupal') .' - '. t('Comments'),
+    'link'        => $base_url,
+    'description' => t('Comments'),
+    'language'    => (($key = reset(array_keys($languages['name']))) ? $key : 'en')
+  );
+  $channel = array_merge($channel_defaults, $channel);
+
+  $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+    ."<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">]>\n"
+    ."<rss version=\"". $channel["version"] ."\" xml:base=\"". $base_url ."\">\n"
+    . format_rss_channel($channel['title'], $channel['link'], $channel['description'], $items, $channel['language'])
+    ."</rss>\n";
+
+  drupal_set_header('Content-Type: text/xml; charset=utf-8');
+  print $output;
+}
\ No newline at end of file
