3 * SOAP User Include - this file contains wrapper functions for the SOAP interface
5 * Copyright 2004 (c) GForge, LLC
8 * This file is part of FusionForge. FusionForge is free software;
9 * you can redistribute it and/or modify it under the terms of the
10 * GNU General Public License as published by the Free Software
11 * Foundation; either version 2 of the Licence, or (at your option)
14 * FusionForge is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License along
20 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 require_once $gfcommon.'include/FFError.class.php';
25 require_once $gfcommon.'include/User.class.php';
26 require_once $gfcommon.'include/Role.class.php';
28 // Add The definition of a user object
29 $server->wsdl->addComplexType(
36 'user_id' => array('name'=>'user_id', 'type' => 'xsd:int'),
37 'user_name' => array('name'=>'user_name', 'type' => 'xsd:string'),
38 'title' => array('name'=>'title', 'type' => 'xsd:string'),
39 'firstname' => array('name'=>'firstname', 'type' => 'xsd:string'),
40 'lastname' => array('name'=>'lastname', 'type' => 'xsd:string'),
41 'address' => array('name'=>'address', 'type' => 'xsd:string'),
42 'address2' => array('name'=>'address2', 'type' => 'xsd:string'),
43 'phone' => array('name'=>'phone', 'type' => 'xsd:string'),
44 'fax' => array('name'=>'fax', 'type' => 'xsd:string'),
45 'status' => array('name'=>'status', 'type' => 'xsd:string'),
46 'timezone' => array('name'=>'timezone', 'type' => 'xsd:string'),
47 'country_code' => array('name'=>'country_code', 'type' => 'xsd:string'),
48 'add_date' => array('name'=>'add_date', 'type' => 'xsd:int'),
49 'language_id' => array('name'=>'language_id', 'type' => 'xsd:int')
53 $server->wsdl->addComplexType(
60 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:User[]')),
66 array('session_ser'=>'string','user_ids'=>'tns:ArrayOfint'),
67 array('userResponse'=>'tns:ArrayOfUser'),
69 $uri.'#getUsers','rpc','encoded'
75 array('session_ser'=>'string'),
76 array('userResponse'=>'tns:ArrayOfUser'),
78 $uri.'#getActiveUsers','rpc','encoded'
81 //[Yosu] getGroupUsers (session_ser, group_id)
84 array('session_ser'=>'xsd:string',
85 'group_id'=>'xsd:int'),
86 array('return'=>'tns:ArrayOfUser'),
88 $uri.'#getGroupUsers','rpc','encoded'
91 //getUsersByName (unix_name array)
94 array('session_ser'=>'string','user_ids'=>'tns:ArrayOfstring'),
95 array('userResponse'=>'tns:ArrayOfUser'),
97 $uri.'#getUsersByName','rpc','encoded'
100 //addUser (unix_name,firstname,lastname,password1,password2,email,
101 //mail_site,mail_va,language_id,timezone,dummy1,dummy2,
102 //theme_id,unix_box='shell',address='',address2='',phone='',fax='',
103 //title='',ccode='US',send_mail)
106 array('unix_name'=>'xsd:string','firstname'=>'xsd:string',
107 'lastname'=>'xsd:string','password1'=>'xsd:string',
108 'password2'=>'xsd:string','email'=>'xsd:string',
109 'mail_site'=>'xsd:string','mail_va'=>'xsd:string',
110 'language_id'=>'xsd:int','timezone'=>'xsd:string',
111 'jabber_address'=>'xsd:string','jabber_only'=>'xsd:int',
112 'theme_id'=>'xsd:int','unix_box'=>'xsd:string',
113 'address'=>'xsd:string','address2'=>'xsd:string',
114 'phone'=>'xsd:string','fax'=>'xsd:string',
115 'title'=>'xsd:string','ccode'=>'xsd:string'),
116 array('addUserResonse'=>'xsd:int'),
118 $uri.'#addUser','rpc','encoded'
121 //updateUser (session_ser,user_id,firstname,lastname,language_id,timezone,mail_site,mail_va,use_ratings,dummy1,dummy2,theme_id,address,address2,phone,fax,title,ccode)
124 array('session_ser'=>'xsd:string',
125 'user_id'=>'xsd:string',
126 'firstname'=>'xsd:string',
127 'lastname'=>'xsd:string',
128 'language_id'=>'xsd:int',
129 'timezone'=>'xsd:string',
130 'mail_site'=>'xsd:string',
131 'mail_va'=>'xsd:string',
132 'use_ratings'=>'xsd:string',
133 'jabber_address'=>'xsd:string',
134 'jabber_only'=>'xsd:int',
135 'theme_id'=>'xsd:int',
136 'address'=>'xsd:string',
137 'address2'=>'xsd:string',
138 'phone'=>'xsd:string',
140 'title'=>'xsd:string',
141 'ccode'=>'xsd:string'),
142 array('updateUserResonse'=>'xsd:int'),
144 $uri.'#updateUser','rpc','encoded'
147 //deleteUser (session_ser,user_id)
150 array('session_ser'=>'xsd:string','user_id'=>'xsd:string'),
151 array('deleteUserResonse'=>'xsd:boolean'),
153 $uri.'#deleteUser','rpc','encoded'
156 //changeStatus (session_ser,user_id,status)
159 array('session_ser'=>'xsd:string',
160 'user_id'=>'xsd:string',
161 'status'=>'xsd:string'),
162 array('changeStatusResonse'=>'xsd:boolean'),
164 $uri.'#changeStatus','rpc','encoded'
167 //changePassword (session_ser,user_id,password)
170 array('session_ser'=>'xsd:string',
171 'user_id'=>'xsd:string',
172 'password'=>'xsd:string'),
173 array('changePasswordResonse'=>'xsd:boolean'),
175 $uri.'#changePassword','rpc','encoded'
178 //getGroups (id array)
181 array('session_ser'=>'string','user_id'=>'xsd:int'),
182 array('groupResponse'=>'tns:ArrayOfGroup'),
184 $uri.'#userGetGroups','rpc','encoded'
187 //get user objects for array of user_ids
188 function &getUsers($session_ser,$user_ids) {
189 continue_session($session_ser);
190 $users = user_get_objects($user_ids);
192 return new soap_fault ('3001','user','Could Not Get Users By Id','Could Not Get Users By Id');
195 return users_to_soap($users);
198 //get active user objects
199 function getActiveUsers($session_ser) {
200 continue_session($session_ser);
201 $users = user_get_active_users();
203 return new soap_fault ('3001','getActiveUsers','Could Not Get Forge Users','Could Not Get Forge Users');
206 return users_to_soap($users);
209 //[Yosu] getGroupUsers (session_ser, group_id)
210 function getGroupUsers($session_ser, $group_id) {
211 continue_session($session_ser);
213 $group = group_get_object($group_id);
215 if (!$group || !is_object($group)) {
216 $errMsg = 'Could not get group: '.$group->getErrorMessage();
217 return new soap_fault ('3002','getGroupUsers',$errMsg,$errMsg);
218 } elseif ($group->isError()) {
219 $errMsg = 'Could not get group: '.$group->getErrorMessage();
220 return new soap_fault ('3002','getGroupUsers',$errMsg,$errMsg);
222 $members = $group->getUsers();
224 $errMsg = 'Could not get users';
225 return new soap_fault ('3002','getGroupUsers',$errMsg,$errMsg);
228 return users_to_soap($members);
231 //get user objects for array of unix_names
232 function getUsersByName($session_ser,$user_names) {
233 continue_session($session_ser);
234 $usrs = user_get_objects_by_name($user_names);
236 return new soap_fault ('3002','user','Could Not Get Users By Name','Could Not Get Users By Name');
239 return users_to_soap($usrs);
243 function addUser($unix_name,$firstname,$lastname,$password1,$password2,$email,
244 $mail_site,$mail_va,$language_id,$timezone,$jabber_address,$jabber_only,$theme_id,$unix_box,$address,$address2,$phone,$fax,$title,$ccode){
245 $new_user = new GFUser();
247 $register = $new_user->create($unix_name,$firstname,$lastname,$password1,$password2,$email,$mail_site,$mail_va,$language_id,$timezone,$jabber_address,$jabber_only,$theme_id,$unix_box,$address,$address2,$phone,$fax,$title,$ccode);
250 return new soap_fault ('3004','user','Could Not Add A New User','Could Not Add A New User');
253 return $new_user->getID();
257 function updateUser ($session_ser,$user_id,$firstname,$lastname,$language_id,$timezone,$mail_site,$mail_va,$use_ratings,$jabber_address,$jabber_only,$theme_id,$address,$address2,$phone,$fax,$title,$ccode){
258 continue_session($session_ser);
259 $user = user_get_object($user_id);
260 if (!$user || !is_object($user)) {
261 return new soap_fault ('updateUser','Could Not Get User','Could Not Get User');
264 if (!$user->update($firstname,$lastname,$language_id,$timezone,$mail_site,$mail_va,$use_ratings,$jabber_address,$jabber_only,$theme_id,$address,$address2,$phone,$fax,$title,$ccode)){
265 return new soap_fault ('updateUser',$user->getErrorMessage(),$user->getErrorMessage());
267 return $user->getID();
272 function deleteUser ($session_ser,$user_id){
273 continue_session($session_ser);
274 $user = user_get_object($user_id);
275 if (!$user || !is_object($user)) {
276 return new soap_fault ('deleteUser','Could Not Get User','Could Not Get User');
277 }elseif ($user->isError()){
278 return new soap_fault ('deleteUser',$user->getErrorMessage(),$user->getErrorMessage());
281 if (!$user->delete(true)){
282 return new soap_fault ('deleteUser',$user->getErrorMessage(),$user->getErrorMessage());
288 //change status user object
289 function changeStatus ($session_ser,$user_id,$status){
290 continue_session($session_ser);
291 $user = user_get_object($user_id);
292 if (!$user || !is_object($user)) {
293 return new soap_fault ('changeStatus','Could Not Get User','Could Not Get User');
294 }elseif ($user->isError()){
295 return new soap_fault ('changeStatus',$user->getErrorMessage(),$user->getErrorMessage());
298 if (!$user->setStatus($status)){
299 return new soap_fault ('changeStatus',$user->getErrorMessage(),$user->getErrorMessage());
305 //change password user object
306 function changePassword ($session_ser,$user_id,$password){
307 continue_session($session_ser);
308 $user = user_get_object($user_id);
309 if (!$user || !is_object($user)) {
310 return new soap_fault ('changePassword','Could Not Get User','Could Not Get User');
311 }elseif ($user->isError()){
312 return new soap_fault ('changePassword',$user->getErrorMessage(),$user->getErrorMessage());
315 if (!$user->setPasswd($password)){
316 return new soap_fault ('changePassword',$user->getErrorMessage(),$user->getErrorMessage());
322 //get groups for user_id
323 function &userGetGroups($session_ser,$user_id) {
324 continue_session($session_ser);
325 $user = user_get_object($user_id);
327 return new soap_fault ('3003','user','Could Not Get Users Projects','Could Not Get Users Projects');
329 return groups_to_soap($user->getGroups());
333 Converts an array of User objects to soap data
335 function &users_to_soap($users) {
337 for ($i=0; $i<count($users); $i++) {
338 if ($users[$i]->isError()) {
339 return new soap_fault ('','User to soap',$users[$i]->getErrorMessage(),$users[$i]->getErrorMessage());
340 //skip it if it had an error
342 //build an array of just the fields we want
344 'user_id'=>$users[$i]->data_array['user_id'],
345 'user_name'=>$users[$i]->data_array['user_name'],
346 'title'=>$users[$i]->data_array['title'],
347 'firstname'=>$users[$i]->data_array['firstname'],
348 'lastname'=>$users[$i]->data_array['lastname'],
349 'address'=>$users[$i]->data_array['address'],
350 'address2'=>$users[$i]->data_array['address2'],
351 'phone'=>$users[$i]->data_array['phone'],
352 'fax'=>$users[$i]->data_array['fax'],
353 'status'=>$users[$i]->data_array['status'],
354 'timezone'=>$users[$i]->data_array['timezone'],
355 'country_code'=>$users[$i]->data_array['ccode'],
356 'add_date'=>$users[$i]->data_array['add_date'],
357 'language_id'=>$users[$i]->data_array['language']