[evolvis-commits] r10924: more work on query - everything is now multi-select boxes so more powerful queries can be built↵

mirabilos at evolvis.org mirabilos at evolvis.org
Thu Feb 24 17:58:01 CET 2011


Author: mirabilos
Date: 2011-02-24 17:58:01 +0100 (Thu, 24 Feb 2011)
New Revision: 10924

Modified:
   trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactFactory.class
   trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactQuery.class
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/browse.php
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/query.php
Log:
more work on query - everything is now multi-select boxes so more powerful queries can be built


Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactFactory.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactFactory.class	2011-02-24 16:58:00 UTC (rev 10923)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactFactory.class	2011-02-24 16:58:01 UTC (rev 10924)
@@ -219,7 +219,11 @@
 
 		//if assigned to selected, and more to where clause
 		if ($this->assigned_to) {
-			$assigned_str="AND assigned_to='".$this->assigned_to."'";
+			if (is_array($this->assigned_to)) {
+				$assigned_str="AND assigned_to IN (".implode(',',$this->assigned_to).")";
+			} else {
+				$assigned_str="AND assigned_to='".$this->assigned_to."'";
+			}
 		} else {
 			//no assigned to was chosen, so don't add it to where clause
 			$assigned_str='';
@@ -249,7 +253,7 @@
 		//
 		//  now run the query using the criteria chosen above
 		//
-		$sql="SELECT artifact_vw.* FROM artifact_vw $ef_table_str
+		$sql="SELECT DISTINCT ON (group_artifact_id, artifact_id) artifact_vw.* FROM artifact_vw $ef_table_str
 			WHERE 
 			group_artifact_id='". $this->ArtifactType->getID() ."'
 			 $status_str $assigned_str $last_changed_str $ef_where_str

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactQuery.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactQuery.class	2011-02-24 16:58:00 UTC (rev 10923)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactQuery.class	2011-02-24 16:58:01 UTC (rev 10924)
@@ -201,6 +201,9 @@
 			$this->setError('Setting Status: '.db_error());
 			return false;
 		}
+		if (is_array($assignee)) {
+				$assignee=implode(',',$assignee);
+		}
 		$res=db_query("INSERT INTO artifact_query_fields 
 			(artifact_query_id,query_field_type,query_field_id,query_field_values) 
 			VALUES ('$id','".ARTIFACT_QUERY_ASSIGNEE."','0','".( (int)$assignee )."')");
@@ -400,7 +403,7 @@
 	function Exist($name) {
 		$user_id = user_getid();
 		$art_id = $this->ArtifactType->getID();
-		$sql = "SELECT * FROM artifact_query WHERE group_artifact_id = '".$art_id."' AND query_name = '".$name."' AND user_id = '".$user_id."'";
+		$sql = "SELECT * FROM artifact_query WHERE group_artifact_id = '$art_id' AND query_name = '$name' AND user_id = '$user_id'";
 		$res = db_query($sql);
 		if (db_numrows($res)>0) {
 			return true;

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/browse.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/browse.php	2011-02-24 16:58:00 UTC (rev 10923)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/browse.php	2011-02-24 16:58:01 UTC (rev 10924)
@@ -54,7 +54,7 @@
 $ath->header(array('titlevals'=>array($ath->getName()),'atid'=>$ath->getID()));
 
 echo '
-<table width="10%" border="0">
+<table width="60%" border="0">
 	<form action="'. $PHP_SELF .'?group_id='.$group_id.'&atid='.$ath->getID().'" method="post">';
 
 if (!session_loggedin()) {
@@ -136,26 +136,31 @@
 	'<td><span style="font-size:smaller">'.$Language->getText('tracker','changed').': <a href="javascript:help_window(\'/help/tracker.php?helpname=changed\')"><strong>(?)</strong></a><br />'. html_build_select_box_from_arrays($changed_arr,$changed_name_arr,'_changed_from',$_changed_from,false) .'</span></td>
 	</tr>';
 
-	echo '<tr>
+	echo '
+	<tr>
 		<td align="right"><span style="font-size:smaller">'.$Language->getText('tracker_browse','sort_by').': <a href="javascript:help_window(\'/help/tracker.php?helpname=sort_by\')"><strong>(?)</strong></a></span></td>'.
-		'<td><span style="font-size:smaller">'. 
-		html_build_select_box_from_arrays($order_arr,$order_name_arr,'_sort_col',$_sort_col,false) .'</td>'.
-		'<td><span style="font-size:smaller">'.html_build_select_box_from_arrays($sort_arr,$sort_name_arr,'_sort_ord',$_sort_ord,false) .'</td>'.
-		'<td><span style="font-size:smaller"><input type="submit" name="submit" value="'.$Language->getText('general','browse').'" /></td>'
-	.'</tr>'
-	.'<tr>';
+		'<td colspan="2"><span style="font-size:smaller">'. 
+		html_build_select_box_from_arrays($order_arr,$order_name_arr,'_sort_col',$_sort_col,false) .
+		html_build_select_box_from_arrays($sort_arr,$sort_name_arr,'_sort_ord',$_sort_ord,false) .
+		'<input type="submit" name="submit" value="'.$Language->getText('general','browse').'" /></span></td>
+	</tr>';
 } else {
 	$res=db_query("SELECT artifact_query_id,query_name 
 	FROM artifact_query WHERE user_id='".user_getid()."' AND group_artifact_id='".$ath->getID()."'");
 
+	echo '
+	<tr>';
 	if (db_numrows($res)>0) {
-	echo '<tr>'
-		.'<td align="right"><span style="font-size:smaller">'.html_build_select_box($res,'query_id',$query_id,false).'</span></td>'.
+	echo '
+		<td align="right"><span style="font-size:smaller">'.html_build_select_box($res,'query_id',$query_id,false).'</span></td>'.
 		'<td align="left"><span style="font-size:smaller"><input type="submit" name="run" value="'.$Language->getText('tracker','run_query').'"></input></span></td>';
+	} else {
+		echo '<td colspan="2"> </td>';
 	}
+echo '<td align="left"><span style="font-size:smaller"><strong><a href="javascript:admin_window(\'/tracker/?func=query&group_id='.$group_id.'&atid='. $ath->getID().'\')">'.$Language->getText('tracker','build_query').'</a></strong></span></td>
+	</tr>';
 }
-echo '<td align="left"><span style="font-size:smaller"><strong><a href="javascript:admin_window(\'/tracker/?func=query&group_id='.$group_id.'&atid='. $ath->getID().'\')">'.$Language->getText('tracker','build_query').'</a></strong></span></td>
-		</tr>
+echo '
 	</form></table>';
 /**
  *

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class	2011-02-24 16:58:00 UTC (rev 10923)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class	2011-02-24 16:58:01 UTC (rev 10924)
@@ -83,13 +83,21 @@
 //		echo ' | <a href="/tracker/admin/?group_id='.$group_id.'&atid='. $this->getID() .'">'.$Language->getText('tracker_artifacttype','edit_options').': '. $this->getName() .'</a></strong>';
 	}
 
-	function renderExtraFields($selected=array(),$show_100=false,$text_100='none',$show_any=false,$text_any='Any',$filter='',$status_show_100=false) {
+	function renderExtraFields($selected=array(),$show_100=false,$text_100='none',$show_any=false,$text_any='Any',$filter='',$status_show_100=false,$mode='') {
 		$efarr = $this->getExtraFields($filter);
 		//each two columns, we'll reset this and start a new row
 
 //TODO - add code for "display only" such as mod-limited and detail.php pages
 		$template = $this->getRenderHTML($filter);
 
+		if ($mode=='QUERY') {
+			$keys=array_keys($efarr);
+			for ($k=0; $k<count($keys); $k++) {
+				$i=$keys[$k];
+				$efarr[$i]['field_type'] = ARTIFACT_EXTRAFIELDTYPE_MULTISELECT;
+			}
+		}
+
 		$keys=array_keys($efarr);
 		for ($k=0; $k<count($keys); $k++) {
 			$i=$keys[$k];
@@ -352,7 +360,7 @@
 			<textarea name="extra_fields['.$extra_field_id.']" rows="'.$rows.'" cols="'.$cols.'">'.$contents.'</textarea>';
 	}
 
-	function technicianBox ($name='assigned_to',$checked='xzxz',$show_100=true,$text_100='none',$extra_id='-1',$extra_name='') {
+	function technicianBox ($name='assigned_to',$checked='xzxz',$show_100=true,$text_100='none',$extra_id='-1',$extra_name='',$multiple=false) {
 		global $Language;
 		if ($text_100=='none'){
 			$text_100=$Language->getText('tracker_artifacttype','nobody');
@@ -366,7 +374,11 @@
 			$ids[]=$extra_id;
 			$names[]=$extra_name;
 		}
-		return html_build_select_box_from_arrays ($ids,$names,$name,$checked,$show_100,$text_100);
+		if ($multiple) {
+			return html_build_multiple_select_box_from_arrays ($ids,$names,$name,$checked,15,$show_100,$text_100);
+		} else {
+			return html_build_select_box_from_arrays ($ids,$names,$name,$checked,$show_100,$text_100);
+		}
 	}
 
 	function cannedResponseBox ($name='canned_response',$checked='xzxz') {

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/query.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/query.php	2011-02-24 16:58:00 UTC (rev 10923)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/query.php	2011-02-24 16:58:01 UTC (rev 10924)
@@ -116,7 +116,7 @@
 $_sort_ord=$aq->getSortOrd();
 //
 //	creating a custom technician box which includes "any" and "unassigned"
-$tech_box=$ath->technicianBox ('_assigned_to',$_assigned_to,true,'none','0',$Language->getText('tracker','any'));
+$tech_box=$ath->technicianBox ('_assigned_to',$_assigned_to,true,'none','-1',false,true);
 
 
 //
@@ -226,7 +226,8 @@
 		}
 		echo '</td>
 	</tr>';
-	$ath->renderExtraFields($extra_fields,true,'None',true,'Any',ARTIFACT_EXTRAFIELD_FILTER_INT);
+	$ath->renderExtraFields($extra_fields,true,'None',true,'Any',ARTIFACT_EXTRAFIELD_FILTER_INT,false,'QUERY');
+	
 echo '
 	<tr>
 		<td><span style="font-size:smaller">'.$Language->getText('tracker_browse','sort_by').':</span><br />



More information about the evolvis-commits mailing list