Index: issue.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/issue.inc,v
retrieving revision 1.317
diff -u -p -r1.317 issue.inc
--- issue.inc	29 Oct 2008 00:20:08 -0000	1.317
+++ issue.inc	4 Nov 2008 21:38:51 -0000
@@ -58,8 +58,7 @@ function project_issue_page() {
         return t('Please <a href="@login">login</a> or <a href="@register">register</a> in order to subscribe to issues.', array('@login' => url('user/login', $destination), '@register' => url('user/register', $destination)));
       }
       break;
-    case 'user':
-       $_GET['participated'] = $GLOBALS['user']->uid;
+
     default:
       $project = project_issue_build_form_url(arg(2));
       if ($project->nid && node_access('view', $project)) {
@@ -212,7 +211,12 @@ function project_issue_build_form_url($u
   $filters = array_slice($adv_filters, 6);
   // Remember this is a request for "my issues"
   if ($url_arg == 'user') {
-    $_REQUEST['participated'] = $GLOBALS['user']->uid;
+    if (module_exists('flag')) {
+      $_REQUEST['starred'] = $GLOBALS['user']->uid;
+    }
+    else {
+      $_REQUEST['participated'] = $GLOBALS['user']->uid;
+    }
   }
 
   // this isn't a POST, just return project
@@ -2021,7 +2025,7 @@ function project_issue_query_url($query 
  * @see project_issue_query_result()
  */
 function project_issue_query_parse($query = NULL) {
-  $fields = array('projects', 'text', 'attachment', 'summary', 'comment', 'categories', 'components', 'versions', 'states', 'priorities', 'users', 'assigned', 'submitted', 'participated');
+  $fields = array('projects', 'text', 'attachment', 'summary', 'comment', 'categories', 'components', 'versions', 'states', 'priorities', 'users', 'assigned', 'submitted', 'participated', 'starred');
   if ($_SERVER['REQUEST_METHOD'] == 'POST' && is_array($_POST)) {
     foreach ($_POST as $key => $value) {
       if (!empty($value) && in_array($key, $fields)) {
@@ -2046,6 +2050,9 @@ function project_issue_query_parse($quer
   if (!empty($_REQUEST['participated']) && empty($query->participated)) {
     $query->participated = (int)$_REQUEST['participated'];
   }
+  if (!empty($_REQUEST['starred']) && empty($query->starred)) {
+    $query->starred = (int)$_REQUEST['starred'];
+  }
 
   return $query;
 }
@@ -2079,6 +2086,7 @@ function project_issue_query_pager($quer
 
 function project_issue_query_sql($query) {
   $comments = 0;
+  $flag = '';
   foreach ($query as $key => $value) {
     switch ($key) {
       case 'projects':
@@ -2132,6 +2140,12 @@ function project_issue_query_sql($query)
         );
         $sql[] = '('. implode(' OR ', $_sql) .')';
         break;
+      case 'starred':
+        if (module_exists('flag')) {
+          $flag = "LEFT JOIN {flag_content} fc ON fc.content_type = 'node' AND fc.content_id = n.nid LEFT JOIN {flag_types} ft ON ft.fid = fc.fid AND ft.type = 'project_issue'";
+          $sql[] = project_issue_query_sql_field('fc.uid', $value, 0, ' OR ', 'project_issue_query_user');
+        }
+        break;
       case 'assigned':
         $sql[] = project_issue_query_sql_field('p.assigned', $value, 0, ' OR ', 'project_issue_query_user');
         break;
@@ -2143,14 +2157,14 @@ function project_issue_query_sql($query)
 
   if (!$comments) {
     return array(
-      'sql' => db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')'),
-      'count' => db_rewrite_sql('SELECT COUNT(n.nid) FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')')
+      'sql' => db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid '. $flag .' WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')'),
+      'count' => db_rewrite_sql('SELECT COUNT(n.nid) FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid '. $flag .' WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')')
     );
   }
   else {
     return array(
-      'sql' => db_rewrite_sql('SELECT DISTINCT(n.nid), n.changed FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid LEFT JOIN {comments} c ON c.nid = p.nid LEFT JOIN {comment_upload_files} cu ON p.nid = cu.nid LEFT JOIN {files} f ON n.nid = f.nid WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')'),
-      'count' => db_rewrite_sql('SELECT COUNT(DISTINCT(n.nid)) FROM {node} n INNER JOIN  {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid LEFT JOIN {comments} c ON c.nid = p.nid LEFT JOIN {comment_upload_files} cu ON p.nid = cu.nid LEFT JOIN {files} f ON n.nid = f.nid WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')')
+      'sql' => db_rewrite_sql('SELECT DISTINCT(n.nid), n.changed FROM {node} n INNER JOIN {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid LEFT JOIN {comments} c ON c.nid = p.nid LEFT JOIN {comment_upload_files} cu ON p.nid = cu.nid LEFT JOIN {files} f ON n.nid = f.nid '. $flag .' WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')'),
+      'count' => db_rewrite_sql('SELECT COUNT(DISTINCT(n.nid)) FROM {node} n INNER JOIN  {project_issues} p ON p.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON p.assigned = u.uid LEFT JOIN {comments} c ON c.nid = p.nid LEFT JOIN {comment_upload_files} cu ON p.nid = cu.nid LEFT JOIN {files} f ON n.nid = f.nid '. $flag .' WHERE n.status = 1 AND ('. implode(') AND (', $sql) .')')
     );
   }
 }
