Index: subscribe.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscribe/subscribe.module,v
retrieving revision 1.19
diff -u -r1.19 subscribe.module
--- subscribe.module	7 May 2006 19:19:24 -0000	1.19
+++ subscribe.module	10 May 2006 16:01:14 -0000
@@ -51,7 +51,16 @@
     $items[] = array('path' => 'admin/subscribe/pull', 'title' => t('update content'),
       'callback' => 'subscribe_pull_form',
       'access' => $access,
-      'type' => MENU_CALLBACK);
+      'type' => MENU_CALLBACK);   
+   }
+   else {
+    if (is_numeric(arg(3))) {
+      $items[] = array('path' => 'admin/subscribe/edit', 'title' => t('edit a subscription channel'),
+        'callback' => 'subscribe_url_form',
+        'access' => $access,
+        'callback arguments' => array(arg(3)),
+        'type' => MENU_CALLBACK);
+     }   	
    }
 
   return $items;
@@ -154,6 +163,7 @@
       '<table><tr><td>' .
       // l(t('edit'), "admin/subscribe/sub/$sub->sid/edit") . '</td><td>' .
       l(t('pull'), "admin/subscribe/pull/$sub->sid") . '</td><td>' .
+      l(t('edit'), "admin/subscribe/edit/$sub->sid") . '</td><td>' .
       l(t('delete'), "admin/subscribe/delete/$sub->sid") . '</td></tr></table>'
       );
   }
@@ -206,10 +216,20 @@
   return $output;
 }
 
-function subscribe_url_form() {
+function subscribe_url_form($sid = null) {
   // this form is a great opportunity for AJAXification
-  $edit = isset($_SESSION['edit']) ? $_SESSION['edit'] : array();
   $form = array();
+  if (!is_null($sid)) {
+  	$edit = subscribe_get_subscription($sid);
+  	$form['sid'] = array(
+  	  '#type' => 'hidden',
+  	  '#value' => $sid,
+  	);
+  }
+  else {
+    $edit = isset($_SESSION['edit']) ? $_SESSION['edit'] : array();
+  }
+  
   $form['channel'] = array(
     '#type' => 'fieldset',
     '#title' => 'Subscribe to channel'
@@ -271,6 +291,7 @@
   $channel_id = check_plain($edit['channel_id']);
   $username = check_plain($edit['username']);
   $pass = check_plain($edit['pass']);
+  $sid = check_plain($edit['sid']);
   $result = subscribe_xmlc_may_subscribe($url, $channel_id, $username, $pass);
   if ($result[0]) { // if user may subscribe
     $edit = array();
@@ -280,6 +301,12 @@
     $edit['base_url']     = $result[4];
     $edit['channel_id']   = $channel_id;
     $edit['url']          = $url;
+    $edit['username']     = $username;
+    $edit['pass']         = $pass;
+  
+    if (!is_null($sid)) {
+    	$edit['sid'] = $sid;
+    }
 
     // now that we have a response we can do preliminary validation
 
@@ -320,6 +347,12 @@
   return ('admin/subscribe/sub/vocabmap');
 }
 
+/**
+ * Load a subscription by subscription id
+ */
+function subscribe_get_subscription($sid) { 
+  return db_fetch_array(db_query('SELECT * FROM {subscribe_subscriptions} WHERE sid = %d', $sid));
+}
 
 /**
  * The form for mapping vocabularies from remote vocabularies to local vocabularies
@@ -330,6 +363,7 @@
     drupal_set_message(t('Unable to retrieve session data.'), 'error');
     drupal_goto('/subscribe/sub/wizard');
   }
+
   $edit = $_SESSION['edit'];
   $remote_vocabularies = array();
 
@@ -419,6 +453,7 @@
     drupal_set_message(t('Unable to retrieve session data.'), 'error');
     drupal_goto('/subscribe/sub/wizard');
   }
+
   $edit = array_merge($_SESSION['edit'], $edit);
   unset($_SESSION['edit']);
   $edit['channel_id'] = check_plain($edit['channel_id']);
