View Issue Details

IDProjectCategoryView StatusLast Update
0012360mantisbtapi soappublic2010-12-17 04:37
Reporterpetertc Assigned Torombert  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version1.2.3 
Target Version1.2.4Fixed in Version1.2.4 
Summary0012360: [PATCH] Get id of project with specified name via SOAP API
Description

This patch add ability to get project id from project name.

Without this patch, people who want to check whether the project is exist need using mc_projects_get_user_accessible to get all projects and using for loop to check. It exhaust much memory and is slow.

Attach is my patch in git format.

TagsNo tags attached.
Attached Files
feature_branch.patch (2,651 bytes)   
From 20ace2c5b351e59185fcbccd2c0ade042bcf41fd Mon Sep 17 00:00:00 2001
From: petertc <petertc.chu@gmail.com>
Date: Thu, 16 Sep 2010 19:45:19 +0800
Subject: [PATCH] Get the id of project with the specified name via SOAP API

---
 api/soap/mantisconnect.php  |   15 +++++++++++++++
 api/soap/mc_project_api.php |   32 ++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/api/soap/mantisconnect.php b/api/soap/mantisconnect.php
index cbe655a..5505a6c 100644
--- a/api/soap/mantisconnect.php
+++ b/api/soap/mantisconnect.php
@@ -1017,6 +1017,21 @@ $l_oServer->register( 'mc_project_update',
         'Update a specific project to the tracker (must have admin privileges)'
 );
 
+### mc_project_get_id_from_name
+$l_oServer->register( 'mc_project_get_id_from_name',
+	array(
+		'username' => 'xsd:string',
+		'password' => 'xsd:string',	
+		'project_name' => 'xsd:string'		
+	),
+	array(
+		'return' => 'xsd:integer'
+	),
+	$t_namespace,
+	false, false, false,
+	'Get the id of the project with the specified name.'
+);
+
 ### mc_project_get_issues
 $l_oServer->register( 'mc_project_get_issues',
 	array(
diff --git a/api/soap/mc_project_api.php b/api/soap/mc_project_api.php
index 42388ad..2bdc1c7 100644
--- a/api/soap/mc_project_api.php
+++ b/api/soap/mc_project_api.php
@@ -652,6 +652,38 @@ function mci_project_as_array_by_id( $p_project_id ) {
 	return $t_result;
 }
 
+/**
+ * Get the id of a project via the project's name.
+ *
+ * @param string $p_username  The name of the user trying to access the versions.
+ * @param string $p_password  The password of the user.
+ * @param string $p_project_name  The name of the project to retrieve.
+ * @return integer  The id of the project with the given name, -1 if there is no such project.
+ */
+function mc_project_get_id_from_name( $p_username, $p_password, $p_project_name ) {
+        $t_user_id = mci_check_login( $p_username, $p_password );
+        if( $t_user_id === false ) {
+                return mci_soap_fault_login_failed();
+        }
+
+        $t_project_table = db_get_table( 'mantis_project_table' );
+
+        $query = "SELECT id
+                FROM $t_project_table
+                WHERE name = " . db_param();
+
+        $result = db_query_bound( $query, Array( $p_project_name ), 1 );
+
+        if( db_num_rows( $result ) == 0 ) {
+                return -1;
+        } else {
+                $row = db_fetch_array( $result );
+                $t_project_id = (int) $row['id'];                     
+                return $t_project_id;
+        }
+}
+
+
 ### MantisConnect Administrative Webservices ###
 
 /**
-- 
1.7.0.4

feature_branch.patch (2,651 bytes)   
feature_branch.patch.1 (4,135 bytes)

Activities

rombert

rombert

2010-09-16 08:07

reporter   ~0026734

Thanks for the patch.

Can you please add a test as well? See tests/soap for some examples.

petertc

petertc

2010-09-17 01:27

reporter   ~0026744

I add a test case in the second attach.

rombert

rombert

2010-10-29 16:43

reporter   ~0027200

Applied, with a couple of fixes:

  • use the existing project api function ;
  • separate the unit test into a new one;
  • squash the two commits into one.

Sorry for the delay.

Related Changesets

MantisBT: master ec53b72a

2010-09-16 07:45

petertc

Committer: rombert


Details Diff
Get the id of project with the specified name via SOAP API

Fixes 0012360: [PATCH] Get id of project with specified name via SOAP API

Signed-off-by: Robert Munteanu <robert.munteanu@gmail.com>
Affected Issues
0012360
mod - api/soap/mantisconnect.php Diff File
mod - tests/soap/ProjectTest.php Diff File
mod - api/soap/mc_project_api.php Diff File

MantisBT: master-1.2.x a9b22d80

2010-09-16 07:45

petertc

Committer: rombert


Details Diff
Get the id of project with the specified name via SOAP API

Fixes 0012360: [PATCH] Get id of project with specified name via SOAP API

Signed-off-by: Robert Munteanu <robert.munteanu@gmail.com>
Affected Issues
0012360
mod - api/soap/mantisconnect.php Diff File
mod - tests/soap/ProjectTest.php Diff File
mod - api/soap/mc_project_api.php Diff File