? global_subscribe.patch
Index: issue.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/issue.inc,v
retrieving revision 1.343
diff -u -p -r1.343 issue.inc
--- issue.inc	21 Mar 2009 16:23:24 -0000	1.343
+++ issue.inc	31 Mar 2009 19:39:22 -0000
@@ -253,6 +253,59 @@ function project_issue_subscribe_submit(
     }
 }
 
+function project_issue_global_subscribe(&$form, $uid) {
+  $levels = array(0 => t('None'), 1 => t('Own issues'), 2 => t('All issues'));
+
+  $form['buttons']['all'] = array(
+    '#type' => 'markup',
+    '#value' => t('All projects'),
+  );
+  foreach ($levels as $key => $level) {
+    $form['buttons'][$level] = array(
+      '#type' => 'submit',
+      '#name' => 'all',
+      '#value' => $level,
+    );
+  }
+  $nids = array();
+
+  $result = db_query(db_rewrite_sql("SELECT s.nid, n.title, s.level, p.uri FROM {project_subscriptions} s INNER JOIN {node} n ON n.nid = s.nid INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1 AND s.uid = %d ORDER BY n.title", 's'), $uid);
+  while ($project = db_fetch_object($result)) {
+    $form['project'][$project->nid]['title'] = array(
+      '#value' => l($project->title, "node/$project->nid"),
+    );
+    foreach ($levels as $key => $level) {
+      if ($project->level == $key) {
+        $status[$project->nid] = $key;
+      }
+    }
+    $nids[] = $project->nid;
+  }
+
+  if (empty($nids)) {
+    $placeholders = '';
+  }
+  else {
+    $placeholders = " AND n.nid NOT IN (". implode(',', array_fill(0, count($nids), '%d')) .")";
+  }
+
+  $result = db_query(db_rewrite_sql("SELECT n.nid, n.title, p.uri FROM {node} n INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1". ($nids ?  $placeholders : "") ." ORDER BY n.title"), $nids);
+  while ($project = db_fetch_object($result)) {
+    $form['project'][$project->nid]['title'] = array(
+      '#value' => l($project->title, "node/$project->nid"),
+    );
+    $nids[] = $project->nid;
+  }
+
+  foreach ($nids as $nid) {
+    $form['options']['#tree'] = TRUE;
+    $form['options'][$nid] = array(
+      '#type' => 'radios',
+      '#default_value' => isset($status[$nid]) ? $status[$nid] : 0,
+      '#options' => $levels,
+    );
+  }
+}
 
 function project_issue_subscribe($form_state, $project_nid = 0) {
   global $user;
@@ -298,56 +351,7 @@ function project_issue_subscribe($form_s
 
   }
   else {
-
-    $form['buttons']['all'] = array(
-      '#type' => 'markup',
-      '#value' => t('All projects'),
-    );
-    foreach ($levels as $key => $level) {
-      $form['buttons'][$level] = array(
-        '#type' => 'submit',
-        '#name' => 'all',
-        '#value' => $level,
-      );
-    }
-    $nids = array();
-
-    $result = db_query(db_rewrite_sql("SELECT s.nid, n.title, s.level, p.uri FROM {project_subscriptions} s INNER JOIN {node} n ON n.nid = s.nid INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1 AND s.uid = %d ORDER BY n.title", 's'), $user->uid);
-    while ($project = db_fetch_object($result)) {
-      $form['project'][$project->nid]['title'] = array(
-        '#value' => l($project->title, "node/$project->nid"),
-      );
-      foreach ($levels as $key => $level) {
-        if ($project->level == $key) {
-          $status[$project->nid] = $key;
-        }
-      }
-      $nids[] = $project->nid;
-    }
-
-    if (empty($nids)) {
-      $placeholders = '';
-    }
-    else {
-      $placeholders = " AND n.nid NOT IN (". implode(',', array_fill(0, count($nids), '%d')) .")";
-    }
-
-    $result = db_query(db_rewrite_sql("SELECT n.nid, n.title, p.uri FROM {node} n INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1". ($nids ?  $placeholders : "") ." ORDER BY n.title"), $nids);
-    while ($project = db_fetch_object($result)) {
-      $form['project'][$project->nid]['title'] = array(
-        '#value' => l($project->title, "node/$project->nid"),
-      );
-      $nids[] = $project->nid;
-    }
-
-    foreach ($nids as $nid) {
-      $form['options']['#tree'] = TRUE;
-      $form['options'][$nid] = array(
-        '#type' => 'radios',
-        '#default_value' => isset($status[$nid]) ? $status[$nid] : 0,
-        '#options' => $levels,
-      );
-    }
+    project_issue_global_subscribe($form, $user->uid);
   }
   $form['submit'] = array(
     '#type' => 'submit',
