ILIAS  Release_3_10_x_branch Revision 61812
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilNusoapUserAdministrationAdapter.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
24 
34 include_once './webservice/soap/lib/nusoap.php';
35 include_once './webservice/soap/include/inc.soap_functions.php';
36 
38 {
39  /*
40  * @var object Nusoap-Server
41  */
42  var $server = null;
43 
44 
45  function ilNusoapUserAdministrationAdapter($a_use_wsdl = true)
46  {
47  define('SERVICE_NAME','ILIASSoapWebservice');
48  define('SERVICE_NAMESPACE','urn:ilUserAdministration');
49  define('SERVICE_STYLE','rpc');
50  define('SERVICE_USE','encoded');
51  global $debug; $debug = true;
52  $this->server =& new soap_server();
53  $this->server->decode_utf8 = false;
54  $this->server->class = "ilSoapFunctions";
55 
56  if($a_use_wsdl)
57  {
58  $this->__enableWSDL();
59  }
60 
61  $this->__registerMethods();
62 
63 
64  }
65 
66  function start()
67  {
68  global $HTTP_RAW_POST_DATA;
69 
70  $this->server->service($HTTP_RAW_POST_DATA);
71  exit();
72  }
73 
74  // PRIVATE
75  function __enableWSDL()
76  {
77  $this->server->configureWSDL(SERVICE_NAME,SERVICE_NAMESPACE);
78 
79  return true;
80  }
81 
82 
83  function __registerMethods()
84  {
85 
86  // Add useful complex types. E.g. array("a","b") or array(1,2)
87  $this->server->wsdl->addComplexType('intArray',
88  'complexType',
89  'array',
90  '',
91  'SOAP-ENC:Array',
92  array(),
93  array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:int[]')),
94  'xsd:int');
95 
96  $this->server->wsdl->addComplexType('stringArray',
97  'complexType',
98  'array',
99  '',
100  'SOAP-ENC:Array',
101  array(),
102  array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')),
103  'xsd:string');
104 
105  // It's not possible to register classes in nusoap
106 
107  // login()
108  $this->server->register('login',
109  array('client' => 'xsd:string',
110  'username' => 'xsd:string',
111  'password' => 'xsd:string'),
112  array('sid' => 'xsd:string'),
113  SERVICE_NAMESPACE,
114  SERVICE_NAMESPACE.'#login',
115  SERVICE_STYLE,
116  SERVICE_USE,
117  'ILIAS login function');
118 
119  // loginCAS()
120  $this->server->register('loginCAS',
121  array('client' => 'xsd:string',
122  'PT' => 'xsd:string',
123  'user' => 'xsd:string'),
124  array('sid' => 'xsd:string'),
125  SERVICE_NAMESPACE,
126  SERVICE_NAMESPACE.'#loginCAS',
127  SERVICE_STYLE,
128  SERVICE_USE,
129  'ILIAS login function via CAS');
130  // loginLDAP()
131  $this->server->register('loginLDAP',
132  array('client' => 'xsd:string',
133  'username' => 'xsd:string',
134  'password' => 'xsd:string'),
135  array('sid' => 'xsd:string'),
136  SERVICE_NAMESPACE,
137  SERVICE_NAMESPACE.'#login',
138  SERVICE_STYLE,
139  SERVICE_USE,
140  'ILIAS login function via LDAP');
141 
142 
143 
144  // logout()
145  $this->server->register('logout',
146  array('sid' => 'xsd:string'),
147  array('success' => 'xsd:boolean'),
148  SERVICE_NAMESPACE,
149  SERVICE_NAMESPACE.'#logout',
150  SERVICE_STYLE,
151  SERVICE_USE,
152  'ILIAS logout function');
153  // user_data definitions
154  $this->server->wsdl->addComplexType('ilUserData',
155  'complexType',
156  'struct',
157  'all',
158  '',
159  array('usr_id' => array('name' => 'usr_id','type' => 'xsd:int'),
160  'login' => array('name' => 'login', 'type' => 'xsd:string'),
161  'passwd' => array('name' => 'passwd', 'type' => 'xsd:string'),
162  'firstname' => array('name' => 'firstname', 'type' => 'xsd:string'),
163  'lastname' => array('name' => 'lastname', 'type' => 'xsd:string'),
164  'title' => array('name' => 'title', 'type' => 'xsd:string'),
165  'gender' => array('name' => 'gender', 'type' => 'xsd:string'),
166  'email' => array('name' => 'email', 'type' => 'xsd:string'),
167  'institution' => array('name' => 'institution', 'type' => 'xsd:string'),
168  'street' => array('name' => 'street', 'type' => 'xsd:string'),
169  'city' => array('name' => 'city', 'type' => 'xsd:string'),
170  'zipcode' => array('name' => 'zipcode', 'type' => 'xsd:string'),
171  'country' => array('name' => 'country', 'type' => 'xsd:string'),
172  'phone_office' => array('name' => 'phone_office', 'type' => 'xsd:string'),
173  'last_login' => array('name' => 'last_login', 'type' => 'xsd:string'),
174  'last_update' => array('name' => 'last_update', 'type' => 'xsd:string'),
175  'create_date' => array('name' => 'create_date', 'type' => 'xsd:string'),
176  'hobby' => array('name' => 'hobby', 'type' => 'xsd:string'),
177  'department' => array('name' => 'department', 'type' => 'xsd:string'),
178  'phone_home' => array('name' => 'phone_home', 'type' => 'xsd:string'),
179  'phone_mobile' => array('name' => 'phone_mobile', 'type' => 'xsd:string'),
180  'fax' => array('name' => 'fax', 'type' => 'xsd:string'),
181  'time_limit_owner' => array('name' => 'time_limit_owner', 'type' => 'xsd:int'),
182  'time_limit_unlimited' => array('name' => 'time_limit_unlimited', 'type' => 'xsd:int'),
183  'time_limit_from' => array('name' => 'time_limit_from', 'type' => 'xsd:int'),
184  'time_limit_until' => array('name' => 'time_limit_until', 'type' => 'xsd:int'),
185  'time_limit_message' => array('name' => 'time_limit_message', 'type' => 'xsd:int'),
186  'referral_comment' => array('name' => 'referral_comment', 'type' => 'xsd:string'),
187  'matriculation' => array('name' => 'matriculation', 'type' => 'xsd:string'),
188  'active' => array('name' => 'active', 'type' => 'xsd:int'),
189  'accepted_agreement' => array('name' => 'accepted_agreement','type' => 'xsd:boolean'),
190  'approve_date' => array('name' => 'approve_date', 'type' => 'xsd:string'),
191  'user_skin' => array('name' => 'user_skin', 'type' => 'xsd:string'),
192  'user_style' => array('name' => 'user_style', 'type' => 'xsd:string'),
193  'user_language' => array('name' => 'user_language', 'type' => 'xsd:string'),
194  'import_id' => array('name' => 'import_id', 'type' => 'xsd:string')
195  ));
196 
197 
198  // lookupUser()
199  $this->server->register('lookupUser',
200  array('sid' => 'xsd:string',
201  'user_name' => 'xsd:string'),
202  array('usr_id' => 'xsd:int'),
203  SERVICE_NAMESPACE,
204  SERVICE_NAMESPACE.'#lookupUser',
205  SERVICE_STYLE,
206  SERVICE_USE,
207  'ILIAS lookupUser(): check if username exists. Return usr_id or 0 if lookup fails.');
208 
209 
210  // getUser()
211  $this->server->register('getUser',
212  array('sid' => 'xsd:string',
213  'user_id' => 'xsd:int'),
214  array('user_data' => 'tns:ilUserData'),
215  SERVICE_NAMESPACE,
216  SERVICE_NAMESPACE.'#getUser',
217  SERVICE_STYLE,
218  SERVICE_USE,
219  'ILIAS getUser(): get complete set of user data.');
220  // updateUser()
221  $this->server->register('updateUser',
222  array('sid' => 'xsd:string',
223  'user_data' => 'tns:ilUserData'),
224  array('success' => 'xsd:boolean'),
225  SERVICE_NAMESPACE,
226  SERVICE_NAMESPACE.'#updateUser',
227  SERVICE_STYLE,
228  SERVICE_USE,
229  'ILIAS updateUser(). DEPRECATED: Use importUsers() for modifications of user data. Updates all user data. '.
230  'Use getUser(), then modify desired fields and finally start the updateUser() call.');
231  // Update password
232  $this->server->register('updatePassword',
233  array('sid' => 'xsd:string',
234  'user_id' => 'xsd:int',
235  'new_password' => 'xsd:string'),
236  array('success' => 'xsd:boolean'),
237  SERVICE_NAMESPACE,
238  SERVICE_NAMESPACE.'#updatePassword',
239  SERVICE_STYLE,
240  SERVICE_USE,
241  'ILIAS updatePassword(). Updates password of given user. Password must be MD5 hash');
242 
243 
244  // addUser()
245  $this->server->register('addUser',
246  array('sid' => 'xsd:string',
247  'user_data' => 'tns:ilUserData',
248  'global_role_id' => 'xsd:int'),
249  array('user_id' => 'xsd:int'),
250  SERVICE_NAMESPACE,
251  SERVICE_NAMESPACE.'#addUser',
252  SERVICE_STYLE,
253  SERVICE_USE,
254  'ILIAS addUser() user. DEPRECATED: Since it is not possible to add new user data fields '.
255  'without breaking the backward compatability, this method is deprecated. Please use importUser() instead. '.
256  'Add new ILIAS user. Requires complete or subset of user_data structure');
257 
258  // deleteUser()
259  $this->server->register('deleteUser',
260  array('sid' => 'xsd:string',
261  'user_id' => 'xsd:int'),
262  array('success' => 'xsd:boolean'),
263  SERVICE_NAMESPACE,
264  SERVICE_NAMESPACE.'#deleteUser',
265  SERVICE_STYLE,
266  SERVICE_USE,
267  'ILIAS deleteUser(). Deletes all user related data (Bookmarks, Mails ...)');
268 
269  // addCourse()
270  $this->server->register('addCourse',
271  array('sid' => 'xsd:string',
272  'target_id' => 'xsd:int',
273  'crs_xml' => 'xsd:string'),
274  array('course_id' => 'xsd:int'),
275  SERVICE_NAMESPACE,
276  SERVICE_NAMESPACE.'#addCourse',
277  SERVICE_STYLE,
278  SERVICE_USE,
279  'ILIAS addCourse(). Course import. See ilias_course_0_1.dtd for details about course xml structure');
280 
281  // deleteCourse()
282  $this->server->register('deleteCourse',
283  array('sid' => 'xsd:string',
284  'course_id' => 'xsd:int'),
285  array('success' => 'xsd:boolean'),
286  SERVICE_NAMESPACE,
287  SERVICE_NAMESPACE.'#deleteCourse',
288  SERVICE_STYLE,
289  SERVICE_USE,
290  'ILIAS deleteCourse(). Deletes a course. Delete courses are stored in "Trash" and can be undeleted in '.
291  ' the ILIAS administration. ');
292  // assignCourseMember()
293  $this->server->register('assignCourseMember',
294  array('sid' => 'xsd:string',
295  'course_id' => 'xsd:int',
296  'user_id' => 'xsd:int',
297  'type' => 'xsd:string'),
298  array('success' => 'xsd:boolean'),
299  SERVICE_NAMESPACE,
300  SERVICE_NAMESPACE.'#assignCourseMember',
301  SERVICE_STYLE,
302  SERVICE_USE,
303  'ILIAS assignCourseMember(). Assigns an user to an existing course. Type should be "Admin", "Tutor" or "Member"');
304 
305  // excludeCourseMember()
306  $this->server->register('excludeCourseMember',
307  array('sid' => 'xsd:string',
308  'course_id' => 'xsd:int',
309  'user_id' => 'xsd:int'),
310  array('success' => 'xsd:boolean'),
311  SERVICE_NAMESPACE,
312  SERVICE_NAMESPACE.'#excludeCourseMember',
313  SERVICE_STYLE,
314  SERVICE_USE,
315  'ILIAS excludeCourseMember(). Excludes an user from an existing course.');
316 
317  // isAssignedToCourse()
318  $this->server->register('isAssignedToCourse',
319  array('sid' => 'xsd:string',
320  'course_id' => 'xsd:int',
321  'user_id' => 'xsd:int'),
322  array('role' => 'xsd:int'),
323  SERVICE_NAMESPACE,
324  SERVICE_NAMESPACE.'#isAssignedToCourse',
325  SERVICE_STYLE,
326  SERVICE_USE,
327  'ILIAS isAssignedToCourse(). Checks whether an user is assigned to a given course. '.
328  'Returns 0 => not assigned, 1 => course admin, 2 => course member or 3 => course tutor');
329 
330  // getCourseXML($sid,$course_id)
331  $this->server->register('getCourseXML',
332  array('sid' => 'xsd:string',
333  'course_id' => 'xsd:int'),
334  array('xml' => 'xsd:string'),
335  SERVICE_NAMESPACE,
336  SERVICE_NAMESPACE.'#getCourseXML',
337  SERVICE_STYLE,
338  SERVICE_USE,
339  'ILIAS getCourseXML(). Get a xml description of a specific course.');
340 
341  // updateCourse($sid,$course_id,$xml)
342  $this->server->register('updateCourse',
343  array('sid' => 'xsd:string',
344  'course_id' => 'xsd:int',
345  'xml' => 'xsd:string'),
346  array('success' => 'xsd:boolean'),
347  SERVICE_NAMESPACE,
348  SERVICE_NAMESPACE.'#updateCourse',
349  SERVICE_STYLE,
350  SERVICE_USE,
351  'ILIAS updateCourse(). Update course settings, assigned members, tutors, administrators with a '.
352  'given xml description');
353 
354  // get obj_id by import id
355  $this->server->register('getObjIdByImportId',
356  array('sid' => 'xsd:string',
357  'import_id' => 'xsd:string'),
358  array('obj_id' => 'xsd:int'),
359  SERVICE_NAMESPACE,
360  SERVICE_NAMESPACE.'#getCourseIdByImportId',
361  SERVICE_STYLE,
362  SERVICE_USE,
363  'ILIAS getObjIdByImportId(). Get the obj_id of an ILIAS obj by a given import id.');
364 
365 
366  // get ref ids by import id
367  $this->server->register('getRefIdsByImportId',
368  array('sid' => 'xsd:string',
369  'import_id' => 'xsd:string'),
370  array('ref_ids' => 'tns:intArray'),
371  SERVICE_NAMESPACE,
372  SERVICE_NAMESPACE.'#getRefIdsByImportId',
373  SERVICE_STYLE,
374  SERVICE_USE,
375  'ILIAS getRefIdsByImportId(). Get all reference ids by a given import id.');
376 
377  // get obj_id by import id
378  $this->server->register('getRefIdsByObjId',
379  array('sid' => 'xsd:string',
380  'obj_id' => 'xsd:string'),
381  array('ref_ids' => 'tns:intArray'),
382  SERVICE_NAMESPACE,
383  SERVICE_NAMESPACE.'#getRefIdsByObjId',
384  SERVICE_STYLE,
385  SERVICE_USE,
386  'ILIAS getRefIdsByObjId(). Get all reference ids by a given object id.');
387 
388  // Object administration
389  $this->server->register('getObjectByReference',
390  array('sid' => 'xsd:string',
391  'reference_id' => 'xsd:int',
392  'user_id' => 'xsd:int'),
393  array('object_xml' => 'xsd:string'),
394  SERVICE_NAMESPACE,
395  SERVICE_NAMESPACE.'#getObjectByReference',
396  SERVICE_STYLE,
397  SERVICE_USE,
398  'ILIAS getObjectByReference(). Get XML-description of an ILIAS object. If a user id is given, '.
399  'this methods also checks the permissions of that user on the object.');
400 
401  $this->server->register('getObjectsByTitle',
402  array('sid' => 'xsd:string',
403  'title' => 'xsd:string',
404  'user_id' => 'xsd:int'),
405  array('object_xml' => 'xsd:string'),
406  SERVICE_NAMESPACE,
407  SERVICE_NAMESPACE.'#getObjectsByTitle',
408  SERVICE_STYLE,
409  SERVICE_USE,
410  'ILIAS getObjectsByTitle(). Get XML-description of an ILIAS object with given title. '.
411  'If a user id is given this method also checks the permissions of that user on the object.');
412 
413  $this->server->register('searchObjects',
414  array('sid' => 'xsd:string',
415  'types' => 'tns:stringArray',
416  'key' => 'xsd:string',
417  'combination' => 'xsd:string',
418  'user_id' => 'xsd:int'),
419  array('object_xml' => 'xsd:string'),
420  SERVICE_NAMESPACE,
421  SERVICE_NAMESPACE.'#searchObjects',
422  SERVICE_STYLE,
423  SERVICE_USE,
424  'ILIAS searchObjects(): Searches for objects. Key is within "title" or "description" '.
425  'Typical calls are searchObject($sid,array("lm","crs"),"\"this and that\"","and"); '.
426  ' If an optional user id is given, this methods also return the permissions for that user '.
427  'on the found objects');
428 
429  $this->server->register('getTreeChilds',
430  array('sid' => 'xsd:string',
431  'ref_id' => 'xsd:int',
432  'types' => 'tns:stringArray',
433  'user_id' => 'xsd:int'),
434  array('object_xml' => 'xsd:string'),
435  SERVICE_NAMESPACE,
436  SERVICE_NAMESPACE.'#getTreeChilds',
437  SERVICE_STYLE,
438  SERVICE_USE,
439  'ILIAS getTreeChilds(): Get all child objects of a given object.'.
440  'Choose array of types to filter the output. Choose empty type array to receive all object types');
441 
442  $this->server->register('getXMLTree',
443  array('sid' => 'xsd:string',
444  'ref_id' => 'xsd:int',
445  'types' => 'tns:stringArray',
446  'user_id' => 'xsd:int'),
447  array('object_xml' => 'xsd:string'),
448  SERVICE_NAMESPACE,
449  SERVICE_NAMESPACE.'#getXMLTree',
450  SERVICE_STYLE,
451  SERVICE_USE,
452  'ILIAS getXMLTree(): Returns a xml stream with the subtree objects.');
453 
454 
455 
456  $this->server->register('addObject',
457  array('sid' => 'xsd:string',
458  'target_id' => 'xsd:int',
459  'object_xml' => 'xsd:string'),
460  array('ref_id' => 'xsd:int'),
461  SERVICE_NAMESPACE,
462  SERVICE_NAMESPACE.'#addObject',
463  SERVICE_STYLE,
464  SERVICE_USE,
465  'ILIAS addObject. Create new object based on xml description under a given node '.
466  '("category,course,group or folder). Return created reference id of the new object.' );
467 
468  $this->server->register('updateObjects',
469  array('sid' => 'xsd:string',
470  'object_xml' => 'xsd:string'),
471  array('success' => 'xsd:boolean'),
472  SERVICE_NAMESPACE,
473  SERVICE_NAMESPACE.'#updateObjects',
474  SERVICE_STYLE,
475  SERVICE_USE,
476  'ILIAS updateObjects. Update object data (title,description,owner)');
477 
478  $this->server->register('addReference',
479  array('sid' => 'xsd:string',
480  'source_id' => 'xsd:int',
481  'target_id' => 'xsd:int'),
482  array('ref_id' => 'xsd:int'),
483  SERVICE_NAMESPACE,
484  SERVICE_NAMESPACE.'#addReference',
485  SERVICE_STYLE,
486  SERVICE_USE,
487  'ILIAS addReference. Create new link of given object to new object. Return the new reference id');
488 
489  $this->server->register('deleteObject',
490  array('sid' => 'xsd:string',
491  'reference_id' => 'xsd:int'),
492  array('success' => 'xsd:boolean'),
493  SERVICE_NAMESPACE,
494  SERVICE_NAMESPACE.'#deleteObject',
495  SERVICE_STYLE,
496  SERVICE_USE,
497  'ILIAS deleteObject. Stores object in trash. If multiple references exist, only the reference is deleted ');
498 
499 
500  $this->server->register('removeFromSystemByImportId',
501  array('sid' => 'xsd:string',
502  'import_id' => 'xsd:string'),
503  array('success' => 'xsd:boolean'),
504  SERVICE_NAMESPACE,
505  SERVICE_NAMESPACE.'#removeFromSystemByImportId',
506  SERVICE_STYLE,
507  SERVICE_USE,
508  'ILIAS removeFromSystemByImportId(). Removes an object identified by its import id permanently from the '.
509  'system. All data will be deleted. There will be no possibility to restore it from the trash. Do not use '.
510  'this function for deleting roles or users. Use deleteUser() or deleteRole() instead.');
511 
512  $this->server->register('addUserRoleEntry',
513  array('sid' => 'xsd:string',
514  'user_id' => 'xsd:int',
515  'role_id' => 'xsd:int'),
516  array('success' => 'xsd:boolean'),
517  SERVICE_NAMESPACE,
518  SERVICE_NAMESPACE.'#addUserRoleEntry',
519  SERVICE_STYLE,
520  SERVICE_USE,
521  'ILIAS addUserRoleEntry. Assign user to role.');
522 
523  $this->server->register('deleteUserRoleEntry',
524  array('sid' => 'xsd:string',
525  'user_id' => 'xsd:int',
526  'role_id' => 'xsd:int'),
527  array('success' => 'xsd:boolean'),
528  SERVICE_NAMESPACE,
529  SERVICE_NAMESPACE.'#deleteUserRoleEntry',
530  SERVICE_STYLE,
531  SERVICE_USE,
532  'ILIAS deleteUserRoleEntry. Deassign user from role.');
533 
534 
535  // Add complex type for operations e.g array(array('name' => 'read','ops_id' => 2),...)
536  $this->server->wsdl->addComplexType('ilOperation',
537  'complexType',
538  'struct',
539  'all',
540  '',
541  array('ops_id' => array('name' => 'ops_id',
542  'type' => 'xsd:int'),
543  'operation' => array('name' => 'operation',
544  'type' => 'xsd:string'),
545  'description' => array('name' => 'description',
546  'type' => 'xsd:string')));
547  // Now create an array of ilOperations
548  $this->server->wsdl->addComplexType('ilOperations',
549  'complexType',
550  'array',
551  '',
552  'SOAP-ENC:Array',
553  array(),
554  array(array('ref' => 'SOAP-ENC:arrayType',
555  'wsdl:arrayType' => 'tns:ilOperation[]')),
556  'tns:ilOperation');
557  $this->server->register('getOperations',
558  array('sid' => 'xsd:string'),
559  array('operations' => 'tns:ilOperations'),
560  SERVICE_NAMESPACE,
561  SERVICE_NAMESPACE.'#getOperations',
562  SERVICE_STYLE,
563  SERVICE_USE,
564  'ILIAS getOperations(): get complete set of RBAC operations.');
565 
566  $this->server->register('revokePermissions',
567  array('sid' => 'xsd:string',
568  'ref_id' => 'xsd:int',
569  'role_id' => 'xsd:int'),
570  array('success' => 'xsd:boolean'),
571  SERVICE_NAMESPACE,
572  SERVICE_NAMESPACE.'#revokePermissions',
573  SERVICE_STYLE,
574  SERVICE_USE,
575  'ILIAS revokePermissions(): Revoke all permissions for a specific role on an object.');
576 
577  $this->server->wsdl->addComplexType('ilOperationIds',
578  'complexType',
579  'array',
580  '',
581  'SOAP-ENC:Array',
582  array(),
583  array(array('ref' => 'SOAP-ENC:arrayType',
584  'wsdl:arrayType' => 'xsd:int[]')),
585  'xsd:int');
586 
587  $this->server->register('grantPermissions',
588  array('sid' => 'xsd:string',
589  'ref_id' => 'xsd:int',
590  'role_id' => 'xsd:int',
591  'operations' => 'tns:intArray'),
592  array('success' => 'xsd:boolean'),
593  SERVICE_NAMESPACE,
594  SERVICE_NAMESPACE.'#grantPermissions',
595  SERVICE_STYLE,
596  SERVICE_USE,
597  'ILIAS grantPermissions(): Grant permissions for a specific role on an object. '.
598  '(Substitutes existing permission settings)');
599 
600  $this->server->register('getLocalRoles',
601  array('sid' => 'xsd:string',
602  'ref_id' => 'xsd:int'),
603  array('role_xml' => 'xsd:string'),
604  SERVICE_NAMESPACE,
605  SERVICE_NAMESPACE.'#getLocalRoles',
606  SERVICE_STYLE,
607  SERVICE_USE,
608  'ILIAS getLocalRoles(): Get all local roles assigned to an specific object.');
609 
610  $this->server->register('getUserRoles',
611  array('sid' => 'xsd:string',
612  'user_id' => 'xsd:int'),
613  array('role_xml' => 'xsd:string'),
614  SERVICE_NAMESPACE,
615  SERVICE_NAMESPACE.'#getLocalRoles',
616  SERVICE_STYLE,
617  SERVICE_USE,
618  'ILIAS getUserRoles(): Get all local roles assigned to an specific user. ');
619 
620  $this->server->register('addRole',
621  array('sid' => 'xsd:string',
622  'target_id' => 'xsd:int',
623  'obj_xml' => 'xsd:string'),
624  array('role_ids' => 'tns:intArray'),
625  SERVICE_NAMESPACE,
626  SERVICE_NAMESPACE.'#addRole',
627  SERVICE_STYLE,
628  SERVICE_USE,
629  'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS '.
630  'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created.');
631 
632  $this->server->register('deleteRole',
633  array('sid' => 'xsd:string',
634  'role_id' => 'xsd:int'),
635  array('success' => 'xsd:boolean'),
636  SERVICE_NAMESPACE,
637  SERVICE_NAMESPACE.'#deleteRole',
638  SERVICE_STYLE,
639  SERVICE_USE,
640  'ILIAS deleteRole(): Deletes an role and all user assignments. Fails if it is the last role of an user');
641 
642  $this->server->register('addRoleFromTemplate',
643  array('sid' => 'xsd:string',
644  'target_id' => 'xsd:int',
645  'obj_xml' => 'xsd:string',
646  'role_template_id' => 'xsd:int'),
647  array('role_ids' => 'tns:intArray'),
648  SERVICE_NAMESPACE,
649  SERVICE_NAMESPACE.'#addRole',
650  SERVICE_STYLE,
651  SERVICE_USE,
652  'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS '.
653  'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created. '.
654  'In addition to addRole the template permissions will be copied from the given role template');
655 
656  $this->server->register('getObjectTreeOperations',
657  array('sid' => 'xsd:string',
658  'ref_id' => 'xsd:int',
659  'user_id' => 'xsd:int'),
660  array('operations' => 'tns:ilOperations'),
661  SERVICE_NAMESPACE,
662  SERVICE_NAMESPACE.'#getPermissionsForObject',
663  SERVICE_STYLE,
664  SERVICE_USE,
665  'ILIAS getObjectTreeOperations(): Get all granted permissions for all references of '.
666  'an object for a specific user. Returns array of granted operations or empty array');
667 
668  $this->server->register('addGroup',
669  array('sid' => 'xsd:string',
670  'target_id' => 'xsd:int',
671  'group_xml' => 'xsd:string'),
672  array('ref_id' => 'xsd:int'),
673  SERVICE_NAMESPACE,
674  SERVICE_NAMESPACE.'#addGroup',
675  SERVICE_STYLE,
676  SERVICE_USE,
677  'ILIAS addGroup(): Add grop according to valid group XML '.
678  '@See ilias_group_0_1.dtd');
679 
680  $this->server->register('groupExists',
681  array('sid' => 'xsd:string',
682  'title' => 'xsd:string'),
683  array('exists' => 'xsd:boolean'),
684  SERVICE_NAMESPACE,
685  SERVICE_NAMESPACE.'#groupExists',
686  SERVICE_STYLE,
687  SERVICE_USE,
688  'ILIAS addGroup(): Check if group with given name exists. ');
689 
690 
691  // getGroup
692  $this->server->register('getGroup',
693  array('sid' => 'xsd:string',
694  'ref_id' => 'xsd:int'),
695  array('group_xml' => 'xsd:string'),
696  SERVICE_NAMESPACE,
697  SERVICE_NAMESPACE.'#getGroup',
698  SERVICE_STYLE,
699  SERVICE_USE,
700  'ILIAS getGroup(): get xml description of grouip with given reference id.');
701 
702  // assignGroupMember()
703  $this->server->register('assignGroupMember',
704  array('sid' => 'xsd:string',
705  'group_id' => 'xsd:int',
706  'user_id' => 'xsd:int',
707  'type' => 'xsd:string'),
708  array('success' => 'xsd:boolean'),
709  SERVICE_NAMESPACE,
710  SERVICE_NAMESPACE.'#assignGroupMember',
711  SERVICE_STYLE,
712  SERVICE_USE,
713  'ILIAS assignGroupMember(). Assigns an user to an existing group. Type should be "Admin","Member"');
714 
715  // excludeGroupMember()
716  $this->server->register('excludeGroupMember',
717  array('sid' => 'xsd:string',
718  'group_id' => 'xsd:int',
719  'user_id' => 'xsd:int'),
720  array('success' => 'xsd:boolean'),
721  SERVICE_NAMESPACE,
722  SERVICE_NAMESPACE.'#excludeGroupMember',
723  SERVICE_STYLE,
724  SERVICE_USE,
725  'ILIAS excludeGroupMember(). Excludes an user from an existing group.');
726 
727  // isAssignedToGroup()
728  $this->server->register('isAssignedToGroup',
729  array('sid' => 'xsd:string',
730  'group_id' => 'xsd:int',
731  'user_id' => 'xsd:int'),
732  array('role' => 'xsd:int'),
733  SERVICE_NAMESPACE,
734  SERVICE_NAMESPACE.'#isAssignedToGroup',
735  SERVICE_STYLE,
736  SERVICE_USE,
737  'ILIAS isAssignedToGroup(). Checks whether an user is assigned to a given group. '.
738  'Returns 0 => not assigned, 1 => group admin, 2 => group member');
739 
740 
741 
742  // ILIAS util functions
743  $this->server->register('sendMail',
744  array('sid' => 'xsd:string',
745  'rcp_to' => 'xsd:string',
746  'rcp_cc' => 'xsd:string',
747  'rcp_bcc' => 'xsd:string',
748  'sender' => 'xsd:string',
749  'subject' => 'xsd:string',
750  'message' => 'xsd:string',
751  'attachments' => 'xsd:string'),
752  array('status' => 'xsd:boolean'),
753  SERVICE_NAMESPACE,
754  SERVICE_NAMESPACE.'#sendMail',
755  SERVICE_STYLE,
756  SERVICE_USE,
757  'ILIAS sendMail(): Send mime mails according to xml description. Only for internal usage '.
758  'Syntax, parameters may change in future releases');
759  // Clone functions
760  $this->server->register('ilClone',
761  array('sid' => 'xsd:string','copy_identifier' => 'xsd:int'),
762  array('new_ref_id' => 'xsd:int'),
763  SERVICE_NAMESPACE,
764  SERVICE_NAMESPACE.'#ilClone',
765  SERVICE_STYLE,
766  SERVICE_USE,
767  'ILIAS ilClone(): Only for internal usage.'.
768  'Syntax, parameters may change in future releases. ');
769 
770  $this->server->register('handleECSTasks',
771  array('sid' => 'xsd:string'),
772  array('success' => 'xsd:boolean'),
773  SERVICE_NAMESPACE,
774  SERVICE_NAMESPACE.'#handleECSTasks',
775  SERVICE_STYLE,
776  SERVICE_USE,
777  'ILIAS handleECSTasks(): Only for internal usage.'.
778  'Syntax, parameters may change in future releases. ');
779 
780  $this->server->register('ilCloneDependencies',
781  array('sid' => 'xsd:string','copy_identifier' => 'xsd:int'),
782  array('success' => 'xsd:boolean'),
783  SERVICE_NAMESPACE,
784  SERVICE_NAMESPACE.'#ilCloneDependencies',
785  SERVICE_STYLE,
786  SERVICE_USE,
787  'ILIAS ilCloneDependencies(): Only for internal usage.'.
788  'Syntax, parameters may change in future releases. ');
789 
790  $this->server->register('saveQuestionResult',
791  array('sid' => 'xsd:string',
792  'user_id' => 'xsd:int',
793  'test_id' => 'xsd:int',
794  'question_id' => 'xsd:int',
795  'pass' => 'xsd:int',
796  'solution' => 'tns:stringArray'),
797  array('status' => 'xsd:boolean'),
798  SERVICE_NAMESPACE,
799  SERVICE_NAMESPACE.'#saveQuestionResult',
800  SERVICE_STYLE,
801  SERVICE_USE,
802  'ILIAS saveQuesionResult: Typically called from an external assessment question to save the user input. DEPRECATED since ILIAS 3.9');
803 
804  $this->server->register('saveQuestion',
805  array('sid' => 'xsd:string',
806  'active_id' => 'xsd:long',
807  'question_id' => 'xsd:long',
808  'pass' => 'xsd:int',
809  'solution' => 'tns:stringArray'),
810  array('status' => 'xsd:boolean'),
811  SERVICE_NAMESPACE,
812  SERVICE_NAMESPACE.'#saveQuestion',
813  SERVICE_STYLE,
814  SERVICE_USE,
815  'ILIAS saveQuestion: Saves the result of a question in a given test pass for the active test user. The active user is identified by the active ID, which assigns a user to a test.');
816 
817  $this->server->register('getQuestionSolution',
818  array('sid' => 'xsd:string',
819  'active_id' => 'xsd:long',
820  'question_id' => 'xsd:int',
821  'pass' => 'xsd:int'),
822  array('solution' => 'tns:stringArray'),
823  SERVICE_NAMESPACE,
824  SERVICE_NAMESPACE.'#getQuestionSolution',
825  SERVICE_STYLE,
826  SERVICE_USE,
827  'ILIAS getQuestionSolution: Typically called from external assessment questions to retrieve the previous input of a user.');
828 
829  $this->server->register('getStructureObjects',
830  array('sid' => 'xsd:string',
831  'ref_id' => 'xsd:int'),
832  array('xml' => 'xsd:string'),
833  SERVICE_NAMESPACE,
834  SERVICE_NAMESPACE.'#getStructureObjects',
835  SERVICE_STYLE,
836  SERVICE_USE,
837  'ILIAS getStructureObjects: delivers structure of content objects like learning modules (chapters/pages) or glossary (terms)');
838 
839  // importUsers()
840  $this->server->register('importUsers',
841  array('sid' => 'xsd:string',
842  'folder_id' => 'xsd:int',
843  'usr_xml' => 'xsd:string',
844  'conflict_rule' => 'xsd:int',
845  'send_account_mail' => 'xsd:int'),
846  array('protocol' => 'xsd:string'),
847  SERVICE_NAMESPACE,
848  SERVICE_NAMESPACE.'#importUsers',
849  SERVICE_STYLE,
850  SERVICE_USE,
851  'ILIAS import users into folder id, which should be ref_id of folder or user folder (-1:System user folder, 0: checks access at user level, otherwise refid): conflict_rule: IL_FAIL_ON_CONFLICT = 1, IL_UPDATE_ON_CONFLICT = 2, IL_IGNORE_ON_CONFLICT = 3. The Return-Value is a protocol with the columns userid, login, action, message, following xmlresultset dtd. Send Account Mail = 0 deactivates sending a mail to each user, 1 activates it');
852 
853  $this->server->register('getRoles',
854  array('sid' => 'xsd:string',
855  'role_type' => 'xsd:string',
856  'id' => 'xsd:string'),
857  array('role_xml' => 'xsd:string'),
858  SERVICE_NAMESPACE,
859  SERVICE_NAMESPACE.'#getRoles',
860  SERVICE_STYLE,
861  SERVICE_USE,
862  'ILIAS getRoles():if id equals -1, get all roles specified by type (global|local|user|user_login|template or empty), if type is empty all roles with all types are delivered, if id > -1 and role_type <> user or user_login, delivers all roles which belong to a repository object with specified ref_id, if roletype is user a numeric id is interpreted as userid, if roletype is user_login it is interpreted as login,if roletype is template all role templates will be listed');
863 
864  $this->server->register('getUsersForContainer',
865  array('sid' => 'xsd:string',
866  'ref_id' => 'xsd:int',
867  'attach_roles' => 'xsd:int',
868  'active' => 'xsd:int'),
869  array('user_xml' => 'xsd:string'),
870  SERVICE_NAMESPACE,
871  SERVICE_NAMESPACE.'#getUsersForContainer',
872  SERVICE_STYLE,
873  SERVICE_USE,
874  'ILIAS getUsersForContainer(): get all users of a specific ref_id, which can be crs, group, category or user folder (value: -1). Choose if all roles of a user should be attached (1) or not (0). set active to -1 to get all, 0, to get inactive users only, 1 to get active users only');
875 
876  $this->server->register('getUsersForRole',
877  array('sid' => 'xsd:string',
878  'role_id' => 'xsd:int',
879  'attach_roles' => 'xsd:int',
880  'active' => 'xsd:int'),
881  array('user_xml' => 'xsd:string'),
882  SERVICE_NAMESPACE,
883  SERVICE_NAMESPACE.'#getUsersForRole',
884  SERVICE_STYLE,
885  SERVICE_USE,
886  'ILIAS getUsersForRole(): get all users of a role with specified id, specify attach_roles to 1, to attach all role assignmnents; specify active: 1, to import active only, 0: inactive only, -1: both');
887 
888  $this->server->register('searchUser',
889  array('sid' => 'xsd:string',
890  'key_fields' => 'tns:stringArray',
891  'query_operator' => 'xsd:string',
892  'key_values' => 'tns:stringArray',
893  'attach_roles' => 'xsd:int',
894  'active' => 'xsd:int'),
895 
896  array('user_xml' => 'xsd:string'),
897  SERVICE_NAMESPACE,
898  SERVICE_NAMESPACE.'#searchUsers',
899  SERVICE_STYLE,
900  SERVICE_USE,
901  'ILIAS searchUser(): get all users, which match a query, consisting of the keyfields, matched with values of the field values, concatenated with the logical query operator. Specify attach_roles to 1, to attach all role assignmnents; specify active: 1, to import active only, 0: inactive only, -1: both');
902 
903  // Mail Functions
904  // Check whether current user has new mail
905  $this->server->register('hasNewMail',
906  array('sid' => 'xsd:string'),
907  array('status' => 'xsd:boolean'),
908  SERVICE_NAMESPACE,
909  SERVICE_NAMESPACE.'#hasNewMail',
910  SERVICE_STYLE,
911  SERVICE_USE,
912  'ILIAS hasNewMail(): Checks whether the current authenticated user has a new mail.');
913 
914  $this->server->register('getNIC',
915  array('sid' => 'xsd:string'),
916  array('xmlresultset' => 'xsd:string'),
917  SERVICE_NAMESPACE,
918  SERVICE_NAMESPACE.'#getNIC',
919  SERVICE_STYLE,
920  SERVICE_USE,
921  'ILIAS getNIC(): DEPRECATED: use getClientInfoXML instead. was: return client information from current client as xml result set containing installation_id, installation_version, installation_url, installation_description, installation_language_default as columns');
922 
923  $this->server->register('getExerciseXML',
924  array('sid' => 'xsd:string', "ref_id" => 'xsd:int', "attachment_mode" => "xsd:int"),
925  array('exercisexml' => 'xsd:string'),
926  SERVICE_NAMESPACE,
927  SERVICE_NAMESPACE.'#getExerciseXML',
928  SERVICE_STYLE,
929  SERVICE_USE,
930  'ILIAS getExerciseXML(): returns xml description of exercise. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)');
931 
932  $this->server->register('addExercise',
933  array('sid' => 'xsd:string', "target_id" => 'xsd:int', "xml" => "xsd:string"),
934  array('refid' => 'xsd:int'),
935  SERVICE_NAMESPACE,
936  SERVICE_NAMESPACE.'#addExercise',
937  SERVICE_STYLE,
938  SERVICE_USE,
939  'ILIAS addExercise(): create exercise, put it into target (ref_id) and update exercise properties from xml (see ilias_exercise_3_8.dtd for details). Obj_id must not be set!');
940 
941  $this->server->register('updateExercise',
942  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
943  array('success' => 'xsd:boolean'),
944  SERVICE_NAMESPACE,
945  SERVICE_NAMESPACE.'#updateExercise',
946  SERVICE_STYLE,
947  SERVICE_USE,
948  'ILIAS updateExercise():update existing exercise, update exercise properties from xml (see ilias_exercise_3_8.dtd for details). obj_id in xml must match according obj id of refid.!');
949 
950  $this->server->register('getFileXML',
951  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'attachment_mode' => 'xsd:int'),
952  array('filexml' => 'xsd:string'),
953  SERVICE_NAMESPACE,
954  SERVICE_NAMESPACE.'#getFileXML',
955  SERVICE_STYLE,
956  SERVICE_USE,
957  'ILIAS getFileXML(): returns xml description of file. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)');
958 
959  $this->server->register('addFile',
960  array('sid' => 'xsd:string', 'target_id' => 'xsd:int', 'xml' => 'xsd:string'),
961  array('refid' => 'xsd:int'),
962  SERVICE_NAMESPACE,
963  SERVICE_NAMESPACE.'#addFile',
964  SERVICE_STYLE,
965  SERVICE_USE,
966  'ILIAS addFile(): create file, put it into target (ref_id) and update file properties from xml (see ilias_file_3_8.dtd for details). Obj_id must not be set!');
967 
968  $this->server->register('updateFile',
969  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
970  array('success' => 'xsd:boolean'),
971  SERVICE_NAMESPACE,
972  SERVICE_NAMESPACE.'#updateFile',
973  SERVICE_STYLE,
974  SERVICE_USE,
975  'ILIAS updateFile():update existing file, update file properties from xml (see ilias_file_3_8.dtd for details). obj_id in xml must match according obj id of refid.!');
976 
977 
978  $this->server->register('getUserXML',
979  array('sid' => 'xsd:string', 'user_ids' => 'tns:intArray', 'attach_roles' => 'xsd:int'),
980  array('xml' => 'xsd:string'),
981  SERVICE_NAMESPACE,
982  SERVICE_NAMESPACE.'#resolveUsers',
983  SERVICE_STYLE,
984  SERVICE_USE,
985  'ILIAS getUserXML(): get xml records for user ids, e.g. retrieved vom members of course xml. Returns user xml dtds. ids are numeric ids of user');
986 
987 
988  // get objs ids by ref id
989  $this->server->register('getObjIdsByRefIds',
990  array('sid' => 'xsd:string',
991  'ref_ids' => 'tns:intArray'),
992  array('obj_ids' => 'tns:intArray'),
993  SERVICE_NAMESPACE,
994  SERVICE_NAMESPACE.'#getRefIdsByImportId',
995  SERVICE_STYLE,
996  SERVICE_USE,
997  'ILIAS getObjIdsForRefIds: Returns a array of object ids which match the references id, given by a comma seperated string. Returns an array of ref ids, in the same order as object ids. Therefore, there might by duplicates');
998 
999  $this->server->register('updateGroup',
1000  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
1001  array('success' => 'xsd:boolean'),
1002  SERVICE_NAMESPACE,
1003  SERVICE_NAMESPACE.'#updateGroup',
1004  SERVICE_STYLE,
1005  SERVICE_USE,
1006  'ILIAS updateGroup(): update existing group using ref id and group xml (see DTD).');
1007 
1008 
1009 
1010  $this->server->register('getIMSManifestXML',
1011  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int'),
1012  array('xml' => 'xsd:string'),
1013  SERVICE_NAMESPACE,
1014  SERVICE_NAMESPACE.'#getIMSManifestXML',
1015  SERVICE_STYLE,
1016  SERVICE_USE,
1017  'ILIAS getIMSManifestXML(): returns xml of ims manifest file (scorm learning module) referred by refid');
1018 
1019 
1020  $this->server->register('copyObject',
1021  array('sid' => 'xsd:string', 'xml' => 'xsd:string'),
1022  array('xml' => 'xsd:int'),
1023  SERVICE_NAMESPACE,
1024  SERVICE_NAMESPACE.'#copyObject',
1025  SERVICE_STYLE,
1026  SERVICE_USE,
1027  'ILIAS copyObject(): returns reference of copy, if copy is created directly, or the ref id of the target if copy is in progress.');
1028 
1029  $this->server->register('moveObject',
1030  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'target_id' => 'xsd:int'),
1031  array('result' => 'xsd:boolean'),
1032  SERVICE_NAMESPACE,
1033  SERVICE_NAMESPACE.'#moveObject',
1034  SERVICE_STYLE,
1035  SERVICE_USE,
1036  'ILIAS moveObject(): returns true, if object with refid could be successfully moved to target id, other it raises an error.');
1037 
1038 
1039  $this->server->register ('getTestResults',
1040  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'sum_only' => 'xsd:boolean'),
1041  array('xml' => 'xsd:string'),
1042  SERVICE_NAMESPACE,
1043  SERVICE_NAMESPACE.'#getTestResults',
1044  SERVICE_STYLE,
1045  SERVICE_USE,
1046  'ILIAS getTestResults(): returns XMLResultSet with
1047  sum only = true: user_id, login, firstname, lastname, matriculation, maximum points, received points
1048  sum only = false: user_id, login, firstname, lastname, matriculation, question id, question title, question points, received points');
1049 
1050 
1051  $this->server->register ('getCoursesForUser',
1052  array('sid' => 'xsd:string', 'parameters' => 'xsd:string'),
1053  array('xml' => 'xsd:string'),
1054  SERVICE_NAMESPACE,
1055  SERVICE_NAMESPACE.'#getCoursesForUser',
1056  SERVICE_STYLE,
1057  SERVICE_USE,
1058  'ILIAS getTestResults(): returns XMLResultSet with columns ref_id, course xml. $parameters has to contain a column user_id and a column status. Status is a logical AND combined value of (MEMBER = 1, TUTOR = 2, ADMIN = 4, OWNER = 8) and determines which courses should be returned.');
1059 
1060  $this->server->register ('getGroupsForUser',
1061  array('sid' => 'xsd:string', 'parameters' => 'xsd:string'),
1062  array('xml' => 'xsd:string'),
1063  SERVICE_NAMESPACE,
1064  SERVICE_NAMESPACE.'#getGroupsForUser',
1065  SERVICE_STYLE,
1066  SERVICE_USE,
1067  'ILIAS getTestResults(): returns XMLResultSet with columns ref_id, group xml. $parameters has to contain a column user_id and a column status. Status is a logical AND combined value of (MEMBER = 1, TUTOR = 2, OWNER = 4) and determines which groups should be returned.');
1068 
1069  $this->server->register ('getPathForRefId',
1070  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int'),
1071  array('xml' => 'xsd:string'),
1072  SERVICE_NAMESPACE,
1073  SERVICE_NAMESPACE.'#getPathForRefId',
1074  SERVICE_STYLE,
1075  SERVICE_USE,
1076  'ILIAS getPathForRefId(): returns XMLResultSet with columns ref_id, type and title.');
1077 
1078  $this->server->register ('searchRoles',
1079  array('sid' => 'xsd:string', 'key' => 'xsd:string', 'combination' => 'xsd:string', 'role_type' => 'xsd:string'),
1080  array('xml' => 'xsd:string'),
1081  SERVICE_NAMESPACE,
1082  SERVICE_NAMESPACE.'#searchRoles',
1083  SERVICE_STYLE,
1084  SERVICE_USE,
1085  'ILIAS searchRoles(): returns XML following role dtd with search results for given role type and search terms.');
1086 
1087  $this->server->register ('getInstallationInfoXML',
1088  array(),
1089  array('xml' => 'xsd:string'),
1090  SERVICE_NAMESPACE,
1091  SERVICE_NAMESPACE.'#getInstallationInfoXML',
1092  SERVICE_STYLE,
1093  SERVICE_USE,
1094  'ILIAS getInstallationInfoXML(): returns XML following installation_info dtd');
1095 
1096  $this->server->register ('getClientInfoXML',
1097  array('clientid' => 'xsd:string'),
1098  array('xml' => 'xsd:string'),
1099  SERVICE_NAMESPACE,
1100  SERVICE_NAMESPACE.'#getClientInfoXML',
1101  SERVICE_STYLE,
1102  SERVICE_USE,
1103  'ILIAS getClientInfoXML(): returns XML following installation_info dtd, contains the client the data of given client id');
1104 
1105  return true;
1106 
1107  }
1108 
1109 }
1110 ?>