3 * SOAP Task Manager Include - this file contains wrapper functions for the SOAP interface
5 * Copyright 2004 (c) GForge, LLC
10 * This file is part of GForge.
12 * GForge is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
17 * GForge is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with GForge; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US
27 require_once('common/include/Error.class');
28 require_once('common/pm/ProjectGroup.class');
29 require_once('common/pm/ProjectGroupFactory.class');
30 require_once('common/pm/ProjectTaskFactory.class');
31 require_once('common/pm/ProjectTask.class');
32 require_once('common/pm/ProjectCategory.class');
33 //require_once('common/pm/ProjectMessage.class');
38 $server->wsdl->addComplexType(
45 'group_project_id' => array('name'=>'group_project_id', 'type' => 'xsd:int'),
46 'group_id' => array('name'=>'group_id', 'type' => 'xsd:int'),
47 'name' => array('name'=>'name', 'type' => 'xsd:string'),
48 'description' => array('name'=>'description', 'type' => 'xsd:string'),
49 'is_public' => array('name'=>'is_public', 'type' => 'xsd:int'),
50 'send_all_posts_to' => array('name'=>'send_all_posts_to', 'type' => 'xsd:string')
54 $server->wsdl->addComplexType(
55 'ArrayOfProjectGroup',
61 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ProjectGroup[]')),
67 array('session_ser'=>'xsd:string','group_id'=>'xsd:int'),
68 array('getProjectGroupsResponse'=>'tns:ArrayOfProjectGroup'),
69 $uri,$uri.'#getProjectGroups','rpc','encoded'
76 $server->wsdl->addComplexType(
83 'project_task_id' => array('name'=>'project_task_id', 'type' => 'xsd:int'),
84 'group_project_id' => array('name'=>'group_project_id', 'type' => 'xsd:int'),
85 'summary' => array('name'=>'summary', 'type' => 'xsd:string'),
86 'details' => array('name'=>'details', 'type' => 'xsd:string'),
87 'percent_complete' => array('name'=>'percent_complete', 'type' => 'xsd:int'),
88 'priority' => array('name'=>'priority', 'type' => 'xsd:int'),
89 'hours' => array('name'=>'hours', 'type' => 'xsd:int'),
90 'start_date' => array('name'=>'start_date', 'type' => 'xsd:int'),
91 'end_date' => array('name'=>'end_date', 'type' => 'xsd:int'),
92 'status_id' => array('name'=>'status_id', 'type' => 'xsd:int'),
93 'category_id' => array('name'=>'category_id', 'type' => 'xsd:int'),
94 'is_dependent_on_task_id' => array('name'=>'is_dependent_on_task_id', 'type' => 'tns:ArrayOfint'),
95 'assigned_to_id' => array('name'=>'assigned_to_id', 'type' => 'tns:ArrayOfint')
99 $server->wsdl->addComplexType(
100 'ArrayOfProjectTask',
106 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ProjectTask[]')),
114 'session_ser'=>'xsd:string',
115 'group_id'=>'xsd:int',
116 'group_project_id'=>'xsd:int',
117 'assigned_to'=>'xsd:int',
119 'category'=>'xsd:int',
121 array('getProjectTasksResponse'=>'tns:ArrayOfProjectTask'),
122 $uri,$uri.'#getProjectTasks','rpc','encoded'
129 'session_ser'=>'xsd:string',
130 'group_id'=>'xsd:int',
131 'group_project_id'=>'xsd:int',
132 'summary'=>'xsd:string',
133 'details'=>'xsd:string',
134 'priority'=>'xsd:int',
136 'start_date'=>'xsd:int',
137 'end_date'=>'xsd:int',
138 'category_id'=>'xsd:int',
139 'percent_complete'=>'xsd:int',
140 'assigned_to'=>'tns:ArrayOfint',
141 'dependent_on'=>'tns:ArrayOfint'),
142 array('addProjectTaskResponse'=>'xsd:int'),
143 $uri,$uri.'#addProjectTask','rpc','encoded'
150 'session_ser'=>'xsd:string',
151 'group_id'=>'xsd:int',
152 'group_project_id'=>'xsd:int',
153 'project_task_id'=>'xsd:int',
154 'summary'=>'xsd:string',
155 'details'=>'xsd:string',
156 'priority'=>'xsd:int',
158 'start_date'=>'xsd:int',
159 'end_date'=>'xsd:int',
160 'status_id'=>'xsd:int',
161 'category_id'=>'xsd:int',
162 'percent_complete'=>'xsd:int',
163 'assigned_to'=>'tns:ArrayOfint',
164 'dependent_on'=>'tns:ArrayOfint',
165 'new_group_project_id'=>'int'),
166 array('addProjectTaskResponse'=>'xsd:int'),
167 $uri,$uri.'#updateProjectTask','rpc','encoded'
173 $server->wsdl->addComplexType(
180 'id' => array('name'=>'id', 'type' => 'xsd:int'),
181 'group_project_id' => array('name'=>'group_project_id', 'type' => 'xsd:int'),
182 'category_name' => array('name'=>'category_name', 'type' => 'xsd:string')
186 $server->wsdl->addComplexType(
187 'ArrayOfProjectCategory',
193 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ProjectCategory[]')),
194 'tns:ProjectCategory'
198 'getProjectTaskCategories',
199 array('session_ser'=>'xsd:string','group_id'=>'xsd:int','group_project_id'=>'xsd:int'),
200 array('getProjectTaskCategoriesResponse'=>'tns:ArrayOfProjectCategory'),
201 $uri,$uri.'#getProjectTaskCategories','rpc','encoded'
207 $server->wsdl->addComplexType(
214 'project_message_id' => array('name'=>'project_message_id', 'type' => 'xsd:int'),
215 'project_task_id' => array('name'=>'project_task_id', 'type' => 'xsd:int'),
216 'body' => array('name'=>'body', 'type' => 'xsd:string'),
217 'postdate' => array('name'=>'postdate', 'type' => 'xsd:int'),
218 'posted_by' => array('name'=>'posted_by', 'type' => 'xsd:int')
222 $server->wsdl->addComplexType(
223 'ArrayOfProjectMessage',
229 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ProjectMessage[]')),
234 'getProjectMessages',
235 array('session_ser'=>'xsd:string',
236 'group_id'=>'xsd:int',
237 'group_project_id'=>'xsd:int',
238 'project_task_id'=>'xsd:int'
240 array('getProjectMessagesResponse'=>'tns:ArrayOfProjectMessage'),
241 $uri,$uri.'#getProjectMessages','rpc','encoded'
247 array('session_ser'=>'xsd:string',
248 'group_id'=>'xsd:int',
249 'group_project_id'=>'xsd:int',
250 'project_task_id'=>'xsd:int',
253 array('addProjectMessageResponse'=>'xsd:int'),
254 $uri,$uri.'#addProjectMessage','rpc','encoded'
258 // ProjectTaskTechnician
263 'getProjectTechnicians',
264 array('session_ser'=>'xsd:string',
265 'group_id'=>'xsd:int',
266 'group_project_id'=>'xsd:int'),
267 array('getProjectTechniciansResponse'=>'tns:ArrayOfUser'),
268 $uri,$uri.'#getProjectTechnicians','rpc','encoded'
275 function &getProjectGroups($session_ser,$group_id) {
276 continue_session($session_ser);
277 $grp =& group_get_object($group_id);
278 if (!$grp || !is_object($grp)) {
279 return new soap_fault ('','getProjectGroups','Could Not Get Group','Could Not Get Group');
280 } elseif ($grp->isError()) {
281 return new soap_fault ('','getProjectGroups',$grp->getErrorMessage(),$grp->getErrorMessage());
284 $atf = new ProjectGroupFactory($grp);
285 if (!$atf || !is_object($atf)) {
286 return new soap_fault ('','getProjectGroups','Could Not Get ProjectGroupFactory','Could Not Get ProjectGroupFactory');
287 } elseif ($atf->isError()) {
288 return new soap_fault ('','getProjectGroups',$atf->getErrorMessage(),$atf->getErrorMessage());
290 return projectgroups_to_soap($atf->getProjectGroups());
294 // convert array of artifact types to soap data structure
296 function projectgroups_to_soap($at_arr) {
297 for ($i=0; $i<count($at_arr); $i++) {
298 if ($at_arr[$i]->isError()) {
302 'group_project_id'=>$at_arr->data_array['group_project_id'],
303 'group_id'=>$at_arr->data_array['group_id'],
304 'name'=>$at_arr->data_array['name'],
305 'description'=>$at_arr->data_array['description'],
306 'is_public'=>$at_arr->data_array['is_public'],
307 'send_all_posts_to'=>$at_arr->data_array['send_all_posts_to']
317 function &addProjectTask($session_ser,$group_id,$group_project_id,$summary,$details,$priority,
318 $hours,$start_date,$end_date,$category_id,$percent_complete,$assigned_arr,$depend_arr) {
319 continue_session($session_ser);
320 $grp =& group_get_object($group_id);
321 if (!$grp || !is_object($grp)) {
322 return new soap_fault ('','addProjectTask','Could Not Get Group','Could Not Get Group');
323 } elseif ($grp->isError()) {
324 return new soap_fault ('','addProjectTask',$grp->getErrorMessage(),$grp->getErrorMessage());
327 $at = new ProjectGroup($grp,$group_project_id);
328 if (!$at || !is_object($at)) {
329 return new soap_fault ('','addProjectTask','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
330 } elseif ($at->isError()) {
331 return new soap_fault ('','addProjectTask',$at->getErrorMessage(),$at->getErrorMessage());
334 $a = new ProjectTask($at);
335 if (!$a || !is_object($a)) {
336 return new soap_fault ('','addProjectTask','Could Not Get ProjectTask','Could Not Get ProjectTask');
337 } elseif ($a->isError()) {
338 return new soap_fault ('','addProjectTask','$a->getErrorMessage()',$a->getErrorMessage());
341 if (!$a->create($summary,$details,$priority,$hours,$start_date,$end_date,
342 $category_id,$percent_complete,&$assigned_arr,&$depend_arr)) {
343 return new soap_fault ('','addProjectTask',$a->getErrorMessage(),$a->getErrorMessage());
350 // Update ProjectTask
352 function &updateProjectTask($session_ser,$group_id,$group_project_id,$project_task_id,
353 $summary,$details,$priority,$hours,$start_date,$end_date,$status_id,$category_id,
354 $percent_complete,&$assigned_arr,&$depend_arr,$new_group_project_id) {
355 continue_session($session_ser);
356 $grp =& group_get_object($group_id);
357 if (!$grp || !is_object($grp)) {
358 return new soap_fault ('','updateProjectTask','Could Not Get Group','Could Not Get Group');
359 } elseif ($grp->isError()) {
360 return new soap_fault ('','updateProjectTask',$grp->getErrorMessage(),$grp->getErrorMessage());
363 $at = new ProjectGroup($grp,$group_project_id);
364 if (!$at || !is_object($at)) {
365 return new soap_fault ('','updateProjectTask','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
366 } elseif ($at->isError()) {
367 return new soap_fault ('','updateProjectTask',$at->getErrorMessage(),$at->getErrorMessage());
370 $a = new ProjectTask($at,$project_task_id);
371 if (!$a || !is_object($a)) {
372 return new soap_fault ('','updateProjectTask','Could Not Get ProjectTask','Could Not Get ProjectTask');
373 } elseif ($a->isError()) {
374 return new soap_fault ('','updateProjectTask',$a->getErrorMessage(),$a->getErrorMessage());
377 if (!$a->update($summary,$details,$priority,$hours,$start_date,$end_date,$status_id,$category_id,
378 $percent_complete,&$assigned_arr,&$depend_arr,$new_group_project_id)) {
379 return new soap_fault ('','updateProjectTask',$a->getErrorMessage(),$a->getErrorMessage());
386 // getProjectTaskCategories
388 function &getProjectTaskCategories($session_ser,$group_id,$group_project_id) {
389 continue_session($session_ser);
390 $grp =& group_get_object($group_id);
391 if (!$grp || !is_object($grp)) {
392 return new soap_fault ('','getProjectTaskCategories','Could Not Get Group','Could Not Get Group');
393 } elseif ($grp->isError()) {
394 return new soap_fault ('','getProjectTaskCategories',$grp->getErrorMessage(),$grp->getErrorMessage());
397 $at = new ProjectGroup($grp,$group_project_id);
398 if (!$at || !is_object($at)) {
399 return new soap_fault ('','getProjectTaskCategories','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
400 } elseif ($at->isError()) {
401 return new soap_fault ('','getProjectTaskCategories',$at->getErrorMessage(),$at->getErrorMessage());
404 return projectcategories_to_soap($at->getCategoryObjects());
408 // convert array of artifact categories to soap data structure
410 function projectcategories_to_soap($at_arr) {
411 for ($i=0; $i<count($at_arr); $i++) {
412 if ($at_arr[$i]->isError()) {
416 'id'=>$at_arr->data_array['id'],
417 'group_project_id'=>$at_arr->data_array['group_project_id'],
418 'category_name'=>$at_arr->data_array['category_name']
426 // getProjectTechnicians
428 function &getProjectTechnicians($session_ser,$group_id,$group_project_id) {
429 continue_session($session_ser);
430 $grp =& group_get_object($group_id);
431 if (!$grp || !is_object($grp)) {
432 return new soap_fault ('','getProjectTechnicians','Could Not Get Group','Could Not Get Group');
433 } elseif ($grp->isError()) {
434 return new soap_fault ('','getProjectTechnicians',$grp->getErrorMessage(),$grp->getErrorMessage());
437 $at = new ProjectGroup($grp,$group_project_id);
438 if (!$at || !is_object($at)) {
439 return new soap_fault ('','getProjectTechnicians','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
440 } elseif ($at->isError()) {
441 return new soap_fault ('','getProjectTechnicians',$at->getErrorMessage(),$at->getErrorMessage());
444 return users_to_soap($at->getTechnicianObjects());
447 function &getProjectTasks($session_ser,$group_id,$group_project_id,$assigned_to,$status,$category,$group) {
448 continue_session($session_ser);
449 $grp =& group_get_object($group_id);
450 if (!$grp || !is_object($grp)) {
451 return new soap_fault ('','getProjectTasks','Could Not Get Group','Could Not Get Group');
452 } elseif ($grp->isError()) {
453 return new soap_fault ('','getProjectTasks',$grp->getErrorMessage(),$grp->getErrorMessage());
456 $at = new ProjectGroup($grp,$group_project_id);
457 if (!$at || !is_object($at)) {
458 return new soap_fault ('','getProjectTasks','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
459 } elseif ($at->isError()) {
460 return new soap_fault ('','getProjectTasks',$at->getErrorMessage(),$at->getErrorMessage());
463 $af = new ProjectTaskFactory($at);
464 if (!$af || !is_object($af)) {
465 return new soap_fault ('','getProjectTasks','Could Not Get ProjectTaskFactory','Could Not Get ProjectTaskFactory');
466 } elseif ($af->isError()) {
467 return new soap_fault ('','getProjectTasks',$af->getErrorMessage(),$af->getErrorMessage());
470 $af->setup(0,0,0,0,$assigned_to,$status,$category,$group);
471 return projecttasks_to_soap($af->getProjectTasks());
475 // convert array of projecttasks to soap data structure
477 function projecttasks_to_soap($at_arr) {
478 for ($i=0; $i<count($at_arr); $i++) {
479 if ($at_arr[$i]->isError()) {
483 'project_task_id'=>$at_arr[$i]->data_array['project_task_id'],
484 'group_project_id'=>$at_arr[$i]->data_array['group_project_id'],
485 'summary'=>$at_arr[$i]->data_array['summary'],
486 'details'=>$at_arr[$i]->data_array['details'],
487 'percent_complete'=>$at_arr[$i]->data_array['percent_complete'],
488 'priority'=>$at_arr[$i]->data_array['priority'],
489 'hours'=>$at_arr[$i]->data_array['hours'],
490 'start_date'=>$at_arr[$i]->data_array['start_date'],
491 'end_date'=>$at_arr[$i]->data_array['end_date'],
492 'status_id'=>$at_arr[$i]->data_array['status_id'],
493 'category_id'=>$at_arr[$i]->data_array['category_id'],
494 'is_dependent_on_task_id'=>$at_arr[$i]->getDependentOn(),
495 'assigned_to'=>$at_arr[$i]->$at_arr[$i]->getAssignedTo()
503 // getProjectMessages
505 function &getProjectMessages($session_ser,$group_id,$group_project_id,$project_task_id) {
506 continue_session($session_ser);
507 $grp =& group_get_object($group_id);
508 if (!$grp || !is_object($grp)) {
509 return new soap_fault ('','getProjectMessages','Could Not Get Group','Could Not Get Group');
510 } elseif ($grp->isError()) {
511 return new soap_fault ('','getProjectMessages',$grp->getErrorMessage(),$grp->getErrorMessage());
514 $at = new ProjectGroup($grp,$group_project_id);
515 if (!$at || !is_object($at)) {
516 return new soap_fault ('','getProjectMessages','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
517 } elseif ($at->isError()) {
518 return new soap_fault ('','getProjectMessages',$at->getErrorMessage(),$at->getErrorMessage());
521 $a = new ProjectTask($at,$project_task_id);
522 if (!$a || !is_object($a)) {
523 return new soap_fault ('','getProjectMessages','Could Not Get ProjectTask','Could Not Get ProjectTask');
524 } elseif ($a->isError()) {
525 return new soap_fault ('','getProjectMessages',$a->getErrorMessage(),$a->getErrorMessage());
527 return projectmessages_to_soap($a->getMessageObjects());
531 // convert array of project messages to soap data structure
533 function projectmessages_to_soap($at_arr) {
534 for ($i=0; $i<count($at_arr); $i++) {
535 if ($at_arr[$i]->isError()) {
539 'project_message_id'=>$at_arr->data_array['project_message_id'],
540 'project_task_id'=>$at_arr->data_array['project_task_id'],
541 'body'=>$at_arr->data_array['body'],
542 'postdate'=>$at_arr->data_array['postdate'],
543 'posted_by'=>$at_arr->data_array['posted_by']
553 function &addProjectMessage($session_ser,$group_id,$group_project_id,$project_task_id,$body) {
554 continue_session($session_ser);
555 $grp =& group_get_object($group_id);
556 if (!$grp || !is_object($grp)) {
557 return new soap_fault ('','addProjectMessage','Could Not Get Group','Could Not Get Group');
558 } elseif ($grp->isError()) {
559 return new soap_fault ('','addProjectMessage',$grp->getErrorMessage(),$grp->getErrorMessage());
562 $at = new ProjectGroup($grp,$group_project_id);
563 if (!$at || !is_object($at)) {
564 return new soap_fault ('','addProjectMessage','Could Not Get ProjectGroup','Could Not Get ProjectGroup');
565 } elseif ($at->isError()) {
566 return new soap_fault ('','addProjectMessage',$at->getErrorMessage(),$at->getErrorMessage());
569 $a = new ProjectTask($at,$project_task_id);
570 if (!$a || !is_object($a)) {
571 return new soap_fault ('','addProjectMessage','Could Not Get ProjectTask','Could Not Get ProjectTask');
572 } elseif ($a->isError()) {
573 return new soap_fault ('','addProjectMessage',$a->getErrorMessage(),$a->getErrorMessage());
576 $am = new ProjectMessage($a);
577 if (!$am || !is_object($am)) {
578 return new soap_fault ('','addProjectMessage','Could Not Get ProjectMessage','Could Not Get ProjectMessage');
579 } elseif ($am->isError()) {
580 return new soap_fault ('','addProjectMessage',$am->getErrorMessage(),$am->getErrorMessage());
583 if (!$am->create($body)) {
584 return new soap_fault ('','addProjectMessage',$am->getErrorMessage(),$am->getErrorMessage());