| 
      
      
      From: Benjamin C. <bc...@us...> - 2001-07-10 14:00:47
      
     | 
| Update of /cvsroot/phpbt/phpbt
In directory usw-pr-cvs1:/tmp/cvs-serv6103
Modified Files:
	bug.php include.php query.php 
Log Message:
Added link for personal bug list to query form
Index: bug.php
===================================================================
RCS file: /cvsroot/phpbt/phpbt/bug.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- bug.php	2001/07/02 00:55:24	1.9
+++ bug.php	2001/07/10 14:00:44	1.10
@@ -94,7 +94,7 @@
   if ($userid != ($cf['AssignedTo'] ? $cf['AssignedTo'] : $buginfo['AssignedTo']))
     $maillist[] = $assignedto;
   // Leter add a watcher (such as QA person) check here
-  $toemail = join(', ',$maillist);
+  $toemail = delimit_list(', ',$maillist);
     
   $t->set_var(array(
     'bugid' => $buginfo['BugID'],
Index: include.php
===================================================================
RCS file: /cvsroot/phpbt/phpbt/include.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- include.php	2001/07/10 03:15:20	1.9
+++ include.php	2001/07/10 14:00:44	1.10
@@ -346,4 +346,13 @@
   return $h;
 }
 
+///
+/// Return a delimited list if there is more than one element in $ary, otherwise
+/// return the lone element as the list
+function delimit_list($delimiter, $ary) {
+	if ($ary[1]) return join($delimiter, $ary);
+	elseif ($ary[0]) return ($ary[0]);
+	else return '';
+}
+
 ?>
Index: query.php
===================================================================
RCS file: /cvsroot/phpbt/phpbt/query.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- query.php	2001/07/02 00:41:49	1.5
+++ query.php	2001/07/10 14:00:44	1.6
@@ -44,70 +44,78 @@
     'priority' => build_select('priority',$priority),
     'severity' => build_select('Severity',$severity),
     'projects' => build_select('Project'),
-    'TITLE' => $TITLE[bugquery]
+    'TITLE' => $TITLE['bugquery']
     ));
       
 }
 
-function build_query() {
-  global $q, $sess, $querystring, $status, $resolution, $os, $priority, 
+function build_query($showmybugs = false) {
+  global $q, $sess, $auth, $querystring, $status, $resolution, $os, $priority, 
     $severity, $email1, $emailtype1, $emailfield1, $Title, $Description, $URL, 
     $Title_type, $Description_type, $URL_type, $projects, $versions, $components;
 
-  // Select boxes
-  if ($status) $flags[] = 'Status in ('.join(',',$status).')';
-  if ($resolution) $flags[] = 'Resolution in ('.join(',',$resolution).')';
-  if ($os) $flags[] = 'OS in ('.join(',',$os).')';
-  if ($priority) $flags[] = 'Priority in ('.join(',',$priority).')';
-  if ($severity) $flags[] = 'Severity in ('.join(',',$severity).')';
-  if ($flags) $query[] = '('.join(' or ',$flags).')';
-  
-  // Email field(s)
-  if ($email1) {
-    switch($emailtype1) {
-      case 'like' : $econd = "like '%$email1%'"; break;
-      case 'rlike' : 
-      case 'not rlike' : 
-      case '=' : $econd = "$emailtype1 '$email1'"; break;
-    }
-    foreach($emailfield1 as $field) $equery[] = "$field.Email $econd";
-    $query[] = '('.join(' or ',$equery).')';
-  }
-  
-  // Text search field(s)
-  foreach(array('Title','Description','URL') as $searchfield) {
-    if ($$searchfield) {
-      switch (${$searchfield."_type"}) {
-        case 'like' : $cond = "like '%".$$searchfield."%'"; break;
-        case 'rlike' : $cond = "rlike '".$$searchfield."'"; break;
-        case 'not rlike' :$cond = "not rlike '".$$searchfield."'"; break;
-      }
-      $fields[] = "$searchfield $cond";
-    }
-  }
-  if ($fields) $query[] = '('.join(' or ',$fields).')';
-  
-  // Project/Version/Component
-  if ($projects) {
-    $proj[] = "Bug.Project = $projects";
-    if ($versions) $proj[] = "Bug.Version = $versions";
-    if ($components) $proj[] = "Component = $components";
-    $query[] = '('.join(' and ',$proj).')';
+	// Open bugs assigned to the user -- a hit list
+	if ($showmybugs) {
+		$q->query("select StatusID from Status where Name in ('Unconfirmed', 'New', 'Assigned', 'Reopened')");
+		while ($statusid = $q->grab_field()) $status[] = $statusid;
+		$query[] = 'Status in ('.delimit_list(',',$status).')';
+		$query[] = "AssignedTo = {$auth->auth['uid']}";
+	} else {
+  	// Select boxes
+  	if ($status) $flags[] = 'Status in ('.delimit_list(',',$status).')';
+  	if ($resolution) $flags[] = 'Resolution in ('.delimit_list(',',$resolution).')';
+  	if ($os) $flags[] = 'OS in ('.delimit_list(',',$os).')';
+  	if ($priority) $flags[] = 'Priority in ('.delimit_list(',',$priority).')';
+  	if ($severity) $flags[] = 'Severity in ('.delimit_list(',',$severity).')';
+  	if ($flags) $query[] = '('.delimit_list(' or ',$flags).')';
+
+  	// Email field(s)
+  	if ($email1) {
+    	switch($emailtype1) {
+      	case 'like' : $econd = "like '%$email1%'"; break;
+      	case 'rlike' : 
+      	case 'not rlike' : 
+      	case '=' : $econd = "$emailtype1 '$email1'"; break;
+    	}
+    	foreach($emailfield1 as $field) $equery[] = "$field.Email $econd";
+    	$query[] = '('.delimit_list(' or ',$equery).')';
+  	}
+
+  	// Text search field(s)
+  	foreach(array('Title','Description','URL') as $searchfield) {
+    	if ($$searchfield) {
+      	switch (${$searchfield."_type"}) {
+        	case 'like' : $cond = "like '%".$$searchfield."%'"; break;
+        	case 'rlike' : $cond = "rlike '".$$searchfield."'"; break;
+        	case 'not rlike' :$cond = "not rlike '".$$searchfield."'"; break;
+      	}
+      	$fields[] = "$searchfield $cond";
+    	}
+  	}
+  	if ($fields) $query[] = '('.delimit_list(' or ',$fields).')';
+
+  	// Project/Version/Component
+  	if ($projects) {
+    	$proj[] = "Bug.Project = $projects";
+    	if ($versions) $proj[] = "Bug.Version = $versions";
+    	if ($components) $proj[] = "Component = $components";
+    	$query[] = '('.delimit_list(' and ',$proj).')';
+  	}
   }
-  
-  if ($query) $querystring = join (' and ',$query);
+	
+  if ($query) $querystring = delimit_list(' and ',$query);
   if (!$sess->is_registered('querystring')) $sess->register('querystring');
 }
 
-function list_items() {
+function list_items($showmybugs = false) {
   global $querystring, $me, $q, $t, $selrange, $order, $sort, $query, 
     $page, $op, $select, $TITLE, $STRING;
-  
+
   $t->set_file('content','buglist.html');
   $t->set_block('content','row','rows');
   
   if (!$order) { $order = 'BugID'; $sort = 'asc'; }
-  if (!$querystring or $op == 'doquery') build_query();
+  if (!$querystring or $op) build_query($showmybugs);
   $nr = $q->grab_field("select count(*) from Bug left join User Owner on 
     Bug.AssignedTo = Owner.UserID left join User Reporter on 
     Bug.CreatedBy = Reporter.UserID ".($querystring != '' ? "where $querystring": ''));
@@ -184,7 +192,12 @@
 
 $t->set_file('wrap','wrap.html');
 
-if ($op == 'query') show_query();
+if ($op) switch($op) {
+	case 'query' : show_query(); break;
+	case 'doquery' : list_items(); break;
+	case 'mybugs' : list_items(true); break;
+	default : show_query(); break;
+}
 else list_items();
 
 $t->pparse('main',array('content','wrap','main'));
 |