Index: comment.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/comment.inc,v
retrieving revision 1.79
diff -u -u -p -r1.79 comment.inc
--- comment.inc	4 Jun 2007 23:33:05 -0000	1.79
+++ comment.inc	8 Jul 2007 14:58:53 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: comment.inc,v 1.79 2007/06/04 23:33:05 dww Exp $
-// $Name:  $
+// $Name: HEAD $
 
 function project_comment_page() {
   
@@ -14,13 +14,14 @@ function project_comment_page() {
 
     if ($_POST['op'] == t('Preview') || $_POST['op'] == t('Submit')) {
       project_comment_validate($edit);
-    } else {
+    }
+    else {
       foreach (array('nid', 'type', 'pid', 'rid', 'category', 'component', 'priority', 'assigned', 'sid', 'title') as $var) {
         $edit->$var = $node->$var;
       }
       project_comment_validate($edit);
     }
-    $output .= drupal_get_form('project_comment_form', $edit);
+    $output .= drupal_get_form('project_comment_form', (array)$edit);
 
     $breadcrumb = drupal_get_breadcrumb();
     $breadcrumb[] = l($node->title, "node/$node->nid");
@@ -40,7 +41,8 @@ function project_comment_page() {
 
             project_comment_save($edit);
             drupal_goto("node/$node->nid");
-          } else {
+          }
+          else {
             return $output;
           }
         break;
@@ -56,7 +58,8 @@ function project_comment_form($edit, $pa
       '#action' => $param['action'],
       '#attributes' => $param['options'],
     );
-  } else {
+  }
+  else {
     $form['#attributes'] = array('enctype' => 'multipart/form-data');
   }
   $form['#prefix'] = '<div class="project-issue"><div class="node-form"><div class="standard">';
@@ -170,13 +173,13 @@ function _project_comment_view_single($c
   }
 
   if ($comment->file_path && file_exists($comment->file_path)) {
-    $summary[] = array(t('Attachment:'), '<a href="'. file_create_url($comment->file_path). '">'. basename($comment->file_path) .'</a> ('. format_size($comment->file_size) .')');
+    $summary[] = array(t('Attachment:'), '<a href="'. file_create_url($comment->file_path) .'">'. basename($comment->file_path) .'</a> ('. format_size($comment->file_size) .')');
   }
 
   if ($summary || $comment->body) {
     if ($count) {
       $output .= '<div class="header">';
-      $output .= t('!count submitted by !user on !date', array('!count' => l("#$count", "node/$comment->nid", array ('id' => "comment-$comment->cid", 'name' => "comment-$comment->cid"), NULL, "comment-$comment->cid"), '!user' => theme('username', $comment), '!date' => format_date($comment->created))) . theme('mark', node_mark($comment->nid, $comment->changed));
+      $output .= t('!count submitted by !user on !date', array('!count' => l("#$count", "node/$comment->nid", array('attributes' => array('id' => "comment-$comment->cid", 'name' => "comment-$comment->cid"), 'fragment' => "comment-$comment->cid")), '!user' => theme('username', $comment), '!date' => format_date($comment->created))) . theme('mark', node_mark($comment->nid, $comment->changed));
       $output .= '</div>';
     }
     if ($summary) {
@@ -235,7 +238,7 @@ function project_comment_save($edit) {
       _content_widget_invoke('process form values', $node);
     }
 
-    watchdog('content', t('project_issue: added comment %title', array('%title' => $edit->title)), WATCHDOG_NOTICE, l('view', "node/$node->nid"));
+    watchdog('content', 'project_issue: added comment %title', array('%title' => $edit->title), WATCHDOG_NOTICE, l('view', "node/$node->nid"));
     $node->changed = time();
     db_query("INSERT INTO {project_comments} (cid, nid, uid, created, changed, body, data, file_path, file_mime, file_size) VALUES (%d, %d, %d, %d, %d, %b, %b, '%s', '%s', %d)", $edit->cid, $edit->nid, $edit->uid, $node->changed, $node->changed, $edit->body, serialize($data), $file->filepath, $file->filemime, $file->filesize);
 
Index: issue.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/issue.inc,v
retrieving revision 1.232
diff -u -u -p -r1.232 issue.inc
--- issue.inc	22 Jun 2007 12:05:18 -0000	1.232
+++ issue.inc	8 Jul 2007 14:58:53 -0000
@@ -1,13 +1,13 @@
 <?php
 // $Id: issue.inc,v 1.232 2007/06/22 12:05:18 dww Exp $
-// $Name:  $
+// $Name: HEAD $
 
 function project_issue_page() {
   switch ($_POST['op'] ? $_POST['op'] : arg(2)) {
     case 'rss':
       $project = project_project_retrieve(arg(3));
       if ($project->nid && node_access('view', $project)) {
-        $query = new StdClass();
+        $query = new stdClass();
         $query->projects = array($project->nid);
 
         project_issue_query_result($query, 'rss');
@@ -51,7 +51,7 @@ function project_issue_page() {
     default:
       $project = project_issue_build_form_url(arg(2));
       if ($project->nid && node_access('view', $project)) {
-        $query = new StdClass();
+        $query = new stdClass();
         $query->projects = array($project->nid);
 
         return project_issue_query_result($query);
@@ -343,32 +343,31 @@ function project_issue_statistics($proje
   return $output;
 }
 
-function project_issue_subscribe_submit($form_id, $form_values) {
-
+function project_issue_subscribe_submit($form, &$form_state) {
   global $user;
   $all = $_POST['all'];
 
   $levels = array(0 => t('None'), 1 => t('Own issues'), 2 => t('All issues'));
 
-    // Remove previous subscriptions for user.
-    if ($nid = $form_values['single']) {
-      db_query('DELETE FROM {project_subscriptions} WHERE nid = %d AND uid = %d', $nid, $user->uid);
-    }
-    else {
-      db_query('DELETE FROM {project_subscriptions} WHERE uid = %d', $user->uid);
-    }
+  // Remove previous subscriptions for user.
+  if ($nid = $form_state['values']['single']) {
+    db_query('DELETE FROM {project_subscriptions} WHERE nid = %d AND uid = %d', $nid, $user->uid);
+  }
+  else {
+    db_query('DELETE FROM {project_subscriptions} WHERE uid = %d', $user->uid);
+  }
 
-    if ($all) {
-      $_level = array_search($all, $levels);
-    }
+  if ($all) {
+    $_level = array_search($all, $levels);
+  }
 
-    foreach ($form_values['options'] as $nid => $level) {
-      if ($_level !== 0 && $level !== 0) {
-        db_query('INSERT INTO {project_subscriptions} (nid, uid, level) VALUES (%d, %d, %d)', $nid, $user->uid, $_level ? $_level : $level);
-      }
+  foreach ($form_state['values']['options'] as $nid => $level) {
+    if ($_level !== 0 && $level !== 0) {
+      db_query('INSERT INTO {project_subscriptions} (nid, uid, level) VALUES (%d, %d, %d)', $nid, $user->uid, $_level ? $_level : $level);
     }
-    drupal_set_message(t('Subscription settings saved.'));
-    drupal_goto('project/issues/subscribe-mail');
+  }
+  drupal_set_message(t('Subscription settings saved.'));
+  drupal_goto('project/issues/subscribe-mail');
 }
 
 
@@ -490,7 +489,8 @@ function project_issue_form($node, $para
   $form['#attributes'] = array('enctype' => 'multipart/form-data');
 
   // Set the pre-render function for adjustments to the form stages
-  $form['#pre_render'] = array('project_issue_form_pre_render');
+  // @TODO: what do we do now?
+//$form['#pre_render'] = array('project_issue_form_pre_render');
 
   $form['page'] = array(
     '#type' => 'hidden',
@@ -762,33 +762,30 @@ function _project_issue_form_add_require
   }
 }
 
-function project_issue_node_form_validate($form_id, $form) {
-  global $form_values;
+function project_issue_node_form_validate($form, &$form_state) {
   $edit = $_POST;
 
-  if (!$form_values['pid']) {
+  if (!$form_state['values']['pid']) {
     form_set_error('pid', t('You have to specify a valid project.'));
   }
 
-  if ($form_values['page'] == 2) {
-    if ($form_values['pid'] && $project = node_load($form_values['pid'])) {
-      $node->title = $form_values['title'];
+  if ($form_state['values']['page'] == 2) {
+    if ($form_state['values']['pid'] && $project = node_load($form_state['values']['pid'])) {
+      $node->title = $form_state['values']['title'];
       if (module_exists('project_release') && 
           $releases = project_release_get_releases($project, 0)) {
-        empty($form_values['rid']) and form_set_error('rid', t('You have to specify a valid version.'));
+        empty($form_state['values']['rid']) and form_set_error('rid', t('You have to specify a valid version.'));
       }
-      if ($form_values['component'] && !in_array($form_values['component'], $project->components)) {
-        $form_values['component'] = 0;
+      if ($form_state['values']['component'] && !in_array($form_state['values']['component'], $project->components)) {
+        $form_state['values']['component'] = 0;
       }
-      empty($form_values['component']) && form_set_error('component', t('You have to specify a valid component.'));
-      empty($form_values['category']) && form_set_error('category', t('You have to specify a valid category.'));
-      empty($form_values['title']) && form_set_error('title', t('You have to specify a valid title.'));
-      empty($form_values['body']) && form_set_error('body', t('You have to specify a valid description.'));
-
-      if ($file = file_check_upload('file_issue')) {
-        if (project_issue_validate_file($file)) {
-          $form_values['file'] = file_save_upload($file);
-        }
+      empty($form_state['values']['component']) && form_set_error('component', t('You have to specify a valid component.'));
+      empty($form_state['values']['category']) && form_set_error('category', t('You have to specify a valid category.'));
+      empty($form_state['values']['title']) && form_set_error('title', t('You have to specify a valid title.'));
+      empty($form_state['values']['body']) && form_set_error('body', t('You have to specify a valid description.'));
+
+      if ($file = file_save_upload('file_issue', array('project_issue_validate_file'))) {
+        $form_state['values']['file'] = $file;
       }
     }
   }
@@ -858,9 +855,8 @@ function project_issue_comment_validate(
         }
       }
 
-      $file = file_check_upload('file_issue');
-      if ($file && project_issue_validate_file($file)) {
-        $node->file = file_save_upload($file);
+      if ($file = file_save_upload('file_issue', array('project_issue_validate_file'))) {
+        $node->file = $file;
       }
     }
     elseif (isset($node->pid)) {
@@ -873,7 +869,7 @@ function project_issue_comment_validate(
 
 /**
  * Ensure only files with allowed extension are uploaded.
- *
+ * @TODO: are the right arguments passed?
  */
 function project_issue_validate_file($file) {
   global $user;
@@ -914,7 +910,7 @@ function project_issue_view($node, $teas
     $rows[] = array(t('Assigned:'), $assigned);
     $rows[] = array(t('Status:'), project_issue_state($node->sid));
     if ($node->file_path && file_exists($node->file_path)) {
-      $rows[] = array(t('Attachment:'), '<a href="'. file_create_url($node->file_path). '">'. basename($node->file_path) .'</a> ('. format_size($node->file_size) .')');
+      $rows[] = array(t('Attachment:'), '<a href="'. file_create_url($node->file_path) .'">'. basename($node->file_path) .'</a> ('. format_size($node->file_size) .')');
     }
     $node->content['project_issue_summary'] = array(
       '#value' => '<div class="summary">'. theme('table', array(), $rows) .'</div>',
@@ -1034,7 +1030,7 @@ function project_issue_state($sid = 0, $
     }
   }
 
-  foreach($options as $state) {
+  foreach ($options as $state) {
     if ($restrict) {
       // Check if user has access, or if status is default status and therefore available to all,
       // or if user is original issue poster and poster is granted access
@@ -1121,7 +1117,7 @@ function project_issue_query($project = 
     drupal_set_title(t('Search issues for all projects'));
   }
   if (is_null($query)) {
-    $query = new StdClass();
+    $query = new stdClass();
   }
   $states = project_issue_state();
   $priorities = project_issue_priority();
@@ -1311,7 +1307,7 @@ function theme_project_issue_admin_state
     drupal_render($form['status_add']['default_query']),
     NULL, NULL,
   );
-  $output = '<div>' . theme('table', $header, $rows) . '</div>';
+  $output = '<div>'. theme('table', $header, $rows) .'</div>';
   $output .= drupal_render($form);
   return $output;
 }
@@ -1384,14 +1380,14 @@ function project_issue_admin_states_form
 /**
  * Submit handler for project_issue_admin_states_form.
  */
-function project_issue_admin_states_form_submit($form_id, $form_values) {
+function project_issue_admin_states_form_submit($form, &$form_state) {
   // Check for and apply changes or additions to project issue status options.
-  if (isset($form_values['default_state'])) {
-    variable_set('project_issue_default_state', $form_values['default_state']);
+  if (isset($form_state['values']['default_state'])) {
+    variable_set('project_issue_default_state', $form_state['values']['default_state']);
   }
   // Update existing status options.
-  if($form_values['status']) {
-    foreach ($form_values['status'] as $sid => $value) {
+  if ($form_state['values']['status']) {
+    foreach ($form_state['values']['status'] as $sid => $value) {
       $state = db_fetch_object(db_query('SELECT name, weight, author_has, default_query FROM {project_issue_state} WHERE sid = %d', $sid));
       // Check to see whether the record needs updating.
       if (($state->name != $value['name']) || ($state->weight != $value['weight']) || ($state->author_has != $value['author_has']) || ($state->default_query != $value['default_query'])) {
@@ -1400,14 +1396,14 @@ function project_issue_admin_states_form
     }
   }
   // Add any new status options.
-  if (isset($form_values['status_add']) && !empty($form_values['status_add']['name'])) {
+  if (isset($form_state['values']['status_add']) && !empty($form_state['values']['status_add']['name'])) {
     // Check to see whether the state already exists:
-    $query = db_query("SELECT name FROM {project_issue_state} WHERE name = '%s'", $form_values['status_add']['name']);
+    $query = db_query("SELECT name FROM {project_issue_state} WHERE name = '%s'", $form_state['values']['status_add']['name']);
     if (!db_num_rows($query)) {
-      db_query("INSERT INTO {project_issue_state} (name, weight, author_has, default_query) VALUES ('%s', %d, %d, %d)", $form_values['status_add']['name'], $form_values['status_add']['weight'], $form_values['status_add']['author_has'], $form_values['status_add']['default_query']);
+      db_query("INSERT INTO {project_issue_state} (name, weight, author_has, default_query) VALUES ('%s', %d, %d, %d)", $form_state['values']['status_add']['name'], $form_state['values']['status_add']['weight'], $form_state['values']['status_add']['author_has'], $form_state['values']['status_add']['default_query']);
     }
     else {
-      drupal_set_message(t('Status %status already exists.', array ('%status' => $form_values['status_add']['name'])));
+      drupal_set_message(t('Status %status already exists.', array('%status' => $form_state['values']['status_add']['name'])));
     }
   }
 }
@@ -1444,16 +1440,16 @@ function project_issue_delete_state_conf
   );
 }
 
-function project_issue_delete_state_confirm_submit($form_id, $form_values) {
-  if($form_values['new_sid'] == $form_values['sid']) {
-      form_set_error('new_sid', t('Choose a new issue status for
-  existing issues of status %name.', array('%name' => $form_values['name'])));
-  } else {
-    if ($form_values['new_sid']) {
-      db_query('UPDATE {project_issues} SET sid = %d WHERE sid = %d', $form_values['new_sid'], $form_values['sid']);
+function project_issue_delete_state_confirm_submit($form, &$form_state) {
+  if ($form_state['values']['new_sid'] == $form_state['values']['sid']) {
+    form_set_error('new_sid', t('Choose a new issue status for existing issues of status %name.', array('%name' => $form_state['values']['name'])));
+  }
+  else {
+    if ($form_state['values']['new_sid']) {
+      db_query('UPDATE {project_issues} SET sid = %d WHERE sid = %d', $form_state['values']['new_sid'], $form_state['values']['sid']);
     }
-    db_query('DELETE FROM {project_issue_state} WHERE sid = %d', $form_values['sid']);
-    drupal_set_message(t('Project issue status %issue deleted.', array('%issue' => $form_values['name'])));
+    db_query('DELETE FROM {project_issue_state} WHERE sid = %d', $form_state['values']['sid']);
+    drupal_set_message(t('Project issue status %issue deleted.', array('%issue' => $form_state['values']['name'])));
     drupal_goto('admin/project/project-issue-status');
   }
 }
@@ -1596,7 +1592,7 @@ function project_issue_query_result($que
         $row[] = l($projects[$node->pid], "project/issues/$node->pid");
       }
       if (strlen($node->title) > 50) {
-        $title = l(drupal_substr($node->title, 0, 50), "node/$node->nid", array('title' => $node->title));
+        $title = l(drupal_substr($node->title, 0, 50), "node/$node->nid", array('attributes' => array('title' => $node->title)));
       }
       else {
         $title = l($node->title, "node/$node->nid");
@@ -1617,14 +1613,14 @@ function project_issue_query_result($que
     }
     $query = project_issue_query_pager($query);
 
-    $rss = theme('feed_icon', url('project/issues/rss', project_issue_query_url($query)));
+    $rss = theme('feed_icon', url('project/issues/rss', array('query' => project_issue_query_url($query))));
     $link = l(t('#'), 'project/issues', array('title' => t('Permalink to search query.')), project_issue_query_url($query));
     if ($pager = theme('pager', NULL, 20, 0)) {
       $rows[] = array(array('data' => $pager, 'colspan' => count($header)));
     }
   }
   else {
-    $rows[] = array(array('data' => t('No issues found.'), 'colspan'=> 8));
+    $rows[] = array(array('data' => t('No issues found.'), 'colspan' => 8));
   }
 
   $output = '<div class="project-issue">';
@@ -1680,35 +1676,35 @@ function project_issue_query_result_quic
   }
 
   $form['projects'] = array(
-    '#type'=> 'select',
+    '#type' => 'select',
     '#title' => t('Project'),
     '#default_value' => $query->projects,
     '#options' => $projects,
   );
   $form['states'] = array(
-    '#type'=> 'select',
+    '#type' => 'select',
     '#title' => t('Status'),
     '#default_value' => $query->states,
     '#options' => $states,
   );
   $form['categories'] = array(
-    '#type'=> 'select',
+    '#type' => 'select',
     '#title' => t('Category'),
     '#default_value' => $query->categories,
     '#options' => $categories,
   );
   $form['priorities'] = array(
-    '#type'=> 'select',
+    '#type' => 'select',
     '#title' => t('Priority'),
     '#default_value' => $query->priorities,
     '#options' => $priorities,
   );
   $form['users'] = array(
-    '#type'=> 'hidden',
+    '#type' => 'hidden',
     '#value' => $query->users,
   );
   $form['js'] = array(
-    '#type'=> 'hidden',
+    '#type' => 'hidden',
     '#value' => '0',
   );
   $form['submit'] = array(
@@ -1913,7 +1909,7 @@ function project_issue_query_rss($result
   else {
     $channel['title'] = variable_get('site_name', 'drupal') .' - '. t('issues');
   }
-  $channel['link'] = url('project/issues', NULL, NULL, TRUE); // not 100% correct
+  $channel['link'] = url('project/issues', array('absolute' => TRUE)); // not 100% correct
     
   node_feed($result, $channel);
 }
Index: mail.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/mail.inc,v
retrieving revision 1.72
diff -u -u -p -r1.72 mail.inc
--- mail.inc	7 May 2007 19:47:09 -0000	1.72
+++ mail.inc	8 Jul 2007 14:58:53 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: mail.inc,v 1.72 2007/05/07 19:47:09 dww Exp $
-// $Name:  $
+// $Name: HEAD $
 
 function project_issue_mailhandler($node, $result, $i, $header, $mailbox) {
   if ($node->type == 'project') {
@@ -127,7 +127,7 @@ function project_issue_mailhandler($node
 function project_mail_urls($url = 0) {
   static $urls = array();
   if ($url) {
-    $urls[] = strpos($url, '://') ? $url : url($url, NULL, NULL, 1);
+    $urls[] = strpos($url, '://') ? $url : url($url, array('absolute' => TRUE));
     return count($urls);
   }
   return $urls;
@@ -245,8 +245,8 @@ function project_mail_notify($node) {
   }
 
   // Create link to related node
-  $links = t('Issue status update for !link', array('!link' => "\n". url("node/$node->nid", NULL, NULL, 1))) ."\n";
-  $links .= t('Post a follow up: !link', array('!link' => "\n". url("project/comments/add/$node->nid", NULL, NULL, 1))) ."\n";
+  $links = t('Issue status update for !link', array('!link' => "\n". url("node/$node->nid", array('absolute' => TRUE)))) ."\n";
+  $links .= t('Post a follow up: !link', array('!link' => "\n". url("project/comments/add/$node->nid", array('absolute' => TRUE)))) ."\n";
 
   // Mail summary (status values)
   foreach ($fields as $field => $text) {
@@ -279,9 +279,9 @@ function project_mail_notify($node) {
     'From' => "$sender->name <$sender->mail>",
     'X-Mailer' => 'Drupal Project module (http://drupal.org/project/project)',
     'List-Id' => "$project->title <$project->uri-issues-$domain>",
-    'List-Archive' => '<'. url("project/issues/$project->uri", NULL, NULL, 1) .'>',
-    'List-Subscribe' => '<'. url("node/$project->uri", NULL, NULL, 1) .'>',
-    'List-Unsubscribe' => '<'. url("node/$project->uri", NULL, NULL, 1) .'>'
+    'List-Archive' => '<'. url("project/issues/$project->uri", array('absolute' => TRUE)) .'>',
+    'List-Subscribe' => '<'. url("node/$project->uri", array('absolute' => TRUE)) .'>',
+    'List-Unsubscribe' => '<'. url("node/$project->uri", array('absolute' => TRUE)) .'>'
   );
   if ($replyto = variable_get('project_reply_to', '')) {
     $header['Reply-To'] = "$project->title <$replyto>";
@@ -365,7 +365,7 @@ function project_mail_reminder() {
           'From' => "$sender->name <$sender->mail>",
           'X-Mailer' => 'Drupal Project Issues module (http://drupal.org/project/project_issue)',
           'List-Id' => "$sender->name <project-reminder-". preg_replace('|.+://([a-zA-Z0-9\._-]+).*|', '\1', $GLOBALS['base_url']) .'>',
-          'List-Archive' => '<'. url('project', NULL, NULL, 1) .'>',
+          'List-Archive' => '<'. url('project', array('absolute' => TRUE)) .'>',
         );
 
         drupal_mail('project_issue_reminder', $mail, t('Your submitted bugs for !date', array('!date' => date('F d, Y', time()))), $body, NULL, $header);
@@ -387,7 +387,7 @@ function project_mail_reminder() {
         }
         $body .= '  state: '. project_issue_state($node->sid) ."\n";
         $body .= '  age: '. format_interval(time() - $node->created) ."\n";
-        $body .= '  url: '. url("node/$node->nid", NULL, NULL, 1) ."\n";
+        $body .= '  url: '. url("node/$node->nid", array('absolute' => TRUE)) ."\n";
         $body .= "\n";
       }
     }
@@ -400,7 +400,7 @@ function project_mail_digest() {
     'Date' => date('r'),
     'X-Mailer' => 'Drupal Project Issues module (http://drupal.org/project/project_issue)',
     'List-Id' => "$project->title <". preg_replace('|.+://([a-zA-Z0-9\._-]+).*|', '\1', $GLOBALS['base_url']) .'-project-issues-digest>',
-    'List-Archive' => '<'. url('project/issues?priorities=1', NULL, NULL, 1) .'>',
+    'List-Archive' => '<'. url('project/issues?priorities=1', array('absolute' => TRUE)) .'>',
   );
 
   $result = db_query(db_rewrite_sql("SELECT n.nid, n.title, p.* FROM {node} n INNER JOIN {project_issue_projects} p ON n.nid = p.nid WHERE n.status = 1 AND p.mail_digest <> '' ORDER BY n.title, p.mail_digest"));
@@ -418,7 +418,7 @@ function project_mail_digest() {
         $body[$project->mail_digest] .= '  assigned: '. $assigned->name ."\n";
       }
       $body[$project->mail_digest] .= '  age: '. format_interval(time() - $node->created) ."\n";
-      $body[$project->mail_digest] .= '  url: '. url("node/$node->nid", NULL, NULL, 1) ."\n";
+      $body[$project->mail_digest] .= '  url: '. url("node/$node->nid", array('absolute' => TRUE)) ."\n";
       $body[$project->mail_digest] .= "\n";
     }
   }
Index: project_issue.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/project_issue.info,v
retrieving revision 1.3
diff -u -u -p -r1.3 project_issue.info
--- project_issue.info	13 Jun 2007 19:33:51 -0000	1.3
+++ project_issue.info	8 Jul 2007 14:58:53 -0000
@@ -3,3 +3,4 @@ name = Project issue tracking
 description = Provides issue tracking for the project.module.
 dependencies = project
 package = Project
+core = 6.x
Index: project_issue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/project_issue.module,v
retrieving revision 1.27
diff -u -u -p -r1.27 project_issue.module
--- project_issue.module	15 May 2007 23:10:20 -0000	1.27
+++ project_issue.module	8 Jul 2007 14:58:53 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: project_issue.module,v 1.27 2007/05/15 23:10:20 dww Exp $
-// $Name:  $
+// $Name: HEAD $
 
 // issue nodes      -> project_issues
 // issue comments   -> project_comments
@@ -12,8 +12,8 @@ if (file_exists("$path/issue.inc")) {
   require_once "$path/mail.inc";
 }
 
-function project_issue_help($section) {
-  switch ($section) {
+function project_issue_help($path, $arg) {
+  switch ($path) {
     case 'admin/help#project_issue':
       $help = t('<h3>Mailhandler support</h3>'.
               '<p>Basic mail format:</p>'.
@@ -63,7 +63,7 @@ function project_issue_perm() {
     'access own project issues'
   );
   $states = project_issue_state();
-  foreach($states as $key => $value) {
+  foreach ($states as $key => $value) {
     $perms[] = "set issue status ". str_replace("'", "", $value);
   }
   return $perms;
@@ -80,7 +80,7 @@ function project_issue_settings_form() {
     '#default_value' => variable_get('project_directory_issues', 'issues'),
     '#size' => 30,
     '#maxlength' => 255,
-    '#description' => t("Subdirectory in the directory '%dir' where attachments to issues will be stored.", array('%dir' => variable_get('file_directory_path', 'files') . '/')),
+    '#description' => t("Subdirectory in the directory '%dir' where attachments to issues will be stored.", array('%dir' => variable_get('file_directory_path', 'files') .'/')),
     '#after_build' => array('project_issue_check_directory'),
   );
 
@@ -162,149 +162,140 @@ function project_issue_link($type, $node
   return $links;
 }
 
-function project_issue_menu($may_cache) {
+function project_issue_menu() {
   $items = array();
   global $user;
 
-  if ($may_cache) {
-
-    // Issues
-    $access = user_access('access project issues');
-    $items[] = array(
-      'path' => 'project/issues',
-      'title' => t('Issues'),
-      'callback' => 'project_issue_page',
-      'access' => $access,
-      'type' => MENU_NORMAL_ITEM,
-      'weight' => -50,
-    );
-    $items[] = array(
-      'path' => 'project/issues/add',
-      'title' => t('Submit'),
-      'callback' => 'project_issue_page',
-      'access' => $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-    $items[] = array(
-      'path' => 'project/issues/update_project',
-      'callback' => 'project_issue_update_project',
-      'access' => $access,
-      'type' => MENU_CALLBACK,
-    );
-    $items[] = array(
-      'path' => 'project/issues/statistics',
-      'title' => t('Statistics'),
-      'callback' => 'project_issue_page',
-      'access' => $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-    $items[] = array(
-      'path' => 'project/issues/search',
-      'title' => t('Search'),
-      'callback' => 'project_issue_search_page',
-      'access' => $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-    if (module_exists('search')) { 
-      $items[] = array(
-        'path' => 'search/issues',
-        'title' => t('Issues'),
-        'callback' => 'project_issue_search_page',
-        'access' => $access,
-        'type' => MENU_LOCAL_TASK,
-        'weight' => 4,
-      );
-    }
-    $items[] = array(
-      'path' => 'project/issues/subscribe-mail',
-      'title' => t('Subscribe'),
-      'callback' => 'project_issue_page',
-      'access' => $GLOBALS['user']->uid && $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-
-    // "My projects" page (which shows all issues for all your projects)
-    $items[] = array(
-      'path' => 'project/user',
-      'title' => t('My projects'),
-      'callback' => 'project_issue_user_page',
-      'access' => $user->uid && $access,
-      'type' => MENU_NORMAL_ITEM,
-      'weight' => -49,
-    );
-
-    $items[] = array(
-      'path' => 'project/issues/user',
-      'title' => t('My issues'),
-      'callback' => 'project_issue_page',
-      'access' => $GLOBALS['user']->uid && $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-
-     // Reply to issues
-    $access = user_access('create project issues');
-    $items[] = array(
-      'path' => 'project/comments',
-      'title' => t('Comments'),
-      'callback' => 'project_comment_page',
-      'access' => $access,
-      'type' => MENU_CALLBACK,
-    );
-
-    // Administrative pages
-    $access = user_access('administer projects');
-    $items[] = array(
-      'path' => 'admin/project/project-issue-settings',
-      'title' => t('Project issue settings'),
-      'description' => t('Specify where attachments to issues should be stored on your site, and what filename extensions should be allowed.'),
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('project_issue_settings_form'),
-      'type' => MENU_NORMAL_ITEM,
-      'weight' => 1,
-      'access' => $access,
-    );
-
-    // Administer issue status settings
-    $items[] = array(
-      'path' => 'admin/project/project-issue-status',
-      'title' => t('Project issue status options'),
-      'description' => t('Configure what issue status values should be used on your site.'),
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('project_issue_admin_states_form'),
-      'weight' => 1,
-      'access' => $access,
-      'type' => MENU_NORMAL_ITEM,
-    );
-    $items[] = array(
-      'path' => 'admin/project/project-issue-status/delete',
-      'title' => t('Delete'),
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('project_issue_delete_state_confirm'),
-      'access' => $access,
-      'type' => MENU_CALLBACK,
-    );
+  // Issues
+  $items['project/issues'] = array(
+    'title' => 'Issues',
+    'page callback' => 'project_issue_page',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+    'weight' => -50,
+  );
+  $items['project/issues/add'] = array(
+    'title' => 'Submit',
+    'page callback' => 'project_issue_page',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['project/issues/update_project'] = array(
+    'page callback' => 'project_issue_update_project',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['project/issues/statistics'] = array(
+    'title' => 'Statistics',
+    'page callback' => 'project_issue_page',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['project/issues/search'] = array(
+    'title' => 'Search',
+    'page callback' => 'project_issue_search_page',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  if (module_exists('search')) { 
+    $items['search/issues'] = array(
+      'title' => 'Issues',
+      'page callback' => 'project_issue_search_page',
+      'access arguments' => array('access project issues'),
+      'type' => MENU_LOCAL_TASK,
+      'weight' => 4,
+    );
+  }
+  $items['project/issues/subscribe-mail'] = array(
+    'title' => 'Subscribe',
+    'page callback' => 'project_issue_page',
+    'access callback' => '_project_user_access',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  // "My projects" page (which shows all issues for all your projects)
+  $items['project/user'] = array(
+    'title' => 'My projects',
+    'page callback' => 'project_issue_user_page',
+    'access callback' => '_project_user_access',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+    'weight' => -49,
+  );
+
+  $items['project/issues/user'] = array(
+    'title' => 'My issues',
+    'page callback' => 'project_issue_page',
+    'access callback' => '_project_user_access',
+    'access arguments' => array('access project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  // Reply to issues
+  $items['project/comments'] = array(
+    'title' => 'Comments',
+    'page callback' => 'project_comment_page',
+    'access arguments' => array('create project issues'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // Administrative pages
+  $items['admin/project/project-issue-settings'] = array(
+    'title' => 'Project issue settings',
+    'description' => 'Specify where attachments to issues should be stored on your site, and what filename extensions should be allowed.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('project_issue_settings_form'),
+    'type' => MENU_NORMAL_ITEM,
+    'weight' => 1,
+    'access arguments' => array('create project issues'),
+  );
+
+  // Administer issue status settings
+  $items['admin/project/project-issue-status'] = array(
+    'title' => 'Project issue status options',
+    'description' => 'Configure what issue status values should be used on your site.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('project_issue_admin_states_form'),
+    'weight' => 1,
+    'access arguments' => array('create project issues'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['admin/project/project-issue-status/delete'] = array(
+    'title' => 'Delete',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('project_issue_delete_state_confirm'),
+    'access arguments' => array('create project issues'),
+    'type' => MENU_CALLBACK,
+  );
 
-  }
-  else {
+/*
     // Dynamic menu items
     // Issues subtab on project node edit tab.
     if (arg(0) == 'node' && is_numeric(arg(1))) {
       $node = node_load(arg(1));
       if ($node->type == 'project_project' && node_access('update', $node)) {
-        $items[] = array(
-          'path' => 'node/'. arg(1) .'/edit/issues',
-          'title' => t('Issues'),
-          'callback' => 'project_issue_project_edit_issues',
+        $items['node/%/edit/issues',
+          'title' => 'Issues',
+          'page callback' => 'project_issue_project_edit_issues',
+          'map arguments' => array(1),
           'type' => MENU_LOCAL_TASK,
         );
       }
     }
+*/ 
 
-    drupal_add_css(drupal_get_path('module', 'project_issue') .'/project_issue.css');
-  }
+  drupal_add_css(drupal_get_path('module', 'project_issue') .'/project_issue.css');
   return $items;
 }
 
+function _project_user_access($auth) {
+  global $user;
+  if ($user->uid) {
+    return user_access($auth);
+  }
+}
+
 /**
  * Adds the issues subtab to the edit tab on project nodes.
  */
@@ -437,13 +428,13 @@ function project_issue_project_edit_form
  * Submit handler when project admins use the issues subtab.
  * @see project_issue_project_edit_issues
  */
-function project_issue_project_edit_form_submit($form_id, $form_values) {
-  $components = serialize(explode("\n", str_replace("\r", '', $form_values['components'])));
-  $mail_copy_filter = serialize($form_values['mail_copy_filter']);
-  $mail_copy_filter_state = serialize($form_values['mail_copy_filter_state']);
+function project_issue_project_edit_form_submit($form, &$form_state) {
+  $components = serialize(explode("\n", str_replace("\r", '', $form_state['values']['components'])));
+  $mail_copy_filter = serialize($form_state['values']['mail_copy_filter']);
+  $mail_copy_filter_state = serialize($form_state['values']['mail_copy_filter_state']);
 
-  db_query("UPDATE {project_issue_projects} SET issues = %d, components = '%s', mail_digest = '%s', mail_reminder = %d, mail_copy = '%s', mail_copy_filter = '%s', mail_copy_filter_state = '%s', help = '%s' WHERE nid = %d", $form_values['issues'], $components, $form_values['mail_digest'], $form_values['mail_reminder'], $form_values['mail_copy'], $mail_copy_filter, $mail_copy_filter_state, $form_values['help'], $form_values['nid']);
-  db_query("UPDATE {node} SET changed = %d WHERE nid = %d", time(), $form_values['nid']);
+  db_query("UPDATE {project_issue_projects} SET issues = %d, components = '%s', mail_digest = '%s', mail_reminder = %d, mail_copy = '%s', mail_copy_filter = '%s', mail_copy_filter_state = '%s', help = '%s' WHERE nid = %d", $form_state['values']['issues'], $components, $form_state['values']['mail_digest'], $form_state['values']['mail_reminder'], $form_state['values']['mail_copy'], $mail_copy_filter, $mail_copy_filter_state, $form_state['values']['help'], $form_state['values']['nid']);
+  db_query("UPDATE {node} SET changed = %d WHERE nid = %d", time(), $form_state['values']['nid']);
   drupal_set_message(t('Issue settings have been saved.'));
 }
 
