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/Error.class.php';
25 require_once $gfcommon.'include/User.class.php';
27 // Add The definition of a user object
28 $server->wsdl->addComplexType(
35 'user_id' => array('name'=>'user_id', 'type' => 'xsd:int'),
36 'user_name' => array('name'=>'user_name', 'type' => 'xsd:string'),
37 'title' => array('name'=>'title', 'type' => 'xsd:string'),
38 'firstname' => array('name'=>'firstname', 'type' => 'xsd:string'),
39 'lastname' => array('name'=>'lastname', 'type' => 'xsd:string'),
40 'address' => array('name'=>'address', 'type' => 'xsd:string'),
41 'address2' => array('name'=>'address2', 'type' => 'xsd:string'),
42 'phone' => array('name'=>'phone', 'type' => 'xsd:string'),
43 'fax' => array('name'=>'fax', 'type' => 'xsd:string'),
44 'status' => array('name'=>'status', 'type' => 'xsd:string'),
45 'timezone' => array('name'=>'timezone', 'type' => 'xsd:string'),
46 'country_code' => array('name'=>'country_code', 'type' => 'xsd:string'),
47 'add_date' => array('name'=>'add_date', 'type' => 'xsd:int'),
48 'language_id' => array('name'=>'language_id', 'type' => 'xsd:int')
52 $server->wsdl->addComplexType(
59 array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:User[]')),
65 array('session_ser'=>'string','user_ids'=>'tns:ArrayOfint'),
66 array('userResponse'=>'tns:ArrayOfUser'),
68 $uri.'#getUsers','rpc','encoded'
71 //getUsersByName (unix_name array)
74 array('session_ser'=>'string','user_ids'=>'tns:ArrayOfstring'),
75 array('userResponse'=>'tns:ArrayOfUser'),
77 $uri.'#getUsersByName','rpc','encoded'
80 //addUser (unix_name,firstname,lastname,password1,password2,email,
81 //mail_site,mail_va,language_id,timezone,jabber_address,jabber_only,
82 //theme_id,unix_box='shell',address='',address2='',phone='',fax='',
83 //title='',ccode='US',send_mail)
86 array('unix_name'=>'xsd:string','firstname'=>'xsd:string',
87 'lastname'=>'xsd:string','password1'=>'xsd:string',
88 'password2'=>'xsd:string','email'=>'xsd:string',
89 'mail_site'=>'xsd:string','mail_va'=>'xsd:string',
90 'language_id'=>'xsd:int','timezone'=>'xsd:string',
91 'jabber_address'=>'xsd:string','jabber_only'=>'xsd:int',
92 'theme_id'=>'xsd:int','unix_box'=>'xsd:string',
93 'address'=>'xsd:string','address2'=>'xsd:string',
94 'phone'=>'xsd:string','fax'=>'xsd:string',
95 'title'=>'xsd:string','ccode'=>'xsd:string'),
96 array('addUserResonse'=>'xsd:int'),
98 $uri.'#addUser','rpc','encoded'
101 //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)
104 array('session_ser'=>'xsd:string',
105 'user_id'=>'xsd:string',
106 'firstname'=>'xsd:string',
107 'lastname'=>'xsd:string',
108 'language_id'=>'xsd:int',
109 'timezone'=>'xsd:string',
110 'mail_site'=>'xsd:string',
111 'mail_va'=>'xsd:string',
112 'use_ratings'=>'xsd:string',
113 'jabber_address'=>'xsd:string',
114 'jabber_only'=>'xsd:int',
115 'theme_id'=>'xsd:int',
116 'address'=>'xsd:string',
117 'address2'=>'xsd:string',
118 'phone'=>'xsd:string',
120 'title'=>'xsd:string',
121 'ccode'=>'xsd:string'),
122 array('updateUserResonse'=>'xsd:int'),
124 $uri.'#updateUser','rpc','encoded'
127 //deleteUser (session_ser,user_id)
130 array('session_ser'=>'xsd:string','user_id'=>'xsd:string'),
131 array('deleteUserResonse'=>'xsd:boolean'),
133 $uri.'#deleteUser','rpc','encoded'
136 //changeStatus (session_ser,user_id,status)
139 array('session_ser'=>'xsd:string',
140 'user_id'=>'xsd:string',
141 'status'=>'xsd:string'),
142 array('changeStatusResonse'=>'xsd:boolean'),
144 $uri.'#changeStatus','rpc','encoded'
147 //changePassword (session_ser,user_id,password)
150 array('session_ser'=>'xsd:string',
151 'user_id'=>'xsd:string',
152 'password'=>'xsd:string'),
153 array('changePasswordResonse'=>'xsd:boolean'),
155 $uri.'#changePassword','rpc','encoded'
158 //getGroups (id array)
161 array('session_ser'=>'string','user_id'=>'xsd:int'),
162 array('groupResponse'=>'tns:ArrayOfGroup'),
164 $uri.'#userGetGroups','rpc','encoded'
168 //get user objects for array of user_ids
169 function &getUsers($session_ser,$user_ids) {
170 continue_session($session_ser);
171 $usrs =& user_get_objects($user_ids);
173 return new soap_fault ('3001','user','Could Not Get Users By Id','Could Not Get Users By Id');
176 return users_to_soap($usrs);
179 //get user objects for array of unix_names
180 function getUsersByName($session_ser,$user_names) {
181 continue_session($session_ser);
182 $usrs =& user_get_objects_by_name($user_names);
184 return new soap_fault ('3002','user','Could Not Get Users By Name','Could Not Get Users By Name');
187 return users_to_soap($usrs);
191 function addUser($unix_name,$firstname,$lastname,$password1,$password2,$email,
192 $mail_site,$mail_va,$language_id,$timezone,$jabber_address,$jabber_only,$theme_id,$unix_box,$address,$address2,$phone,$fax,$title,$ccode){
193 $new_user = new GFUser();
195 $register = $new_user->create($unix_name,$firstname,$lastname,$password1,$password2,$email,$mail_site,$mail_va,$language_id,$timezone,$jabber_address,$jabber_only,$theme_id,'',$address,$address2,$phone,$fax,$title,$ccode);
198 return new soap_fault ('3004','user','Could Not Add A New User','Could Not Add A New User');
201 return $new_user->getID();
205 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){
206 continue_session($session_ser);
207 $user =& user_get_object($user_id);
208 if (!$user || !is_object($user)) {
209 return new soap_fault ('updateUser','Could Not Get User','Could Not Get User');
212 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)){
213 return new soap_fault ('updateUser',$user->getErrorMessage(),$user->getErrorMessage());
215 return $user->getID();
220 function deleteUser ($session_ser,$user_id){
221 continue_session($session_ser);
222 $user =& user_get_object($user_id);
223 if (!$user || !is_object($user)) {
224 return new soap_fault ('deleteUser','Could Not Get User','Could Not Get User');
225 }elseif ($user->isError()){
226 return new soap_fault ('deleteUser',$user->getErrorMessage(),$user->getErrorMessage());
229 if (!$user->delete(true)){
230 return new soap_fault ('deleteUser',$user->getErrorMessage(),$user->getErrorMessage());
236 //change status user object
237 function changeStatus ($session_ser,$user_id,$status){
238 continue_session($session_ser);
239 $user =& user_get_object($user_id);
240 if (!$user || !is_object($user)) {
241 return new soap_fault ('changeStatus','Could Not Get User','Could Not Get User');
242 }elseif ($user->isError()){
243 return new soap_fault ('changeStatus',$user->getErrorMessage(),$user->getErrorMessage());
246 if (!$user->setStatus($status)){
247 return new soap_fault ('changeStatus',$user->getErrorMessage(),$user->getErrorMessage());
253 //change password user object
254 function changePassword ($session_ser,$user_id,$password){
255 continue_session($session_ser);
256 $user =& user_get_object($user_id);
257 if (!$user || !is_object($user)) {
258 return new soap_fault ('changePassword','Could Not Get User','Could Not Get User');
259 }elseif ($user->isError()){
260 return new soap_fault ('changePassword',$user->getErrorMessage(),$user->getErrorMessage());
263 if (!$user->setPasswd($password)){
264 return new soap_fault ('changePassword',$user->getErrorMessage(),$user->getErrorMessage());
270 //get groups for user_id
271 function &userGetGroups($session_ser,$user_id) {
272 continue_session($session_ser);
273 $user =& user_get_object($user_id);
275 return new soap_fault ('3003','user','Could Not Get Users Projects','Could Not Get Users Projects');
277 return groups_to_soap($user->getGroups());
281 Converts an array of User objects to soap data
283 function &users_to_soap($usrs) {
285 for ($i=0; $i<count($usrs); $i++) {
286 if ($usrs[$i]->isError()) {
287 return new soap_fault ('','User to soap',$usrs[$i]->getErrorMessage(),$usrs[$i]->getErrorMessage());
288 //skip it if it had an error
290 //build an array of just the fields we want
292 'user_id'=>$usrs[$i]->data_array['user_id'],
293 'user_name'=>$usrs[$i]->data_array['user_name'],
294 'title'=>$usrs[$i]->data_array['title'],
295 'firstname'=>$usrs[$i]->data_array['firstname'],
296 'lastname'=>$usrs[$i]->data_array['lastname'],
297 'address'=>$usrs[$i]->data_array['address'],
298 'address2'=>$usrs[$i]->data_array['address2'],
299 'phone'=>$usrs[$i]->data_array['phone'],
300 'fax'=>$usrs[$i]->data_array['fax'],
301 'status'=>$usrs[$i]->data_array['status'],
302 'timezone'=>$usrs[$i]->data_array['timezone'],
303 'country_code'=>$usrs[$i]->data_array['ccode'],
304 'add_date'=>$usrs[$i]->data_array['add_date'],
305 'language_id'=>$usrs[$i]->data_array['language']