[evolvis-commits] r10880: misc fixes↵
mirabilos at evolvis.org
mirabilos at evolvis.org
Thu Feb 24 17:57:19 CET 2011
Author: mirabilos
Date: 2011-02-24 17:57:19 +0100 (Thu, 24 Feb 2011)
New Revision: 10880
Modified:
trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog
trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class
trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/Artifact.class
trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/group.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/user.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/index.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/tracker/tracker.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/index.php
Log:
misc fixes
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog 2011-02-24 16:57:19 UTC (rev 10880)
@@ -1,3 +1,9 @@
+2005-03-25 Tim Perdue <tim at gforge.org>
+
+ * Bug fix in Group::removeUser - could fail in some cases
+ * tracker - the group_id and tracker_id are optional now
+ * SOAP - add support for the new EXTRA FIELDS
+
2004-04-29 Marcelo Mottalli <marcelo at gforgegroup.com>
* Bug fixes in tracker / mass update:
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class 2011-02-24 16:57:19 UTC (rev 10880)
@@ -1717,50 +1717,90 @@
//
// remove them from artifact types
//
- db_query("DELETE FROM artifact_perm
+ $res=db_query("DELETE FROM artifact_perm
WHERE group_artifact_id
IN (SELECT group_artifact_id
FROM artifact_group_list
WHERE group_id='".$this->getID()."')
AND user_id='$user_id'");
+ if (!$res) {
+ $this->setError('ERROR: DB: artifact_perm.'.db_error());
+ db_rollback();
+ return false;
+ }
//
// remove them from subprojects
//
- db_query("DELETE FROM project_perm
+ $res=db_query("DELETE FROM project_perm
WHERE group_project_id
IN (SELECT group_project_id
FROM project_group_list
WHERE group_id='".$this->getID()."')
AND user_id='$user_id'");
+ if (!$res) {
+ $this->setError('ERROR: DB: project_perm.'.db_error());
+ db_rollback();
+ return false;
+ }
//
// remove them from forums
//
- db_query("DELETE FROM forum_perm
+ $res=db_query("DELETE FROM forum_perm
WHERE group_forum_id
IN (SELECT group_forum_id
FROM forum_group_list
WHERE group_id='".$this->getID()."')
AND user_id='$user_id'");
+ if (!$res) {
+ $this->setError('ERROR: DB: forum_perm.'.db_error());
+ db_rollback();
+ return false;
+ }
//
// reassign open artifacts to id=100
//
- db_query("UPDATE artifact SET assigned_to='100'
+ $res=db_query("UPDATE artifact SET assigned_to='100'
WHERE group_artifact_id
IN (SELECT group_artifact_id
FROM artifact_group_list
WHERE group_id='".$this->getID()."')
AND status_id='1' AND assigned_to='$user_id'");
+ if (!$res) {
+ $this->setError('ERROR: DB: artifact.'.db_error());
+ db_rollback();
+ return false;
+ }
//
// reassign open tasks to id=100
+ // first have to purge any assignments that would cause
+ // conflict with existing assignment to 100
//
- db_query("UPDATE project_assigned_to SET assigned_to_id='100'
+ $res=db_query("DELETE FROM project_assigned_to
WHERE project_task_id IN (SELECT pt.project_task_id
+ FROM project_task pt, project_group_list pgl, project_assigned_to pat
+ WHERE pt.group_project_id = pgl.group_project_id
+ AND pat.project_task_id=pt.project_task_id
+ AND pt.status_id='1' AND pgl.group_id='".$this->getID()."'
+ AND pat.assigned_to_id='$user_id')
+ AND assigned_to_id='100'");
+ if (!$res) {
+ $this->setError('ERROR: DB: project_assigned_to 1'.db_error());
+ db_rollback();
+ return false;
+ }
+ $res=db_query("UPDATE project_assigned_to SET assigned_to_id='100'
+ WHERE project_task_id IN (SELECT pt.project_task_id
FROM project_task pt, project_group_list pgl
WHERE pt.group_project_id = pgl.group_project_id
AND pt.status_id='1' AND pgl.group_id='".$this->getID()."')
AND assigned_to_id='$user_id'");
+ if (!$res) {
+ $this->setError('ERROR: DB: project_assigned_to.'.db_error());
+ db_rollback();
+ return false;
+ }
//
// Remove user from system
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/Artifact.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/Artifact.class 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/Artifact.class 2011-02-24 16:57:19 UTC (rev 10880)
@@ -1295,8 +1295,7 @@
* @return array Array containing field ID => field name and value associated to it for
* this artifact
*/
- function getExtraFieldDataText()
- {
+ function getExtraFieldDataText() {
global $Language;
// First we get the list of extra fields and the data
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/group.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/group.php 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/group.php 2011-02-24 16:57:19 UTC (rev 10880)
@@ -128,6 +128,8 @@
Converts an array of Group objects to soap data
*/
function &groups_to_soap($grps) {
+ $return = array();
+
for ($i=0; $i<count($grps); $i++) {
if ($grps[$i]->isError()) {
//skip it if it had an error
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/user.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/user.php 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/common/user.php 2011-02-24 16:57:19 UTC (rev 10880)
@@ -126,8 +126,10 @@
Converts an array of User objects to soap data
*/
function &users_to_soap($usrs) {
+ $return = array();
for ($i=0; $i<count($usrs); $i++) {
if ($usrs[$i]->isError()) {
+ return new soap_fault ('','User to soap',$usrs[$i]->getErrorMessage(),$usrs[$i]->getErrorMessage());
//skip it if it had an error
} else {
//build an array of just the fields we want
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/index.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/index.php 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/index.php 2011-02-24 16:57:19 UTC (rev 10880)
@@ -69,7 +69,7 @@
$server->register(
'logout',
- array('sessionkey'=>'xsd:string'),
+ array('session_ser'=>'xsd:string'),
array('logoutResponse'=>'xsd:string'),
$uri,
$uri.'#logout');
@@ -154,8 +154,8 @@
*
* @param string sessionkey The session key
*/
-function logout($sessionkey) {
- continueSession($sessionkey);
+function logout($session_ser) {
+ continue_session($session_ser);
session_logout();
return "OK";
}
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/tracker/tracker.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/tracker/tracker.php 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/soap/tracker/tracker.php 2011-02-24 16:57:19 UTC (rev 10880)
@@ -30,9 +30,6 @@
require_once('common/tracker/ArtifactFactory.class');
require_once('common/tracker/ArtifactTypeFactory.class');
require_once('common/tracker/Artifacts.class');
-require_once('common/tracker/ArtifactResolution.class');
-require_once('common/tracker/ArtifactCategory.class');
-require_once('common/tracker/ArtifactGroup.class');
require_once('common/tracker/ArtifactFile.class');
require_once('common/tracker/ArtifactMessage.class');
@@ -53,7 +50,6 @@
'is_public' => array('name'=>'is_public', 'type' => 'xsd:int'),
'allow_anon' => array('name'=>'allow_anon', 'type' => 'xsd:int'),
'due_period' => array('name'=>'due_period', 'type' => 'xsd:int'),
- 'use_resolution' => array('name'=>'use_resolution', 'type' => 'xsd:int'),
'datatype' => array('name'=>'datatype', 'type' => 'xsd:int'),
'status_timeout' => array('name'=>'status_timeout', 'type' => 'xsd:int')
)
@@ -76,6 +72,34 @@
$uri,
$uri.'#getArtifactTypes','rpc','encoded'
);
+//
+// Artifact Extra Fields
+// By remo on 08-Mar-2005
+
+$server->wsdl->addComplexType(
+ 'ArtifactExtraFields',
+ 'complexType',
+ 'struct',
+ 'sequence',
+ '',
+ array(
+ 'extra_field_id' => array('name'=>'extra_field_id', 'type' => 'xsd:int'),
+ 'field_data' => array('name'=>'field_data', 'type' => 'xsd:string')
+ )
+);
+
+$server->wsdl->addComplexType(
+ 'ArrayOfArtifactExtraFields',
+ 'complexType',
+ 'array',
+ '',
+ 'SOAP-ENC:Array',
+ array(),
+ array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArtifactExtraFields[]')),
+ 'tns:ArtifactExtraFields'
+);
+
+
//
// Artifacts
//
@@ -89,19 +113,17 @@
'artifact_id' => array('name'=>'artifact_id', 'type' => 'xsd:int'),
'group_artifact_id' => array('name'=>'group_artifact_id', 'type' => 'xsd:int'),
'status_id' => array('name'=>'status_id', 'type' => 'xsd:int'),
- 'category_id' => array('name'=>'category_id', 'type' => 'xsd:int'),
- 'artifact_group_id' => array('name'=>'artifact_group_id', 'type' => 'xsd:int'),
- 'resolution_id' => array('name'=>'resolution_id', 'type' => 'xsd:int'),
'priority' => array('name'=>'priority', 'type' => 'xsd:int'),
'submitted_by' => array('name'=>'submitted_by', 'type' => 'xsd:int'),
'assigned_to' => array('name'=>'assigned_to', 'type' => 'xsd:int'),
'open_date' => array('name'=>'open_date', 'type' => 'xsd:int'),
'close_date' => array('name'=>'close_date', 'type' => 'xsd:int'),
'summary' => array('name'=>'summary', 'type' => 'xsd:string'),
- 'details' => array('name'=>'details', 'type' => 'xsd:string')
+ 'details' => array('name'=>'details', 'type' => 'xsd:string'),
+ 'extra_fields'=>array('name'=>'extra_fields', 'type' => 'tns:ArrayOfArtifactExtraFields')
)
);
-
+//ArrayOfArtifactExtraFields
$server->wsdl->addComplexType(
'ArrayOfArtifact',
'complexType',
@@ -121,12 +143,11 @@
'group_id'=>'xsd:int',
'group_artifact_id'=>'xsd:int',
'assigned_to'=>'xsd:int',
- 'status'=>'xsd:int',
- 'category'=>'xsd:int',
- 'group'=>'xsd:int'),
+ 'status'=>'xsd:int'),
array('getArtifactsResponse'=>'tns:ArrayOfArtifact'),
$uri,$uri.'#getArtifacts','rpc','encoded');
+
//addArtifact
$server->register(
'addArtifact',
@@ -135,18 +156,17 @@
'group_id'=>'xsd:int',
'group_artifact_id'=>'xsd:int',
'status_id'=>'xsd:int',
- 'category_id'=>'xsd:int',
- 'artifact_group_id'=>'xsd:int',
- 'resolution_id'=>'xsd:int',
'priority'=>'xsd:int',
'assigned_to'=>'xsd:int',
'summary'=>'xsd:string',
- 'details'=>'xsd:string'
+ 'details'=>'xsd:string',
+ 'extra_fields'=>'tns:ArrayOfArtifactExtraFields'
),
array('addArtifactResponse'=>'xsd:int'),
$uri,$uri.'#addArtifact','rpc','encoded'
);
+
//updateArtifact
$server->register(
'updateArtifact',
@@ -156,124 +176,17 @@
'group_artifact_id'=>'xsd:int',
'artifact_id'=>'xsd:int',
'status_id'=>'xsd:int',
- 'category_id'=>'xsd:int',
- 'artifact_group_id'=>'xsd:int',
- 'resolution_id'=>'xsd:int',
'priority'=>'xsd:int',
'assigned_to'=>'xsd:int',
'summary'=>'xsd:string',
- 'details'=>'xsd:string'
+ 'details'=>'xsd:string',
+ 'extra_fields'=>'tns:ArrayOfArtifactExtraFields'
),
array('addArtifactResponse'=>'xsd:int'),
$uri,$uri.'#updateArtifact','rpc','encoded'
);
-/*
-$session_ser,$group_id,$group_artifact_id,$artifact_id,$status_id,$category_id,
- $artifact_group_id,$resolution_id,$priority,$assigned_to,$summary,$details
-*/
-//
-// ArtifactCategory
-//
-$server->wsdl->addComplexType(
- 'ArtifactCategory',
- 'complexType',
- 'struct',
- 'sequence',
- '',
- array(
- 'id' => array('name'=>'id', 'type' => 'xsd:int'),
- 'group_artifact_id' => array('name'=>'group_artifact_id', 'type' => 'xsd:int'),
- 'category_name' => array('name'=>'category_name', 'type' => 'xsd:string'),
- 'auto_assign_to' => array('name'=>'auto_assign_to', 'type' => 'xsd:int')
- )
-);
-$server->wsdl->addComplexType(
- 'ArrayOfArtifactCategory',
- 'complexType',
- 'array',
- '',
- 'SOAP-ENC:Array',
- array(),
- array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArtifactCategory[]')),
- 'tns:ArtifactCategory'
-);
-
-$server->register(
- 'getArtifactCategories',
- array('session_ser'=>'xsd:string','group_id'=>'xsd:int','group_artifact_id'=>'xsd:int'),
- array('getArtifactCategoriesResponse'=>'tns:ArrayOfArtifactCategory'),
- $uri,$uri.'#getArtifactCategories','rpc','encoded'
-);
-
//
-// ArtifactGroup
-//
-$server->wsdl->addComplexType(
- 'ArtifactGroup',
- 'complexType',
- 'struct',
- 'sequence',
- '',
- array(
- 'id' => array('name'=>'id', 'type' => 'xsd:int'),
- 'group_artifact_id' => array('name'=>'group_artifact_id', 'type' => 'xsd:int'),
- 'group_name' => array('name'=>'group_name', 'type' => 'xsd:string')
- )
-);
-
-$server->wsdl->addComplexType(
- 'ArrayOfArtifactGroup',
- 'complexType',
- 'array',
- '',
- 'SOAP-ENC:Array',
- array(),
- array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArtifactGroup[]')),
- 'tns:ArtifactGroup'
-);
-
-$server->register(
- 'getArtifactGroups',
- array('session_ser'=>'xsd:string','group_id'=>'xsd:int','group_artifact_id'=>'xsd:int'),
- array('getArtifactGroupsResponse'=>'tns:ArrayOfArtifactGroup'),
- $uri,$uri.'#getArtifactGroups','rpc','encoded'
-);
-
-//
-// ArtifactResolution
-//
-$server->wsdl->addComplexType(
- 'ArtifactResolution',
- 'complexType',
- 'struct',
- 'sequence',
- '',
- array(
- 'id' => array('name'=>'id', 'type' => 'xsd:int'),
- 'group_artifact_id' => array('name'=>'group_artifact_id', 'type' => 'xsd:int'),
- 'resolution_name' => array('name'=>'resolution_name', 'type' => 'xsd:string')
- )
-);
-
-$server->wsdl->addComplexType(
- 'ArrayOfArtifactResolution',
- 'complexType',
- 'array',
- '',
- 'SOAP-ENC:Array',
- array(),
- array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArtifactResolution[]')),
- 'tns:ArtifactResolution');
-
-$server->register(
- 'getArtifactResolutions',
- array('session_ser'=>'xsd:string','group_id'=>'xsd:int','group_artifact_id'=>'xsd:int'),
- array('getArtifactResolutionsResponse'=>'tns:ArrayOfArtifactResolution'),
- $uri,$uri.'#getArtifactResolutions','rpc','encoded'
-);
-
-//
// ArtifactFile
//
$server->wsdl->addComplexType(
@@ -403,6 +316,8 @@
// convert array of artifact types to soap data structure
//
function artifacttype_to_soap($at_arr) {
+ $return = array();
+
for ($i=0; $i<count($at_arr); $i++) {
if ($at_arr[$i]->isError()) {
//skip if error
@@ -415,7 +330,6 @@
'is_public'=>$at_arr[$i]->data_array['is_public'],
'allow_anon'=>$at_arr[$i]->data_array['allow_anon'],
'due_period'=>$at_arr[$i]->data_array['due_period'],
- 'use_resolution'=>$at_arr[$i]->data_array['use_resolution'],
'datatype'=>$at_arr[$i]->data_array['datatype'],
'status_timeout'=>$at_arr[$i]->data_array['status_timeout']
);
@@ -424,11 +338,26 @@
return $return;
}
+//Arrange the ExtraFields
+function arrangeExtraFields($extra_fields) {
+ $efields=array();
+ $fieldsdata=array();
+ if (is_array($extra_fields)) {
+ while(list($eky,)=each($extra_fields)) {
+ $efields=$extra_fields[$eky];
+ $fieldsdata[$efields['extra_field_id']]=$efields['field_data'];
+ }
+ }
+ return $fieldsdata;
+}
+
//
// addArtifact
//
-function &addArtifact($session_ser,$group_id,$group_artifact_id,$status_id,$category_id,
- $artifact_group_id,$resolution_id,$priority,$assigned_to,$summary,$details) {
+
+function &addArtifact($session_ser,$group_id,$group_artifact_id,$status_id,
+ $priority,$assigned_to,$summary,$details,$extra_fields) {
+
continue_session($session_ser);
$grp =& group_get_object($group_id);
if (!$grp || !is_object($grp)) {
@@ -450,8 +379,9 @@
} elseif ($a->isError()) {
return new soap_fault ('','addArtifact',$a->getErrorMessage(),$a->getErrorMessage());
}
-
- if (!$a->create($category_id,$artifact_group_id,$summary,$details,$assigned_to,$priority)) {
+ $extra_flds=arrangeExtraFields($extra_fields);
+// if (!$a->create($artifact_group_id,$summary,$details,$assigned_to,$priority,$extra_flds)) {
+ if (!$a->create($summary,$details,$assigned_to,$priority,$extra_flds)) {
return new soap_fault ('','addArtifact',$a->getErrorMessage(),$a->getErrorMessage());
} else {
return $a->getID();
@@ -461,8 +391,8 @@
//
// Update Artifact
//
-function &updateArtifact($session_ser,$group_id,$group_artifact_id,$artifact_id,$status_id,$category_id,
- $artifact_group_id,$resolution_id,$priority,$assigned_to,$summary,$details) {
+function &updateArtifact($session_ser,$group_id,$group_artifact_id,$artifact_id,$status_id,
+ $priority,$assigned_to,$summary,$details,$new_artifact_type_id,$extra_fields) {
continue_session($session_ser);
$grp =& group_get_object($group_id);
if (!$grp || !is_object($grp)) {
@@ -484,9 +414,10 @@
} elseif ($a->isError()) {
return new soap_fault ('','addArtifact',$a->getErrorMessage(),$a->getErrorMessage());
}
-
- if (!$a->update($priority,$status_id,$category_id,$artifact_group_id,$resolution_id,$assigned_to,
- $summary,$canned_response,$details,$new_artifact_type_id)) {
+//NOT DONE - $new_artifact_type_id missing, extra_fields missing
+ $extra_flds=arrangeExtraFields($extra_fields);
+ if (!$a->update($priority,$status_id,$assigned_to,
+ $summary,$canned_response,$details,$new_artifact_type_id,$extra_flds)) {
return new soap_fault ('','addArtifact',$a->getErrorMessage(),$a->getErrorMessage());
} else {
return $a->getID();
@@ -494,127 +425,6 @@
}
//
-// getArtifactCategories
-//
-function &getArtifactCategories($session_ser,$group_id,$group_artifact_id) {
- continue_session($session_ser);
- $grp =& group_get_object($group_id);
- if (!$grp || !is_object($grp)) {
- return new soap_fault ('','getArtifactCategories','Could Not Get Group','Could Not Get Group');
- } elseif ($grp->isError()) {
- return new soap_fault ('','getArtifactCategories',$grp->getErrorMessage(),$grp->getErrorMessage());
- }
-
- $at = new ArtifactType($grp,$group_artifact_id);
- if (!$at || !is_object($at)) {
- return new soap_fault ('','getArtifactCategories','Could Not Get ArtifactType','Could Not Get ArtifactType');
- } elseif ($at->isError()) {
- return new soap_fault ('','getArtifactCategories',$at->getErrorMessage(),$at->getErrorMessage());
- }
-
- return artifactcategories_to_soap($at->getCategoryObjects());
-}
-
-//
-// convert array of artifact categories to soap data structure
-//
-function artifactcategories_to_soap($at_arr) {
- for ($i=0; $i<count($at_arr); $i++) {
- if ($at_arr[$i]->isError()) {
- //skip if error
- } else {
- $return[]=array(
- 'id'=>$at_arr->data_array['id'],
- 'group_artifact_id'=>$at_arr[$i]->data_array['group_artifact_id'],
- 'category_name'=>$at_arr[$i]->data_array['category_name'],
- 'auto_assign_to'=>$at_arr[$i]->data_array['auto_assign_to']
- );
- }
- }
- return $return;
-}
-
-//
-// getArtifactGroups
-//
-function &getArtifactGroups($session_ser,$group_id,$group_artifact_id) {
- continue_session($session_ser);
- $grp =& group_get_object($group_id);
- if (!$grp || !is_object($grp)) {
- return new soap_fault ('','getArtifactGroups','Could Not Get Group','Could Not Get Group');
- } elseif ($grp->isError()) {
- return new soap_fault ('','getArtifactGroups',$grp->getErrorMessage(),$grp->getErrorMessage());
- }
-
- $at = new ArtifactType($grp,$group_artifact_id);
- if (!$at || !is_object($at)) {
- return new soap_fault ('','getArtifactGroups','Could Not Get ArtifactType','Could Not Get ArtifactType');
- } elseif ($at->isError()) {
- return new soap_fault ('','getArtifactGroups',$at->getErrorMessage(),$at->getErrorMessage());
- }
-
- return artifactgroups_to_soap($at->getGroupObjects());
-}
-
-//
-// convert array of artifact groups to soap data structure
-//
-function artifactgroups_to_soap($at_arr) {
- for ($i=0; $i<count($at_arr); $i++) {
- if ($at_arr[$i]->isError()) {
- //skip if error
- } else {
- $return[]=array(
- 'id'=>$at_arr[$i]->data_array['id'],
- 'group_artifact_id'=>$at_arr[$i]->data_array['group_artifact_id'],
- 'group_name'=>$at_arr[$i]->data_array['group_name']
- );
- }
- }
- return $return;
-}
-
-//
-// getArtifactResolutions
-//
-function &getArtifactResolutions($session_ser,$group_id,$group_artifact_id) {
- continue_session($session_ser);
- $grp =& group_get_object($group_id);
- if (!$grp || !is_object($grp)) {
- return new soap_fault ('','getArtifactResolutions','Could Not Get Group','Could Not Get Group');
- } elseif ($grp->isError()) {
- return new soap_fault ('','getArtifactResolutions',$grp->getErrorMessage(),$grp->getErrorMessage());
- }
-
- $at = new ArtifactType($grp,$group_artifact_id);
- if (!$at || !is_object($at)) {
- return new soap_fault ('','getArtifactResolutions','Could Not Get ArtifactType','Could Not Get ArtifactType');
- } elseif ($at->isError()) {
- return new soap_fault ('','getArtifactResolutions',$at->getErrorMessage(),$at->getErrorMessage());
- }
-
- return artifactresolutions_to_soap($at->getResolutionObjects());
-}
-
-//
-// convert array of artifact resolutions to soap data structure
-//
-function artifactresolutions_to_soap($at_arr) {
- for ($i=0; $i<count($at_arr); $i++) {
- if ($at_arr[$i]->isError()) {
- //skip if error
- } else {
- $return[]=array(
- 'id'=>$at_arr[$i]->data_array['id'],
- 'group_artifact_id'=>$at_arr[$i]->data_array['group_artifact_id'],
- 'resolution_name'=>$at_arr[$i]->data_array['resolution_name']
- );
- }
- }
- return $return;
-}
-
-//
// getArtifactTechnicians
//
function &getArtifactTechnicians($session_ser,$group_id,$group_artifact_id) {
@@ -639,7 +449,7 @@
//
// getArtifacts
//
-function &getArtifacts($session_ser,$group_id,$group_artifact_id,$assigned_to,$status,$category,$group) {
+function &getArtifacts($session_ser,$group_id,$group_artifact_id,$assigned_to,$status) {
continue_session($session_ser);
$grp =& group_get_object($group_id);
if (!$grp || !is_object($grp)) {
@@ -662,7 +472,9 @@
return new soap_fault ('','getArtifacts',$af->getErrorMessage(),$af->getErrorMessage());
}
- $af->setup(0,0,0,0,false,$assigned_to,$status,$category,$group,0);
+//MAY HAVE TO CHANGE PARAMS TO FORCE RETRIEVAL OF RIGHT RECORDS - FOR INSTANCE $set='Custom'
+//NEEDS TO BE TESTED
+ $af->setup(0,'','',0,false,$assigned_to,$status);
return artifacts_to_soap($af->getArtifacts());
}
@@ -678,24 +490,52 @@
// convert array of artifacts to soap data structure
//
function artifacts_to_soap($at_arr) {
+ $return = array();
for ($i=0; $i<count($at_arr); $i++) {
if ($at_arr[$i]->isError()) {
//skip if error
} else {
+//NEEDS THOROUGH COMMENTS AND EXPLANATION
+ //***********
+ // Retrieving the artifact details
+ //**checks whether there is any artifact details exists for this object, if not continue with next loop
+
+ if(count($at_arr[$i]) < 1) { continue; }
+ $flddata=array();
+ $fldelementdata=array();
+ $extrafieldsdata=array();
+ $extrafieldsdata=$at_arr[$i]->getExtraFieldData();
+
+ //********
+ //** Retrieving the extra field data and the element data
+ //** checks whether there is any extra fields data available for this artifact
+ //** and checks for the extra element data for the multiselect and checkbox type
+ if(is_array($extrafieldsdata) && count($extrafieldsdata)>0) {
+ while(list($ky,$vl)=each($extrafieldsdata)) {
+ $fldarr=array();
+ if(is_array($extrafieldsdata[$ky])) {
+ //** Retrieving the multiselect and checkbox type data element
+ $fldarr=array('extra_field_id'=>$ky,'field_data'=>implode(",",$extrafieldsdata[$ky]));
+ } else {
+ //** Retrieving the extra field data
+ $fldarr=array('extra_field_id'=>$ky,'field_data'=>$vl);
+ }
+ $flddata[]=$fldarr;
+ unset($fldarr);
+ }
+ }
$return[]=array(
'artifact_id'=>$at_arr[$i]->data_array['artifact_id'],
'group_artifact_id'=>$at_arr[$i]->data_array['group_artifact_id'],
'status_id'=>$at_arr[$i]->data_array['status_id'],
- 'category_id'=>$at_arr[$i]->data_array['category_id'],
- 'artifact_group_id'=>$at_arr[$i]->data_array['artifact_group_id'],
- 'resolution_id'=>$at_arr[$i]->data_array['resolution_id'],
'priority'=>$at_arr[$i]->data_array['priority'],
'submitted_by'=>$at_arr[$i]->data_array['submitted_by'],
'assigned_to'=>$at_arr[$i]->data_array['assigned_to'],
'open_date'=>$at_arr[$i]->data_array['open_date'],
'close_date'=>$at_arr[$i]->data_array['close_date'],
'summary'=>$at_arr[$i]->data_array['summary'],
- 'details'=>$at_arr[$i]->data_array['details']
+ 'details'=>$at_arr[$i]->data_array['details'],
+ 'extra_fields'=>$flddata
);
}
}
@@ -871,4 +711,186 @@
}
}
+//*****************************
+//By Remo on 24-03-2005
+//for getProjectData() function
+
+$server->wsdl->addComplexType(
+ 'ArtifactTypeData',
+ 'complexType',
+ 'struct',
+ 'sequence',
+ '',
+ array(
+ 'ArtifactType' => array('name'=>'ArtifactType', 'type' => 'tns:ArtifactType'),
+ 'technicians' => array('name'=>'technicians', 'type' => 'tns:ArrayOfUser'),
+ 'artifacts' => array('name'=>'artifacts', 'type' => 'tns:ArrayOfArtifact')
+ )
+);
+
+$server->wsdl->addComplexType(
+ 'ArrayOfArtifactTypeData',
+ 'complexType',
+ 'array',
+ '',
+ 'SOAP-ENC:Array',
+ array(),
+ array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArtifactTypeData[]')),
+ 'tns:ArtifactTypeData'
+);
+
+$server->wsdl->addComplexType(
+ 'GroupData',
+ 'complexType',
+ 'struct',
+ 'sequence',
+ '',
+ array(
+ 'group' => array('name'=>'groups', 'type' => 'tns:Group'),
+//THIS IS NOT RIGHT - IT WOULD PROBABLY BE ARRAY OF ARTIFACT_TYPE
+ 'artifacttypes' => array('name'=>'artifacttypes', 'type' => 'tns:ArrayOfArtifactTypeData')
+ )
+);
+
+$server->wsdl->addComplexType(
+ 'ProjectData',
+ 'complexType',
+ 'array',
+ '',
+ 'SOAP-ENC:Array',
+ array(),
+ array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:GroupData[]')),
+ 'tns:GroupData'
+);
+
+$server->register(
+ 'getProjectData',
+ array('session_ser'=>'xsd:string'),
+ array('getProjectDataResponse'=>'tns:ProjectData'),
+ $uri,$uri.'#getProjectData','rpc','encoded');
+
+
+//********************************************************************
+//
+// getProjectData function is used to retrieve the information like
+// Group details and their related Artifact details, and extra field
+// data and element details which is related to the artifact
+//
+//*******************************************************************
+
+function getProjectData($session_ser) {
+ continue_session($session_ser);
+ $uid =& user_getid(); // Get the user id
+ if (!$uid) {
+ return new soap_fault ('','getProjectData','Could Not Get User','Could Not Get User');
+ }
+ if($uid) {
+ $usrobj=& session_get_user(); // Get the user object for the current session
+ if (!$usrobj || !is_object($usrobj)) {
+ return new soap_fault ('','getProjectData','Could Not Get User','Could Not Get User');
+ } elseif ($usrobj->isError()) {
+ return new soap_fault ('','getProjectData',$usrobj->getErrorMessage(),$usrobj->getErrorMessage());
+ }
+ }
+
+//NEEDS LOTS OF COMMENTS THROUHOUT
+ //*********
+ //** Retrieve the group objects from the user object for the current session using $usrobj->getGroups() function
+
+ $grpsobj=$usrobj->getGroups();
+ reset($grpsobj);
+ $return=array(); //initialize the return array
+
+ //*******
+ // Loop through the group array object
+ // and retrive the ArtifactTypeFactory object from the group object
+ while(list($gky,) = each($grpsobj)) {
+ if (!is_object($grpsobj[$gky])) {
+ continue;
+ }
+ if ($grpsobj[$gky]->isError()) {
+ return new soap_fault('','getProjectData',$grpsobj[$gky]->getErrorMessage(),$grpsobj[$gky]->getErrorMessage());
+ //skip it if it had an error
+ } else {
+ $grpobj=$grpsobj[$gky];
+ $returnGroup=array();
+ $atobjs=array();
+ $atfobj = new ArtifactTypeFactory($grpobj); //Initialize the ArtifactTypeFactory object from group object
+ if (!$atfobj || !is_object($atfobj)) {
+ return new soap_fault ('','getProjectData','Could Not Get ArtifactTypeFactory','Could Not Get ArtifactTypeFactory');
+ } elseif ($atfobj->isError()) {
+ return new soap_fault ('','getProjectData',$atfobj->getErrorMessage(),$atf->getErrorMessage());
+ }
+ //********
+ // Retreive the ArtifactType object from the ArtifactTypeFactory object
+ $atobjs=$atfobj->getArtifactTypes();
+ if(!$atobjs) { continue; }
+ $j=0;
+ reset($atobjs);
+ $returnATdata=array();
+ while(list($atky1, )=each($atobjs)) {
+ $returnTechnicians=array();
+ $tmpartifactlist=array();
+ $i=$atky1;
+ if ($atobjs[$i]->isError()) {
+ return new soap_fault('','getProjectData',$atobjs[$i]->getErrorMessage(),$atobjs[$i]->getErrorMessage());
+ } else {
+ $afobj = new ArtifactFactory($atobjs[$i]);
+ if (!$afobj || !is_object($afobj)) {
+ return new soap_fault ('','getProjectData','Could Not Get ArtifactFactory','Could Not Get ArtifactFactory');
+ } elseif ($afobj->isError()) {
+ return new soap_fault ('','getProjectData',$afobj->getErrorMessage(),$afobj->getErrorMessage());
+ }
+ $afobj->setup(0,'','',0,false,false,false);
+ $tmpartifactlist=$afobj->getArtifacts();
+ //$returnArtifacts=array();
+ $returnTechnicians=users_to_soap($atobjs[$i]->getTechnicianObjects());
+ $returnArtifacts=artifacts_to_soap($tmpartifactlist);
+
+ $returnArtifactType=array(
+ 'group_artifact_id'=>$atobjs[$i]->data_array['group_artifact_id'],
+ 'group_id'=>$atobjs[$i]->data_array['group_id'],
+ 'name'=>$atobjs[$i]->data_array['name'],
+ 'description'=>$atobjs[$i]->data_array['description'],
+ 'is_public'=>$atobjs[$i]->data_array['is_public'],
+ 'allow_anon'=>$atobjs[$i]->data_array['allow_anon'],
+ 'due_period'=>$atobjs[$i]->data_array['due_period'],
+ 'datatype'=>$atobjs[$i]->data_array['datatype'],
+ 'status_timeout'=>$atobjs[$i]->data_array['status_timeout']);
+ $returnATdata[] = array(
+ 'ArtifactType' => $returnArtifactType,
+ 'technicians' => $returnTechnicians,
+ 'artifacts' => $returnArtifacts);
+ $returnTechnicians=array();
+ $returnArtifacts=array();
+ $returnArtifactType=array();
+ }
+ }
+
+ //mail("remo at wcogs.com","getProjectData-ArtifactType",count($artifact_list1));
+ //$artifact_list1=$tmpartifactlist;
+ //$returnArtifacts=artifacts_to_soap($artifact_list1);
+
+ $returnGroup = array('group_id'=>$grpobj->data_array['group_id'],
+ 'group_name'=>$grpobj->data_array['group_name'],
+ 'homepage'=>$grpobj->data_array['homepage'],
+ 'is_public'=>$grpobj->data_array['is_public'],
+ 'status'=>$grpobj->data_array['status'],
+ 'unix_group_name'=>$grpobj->data_array['unix_group_name'],
+ 'short_description'=>$grpobj->data_array['short_description'],
+ 'scm_box'=>$grpobj->data_array['scm_box'],
+ 'register_time'=>$grpobj->data_array['register_time']);
+
+ $return[] = array(
+ 'group' => $returnGroup,
+ 'artifacttypes' => $returnATdata
+ );
+ $returnATdata=array();
+ }
+ }
+ //$ar = array(array("group"=>array(),"artifacttypes"=>array(array("ArtifactType"=>array(),"artifacts"=>array()))));
+ //return $ar;
+ return $return;
+}
+
?>
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/index.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/index.php 2011-02-24 16:57:18 UTC (rev 10879)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/index.php 2011-02-24 16:57:19 UTC (rev 10880)
@@ -25,6 +25,18 @@
exit_disabled();
}
+//if the ATID and GID are not provided, but
+//the artifact_id is, then fetch the other vars
+if ($aid && (!$group_id && !$atid)) {
+ $a =& artifact_get_object($aid);
+ if (!$a || !is_object($a) || $a->isError()) {
+ exit_error('Error','Could Not Get Artifact Object');
+ } else {
+ $group_id=$a->ArtifactType->Group->getID();
+ $atid=$a->ArtifactType->getID();
+ $func='detail';
+ }
+}
if ($group_id && $atid) {
include('tracker.php');
More information about the evolvis-commits
mailing list