ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 
33 include_once './libs/composer/vendor/autoload.php';
35 
36 include_once './webservice/soap/lib/nusoap.php';
37 include_once './webservice/soap/include/inc.soap_functions.php';
38 require_once('./Services/WebServices/SOAP/classes/class.ilSoapHook.php');
39 require_once('./Services/Init/classes/class.ilInitialisation.php');
40 
42 {
43  /*
44  * @var object Nusoap-Server
45  */
46  public $server = null;
47 
48 
49  public function __construct($a_use_wsdl = true)
50  {
51  define('SERVICE_NAME', 'ILIASSoapWebservice');
52  define('SERVICE_NAMESPACE', 'urn:ilUserAdministration');
53  define('SERVICE_STYLE', 'rpc');
54  define('SERVICE_USE', 'encoded');
55  #global $debug; $debug = true;
56  $this->server = new soap_server();
57  $this->server->decode_utf8 = false;
58  $this->server->class = "ilSoapFunctions";
59 
60  if ($a_use_wsdl) {
61  $this->__enableWSDL();
62  }
63 
64  $this->__registerMethods();
65  }
66 
67  public function start()
68  {
69  global $HTTP_RAW_POST_DATA;
70 
71  $this->server->service($HTTP_RAW_POST_DATA);
72  exit();
73  }
74 
75  // PRIVATE
76  public function __enableWSDL()
77  {
78  $this->server->configureWSDL(SERVICE_NAME, SERVICE_NAMESPACE);
79 
80  return true;
81  }
82 
83 
84  public function __registerMethods()
85  {
86 
87  // Add useful complex types. E.g. array("a","b") or array(1,2)
88  $this->server->wsdl->addComplexType(
89  'intArray',
90  'complexType',
91  'array',
92  '',
93  'SOAP-ENC:Array',
94  array(),
95  array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:int[]')),
96  'xsd:int'
97  );
98 
99  $this->server->wsdl->addComplexType(
100  'stringArray',
101  'complexType',
102  'array',
103  '',
104  'SOAP-ENC:Array',
105  array(),
106  array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')),
107  'xsd:string'
108  );
109 
110  $this->server->wsdl->addComplexType(
111  'doubleArray',
112  'complexType',
113  'array',
114  '',
115  'SOAP-ENC:Array',
116  array(),
117  array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:double[]')),
118  'xsd:double'
119  );
120 
121  // It's not possible to register classes in nusoap
122 
123  // login()
124  $this->server->register(
125  'login',
126  array('client' => 'xsd:string',
127  'username' => 'xsd:string',
128  'password' => 'xsd:string'),
129  array('sid' => 'xsd:string'),
130  SERVICE_NAMESPACE,
131  SERVICE_NAMESPACE . '#login',
132  SERVICE_STYLE,
133  SERVICE_USE,
134  'ILIAS login function'
135  );
136 
137  // loginCAS()
138  $this->server->register(
139  'loginCAS',
140  array('client' => 'xsd:string',
141  'PT' => 'xsd:string',
142  'user' => 'xsd:string'),
143  array('sid' => 'xsd:string'),
144  SERVICE_NAMESPACE,
145  SERVICE_NAMESPACE . '#loginCAS',
146  SERVICE_STYLE,
147  SERVICE_USE,
148  'ILIAS login function via CAS'
149  );
150  // loginLDAP()
151  $this->server->register(
152  'loginLDAP',
153  array('client' => 'xsd:string',
154  'username' => 'xsd:string',
155  'password' => 'xsd:string'),
156  array('sid' => 'xsd:string'),
157  SERVICE_NAMESPACE,
158  SERVICE_NAMESPACE . '#login',
159  SERVICE_STYLE,
160  SERVICE_USE,
161  'ILIAS login function via LDAP'
162  );
163 
164  // loginStudipUser()
165  $this->server->register(
166  'loginStudipUser',
167  array('sid' => 'xsd:string',
168  'user_id' => 'xsd:int'),
169  array('sid' => 'xsd:string'),
170  SERVICE_NAMESPACE,
171  SERVICE_NAMESPACE . '#loginStudipUser',
172  SERVICE_STYLE,
173  SERVICE_USE,
174  'ILIAS login function for Stud.IP-Connection. DEPRECATED: this method will be removed in ILIAS 5.3.'
175  );
176 
177  // logout()
178  $this->server->register(
179  'logout',
180  array('sid' => 'xsd:string'),
181  array('success' => 'xsd:boolean'),
182  SERVICE_NAMESPACE,
183  SERVICE_NAMESPACE . '#logout',
184  SERVICE_STYLE,
185  SERVICE_USE,
186  'ILIAS logout function'
187  );
188  // user_data definitions
189  $this->server->wsdl->addComplexType(
190  'ilUserData',
191  'complexType',
192  'struct',
193  'all',
194  '',
195  array('usr_id' => array('name' => 'usr_id','type' => 'xsd:int'),
196  'login' => array('name' => 'login', 'type' => 'xsd:string'),
197  'passwd' => array('name' => 'passwd', 'type' => 'xsd:string'),
198  'firstname' => array('name' => 'firstname', 'type' => 'xsd:string'),
199  'lastname' => array('name' => 'lastname', 'type' => 'xsd:string'),
200  'title' => array('name' => 'title', 'type' => 'xsd:string'),
201  'gender' => array('name' => 'gender', 'type' => 'xsd:string'),
202  'email' => array('name' => 'email', 'type' => 'xsd:string'),
203  'second_email' => array('name' => 'second_email', 'type' => 'xsd:string'),
204  'institution' => array('name' => 'institution', 'type' => 'xsd:string'),
205  'street' => array('name' => 'street', 'type' => 'xsd:string'),
206  'city' => array('name' => 'city', 'type' => 'xsd:string'),
207  'zipcode' => array('name' => 'zipcode', 'type' => 'xsd:string'),
208  'country' => array('name' => 'country', 'type' => 'xsd:string'),
209  'phone_office' => array('name' => 'phone_office', 'type' => 'xsd:string'),
210  'last_login' => array('name' => 'last_login', 'type' => 'xsd:string'),
211  'last_update' => array('name' => 'last_update', 'type' => 'xsd:string'),
212  'create_date' => array('name' => 'create_date', 'type' => 'xsd:string'),
213  'hobby' => array('name' => 'hobby', 'type' => 'xsd:string'),
214  'department' => array('name' => 'department', 'type' => 'xsd:string'),
215  'phone_home' => array('name' => 'phone_home', 'type' => 'xsd:string'),
216  'phone_mobile' => array('name' => 'phone_mobile', 'type' => 'xsd:string'),
217  'fax' => array('name' => 'fax', 'type' => 'xsd:string'),
218  'time_limit_owner' => array('name' => 'time_limit_owner', 'type' => 'xsd:int'),
219  'time_limit_unlimited' => array('name' => 'time_limit_unlimited', 'type' => 'xsd:int'),
220  'time_limit_from' => array('name' => 'time_limit_from', 'type' => 'xsd:int'),
221  'time_limit_until' => array('name' => 'time_limit_until', 'type' => 'xsd:int'),
222  'time_limit_message' => array('name' => 'time_limit_message', 'type' => 'xsd:int'),
223  'referral_comment' => array('name' => 'referral_comment', 'type' => 'xsd:string'),
224  'matriculation' => array('name' => 'matriculation', 'type' => 'xsd:string'),
225  'active' => array('name' => 'active', 'type' => 'xsd:int'),
226  'accepted_agreement' => array('name' => 'accepted_agreement','type' => 'xsd:boolean'),
227  'approve_date' => array('name' => 'approve_date', 'type' => 'xsd:string'),
228  'user_skin' => array('name' => 'user_skin', 'type' => 'xsd:string'),
229  'user_style' => array('name' => 'user_style', 'type' => 'xsd:string'),
230  'user_language' => array('name' => 'user_language', 'type' => 'xsd:string'),
231  'import_id' => array('name' => 'import_id', 'type' => 'xsd:string')
232  )
233  );
234 
235 
236  // lookupUser()
237  $this->server->register(
238  'lookupUser',
239  array('sid' => 'xsd:string',
240  'user_name' => 'xsd:string'),
241  array('usr_id' => 'xsd:int'),
242  SERVICE_NAMESPACE,
243  SERVICE_NAMESPACE . '#lookupUser',
244  SERVICE_STYLE,
245  SERVICE_USE,
246  'ILIAS lookupUser(): check if username exists. Return usr_id or 0 if lookup fails.'
247  );
248 
249 
250  // getUser()
251  $this->server->register(
252  'getUser',
253  array('sid' => 'xsd:string',
254  'user_id' => 'xsd:int'),
255  array('user_data' => 'tns:ilUserData'),
256  SERVICE_NAMESPACE,
257  SERVICE_NAMESPACE . '#getUser',
258  SERVICE_STYLE,
259  SERVICE_USE,
260  'ILIAS getUser(): get complete set of user data. DEPRECATED with release 5.2, will be deleted with 5.3. Use searchUsers() instead.'
261  );
262 
263  // deleteUser()
264  $this->server->register(
265  'deleteUser',
266  array('sid' => 'xsd:string',
267  'user_id' => 'xsd:int'),
268  array('success' => 'xsd:boolean'),
269  SERVICE_NAMESPACE,
270  SERVICE_NAMESPACE . '#deleteUser',
271  SERVICE_STYLE,
272  SERVICE_USE,
273  'ILIAS deleteUser(). Deletes all user related data (Bookmarks, Mails ...). DEPRECATED: Use importUsers() for deletion of user data.'
274  );
275 
276  // addCourse()
277  $this->server->register(
278  'addCourse',
279  array('sid' => 'xsd:string',
280  'target_id' => 'xsd:int',
281  'crs_xml' => 'xsd:string'),
282  array('course_id' => 'xsd:int'),
283  SERVICE_NAMESPACE,
284  SERVICE_NAMESPACE . '#addCourse',
285  SERVICE_STYLE,
286  SERVICE_USE,
287  'ILIAS addCourse(). Course import. See ilias_course_0_1.dtd for details about course xml structure'
288  );
289 
290  // deleteCourse()
291  $this->server->register(
292  'deleteCourse',
293  array('sid' => 'xsd:string',
294  'course_id' => 'xsd:int'),
295  array('success' => 'xsd:boolean'),
296  SERVICE_NAMESPACE,
297  SERVICE_NAMESPACE . '#deleteCourse',
298  SERVICE_STYLE,
299  SERVICE_USE,
300  'ILIAS deleteCourse(). Deletes a course. Delete courses are stored in "Trash" and can be undeleted in ' .
301  ' the ILIAS administration. '
302  );
303  // startBackgroundTaskWorker()
304  $this->server->register(
305  AsyncTaskManager::CMD_START_WORKER,
306  array('sid' => 'xsd:string'),
307  array('success' => 'xsd:boolean'),
308  SERVICE_NAMESPACE,
309  SERVICE_NAMESPACE . '#' . AsyncTaskManager::CMD_START_WORKER,
310  SERVICE_STYLE,
311  SERVICE_USE,
312  'ILIAS ' . AsyncTaskManager::CMD_START_WORKER . '().'
313  );
314 
315  // assignCourseMember()
316  $this->server->register(
317  'assignCourseMember',
318  array('sid' => 'xsd:string',
319  'course_id' => 'xsd:int',
320  'user_id' => 'xsd:int',
321  'type' => 'xsd:string'),
322  array('success' => 'xsd:boolean'),
323  SERVICE_NAMESPACE,
324  SERVICE_NAMESPACE . '#assignCourseMember',
325  SERVICE_STYLE,
326  SERVICE_USE,
327  'ILIAS assignCourseMember(). Assigns an user to an existing course. Type should be "Admin", "Tutor" or "Member"'
328  );
329 
330  // excludeCourseMember()
331  $this->server->register(
332  'excludeCourseMember',
333  array('sid' => 'xsd:string',
334  'course_id' => 'xsd:int',
335  'user_id' => 'xsd:int'),
336  array('success' => 'xsd:boolean'),
337  SERVICE_NAMESPACE,
338  SERVICE_NAMESPACE . '#excludeCourseMember',
339  SERVICE_STYLE,
340  SERVICE_USE,
341  'ILIAS excludeCourseMember(). Excludes an user from an existing course.'
342  );
343 
344  // isAssignedToCourse()
345  $this->server->register(
346  'isAssignedToCourse',
347  array('sid' => 'xsd:string',
348  'course_id' => 'xsd:int',
349  'user_id' => 'xsd:int'),
350  array('role' => 'xsd:int'),
351  SERVICE_NAMESPACE,
352  SERVICE_NAMESPACE . '#isAssignedToCourse',
353  SERVICE_STYLE,
354  SERVICE_USE,
355  'ILIAS isAssignedToCourse(). Checks whether an user is assigned to a given course. ' .
356  'Returns 0 => not assigned, 1 => course admin, 2 => course member or 3 => course tutor'
357  );
358 
359  // getCourseXML($sid,$course_id)
360  $this->server->register(
361  'getCourseXML',
362  array('sid' => 'xsd:string',
363  'course_id' => 'xsd:int'),
364  array('xml' => 'xsd:string'),
365  SERVICE_NAMESPACE,
366  SERVICE_NAMESPACE . '#getCourseXML',
367  SERVICE_STYLE,
368  SERVICE_USE,
369  'ILIAS getCourseXML(). Get a xml description of a specific course.'
370  );
371 
372  // updateCourse($sid,$course_id,$xml)
373  $this->server->register(
374  'updateCourse',
375  array('sid' => 'xsd:string',
376  'course_id' => 'xsd:int',
377  'xml' => 'xsd:string'),
378  array('success' => 'xsd:boolean'),
379  SERVICE_NAMESPACE,
380  SERVICE_NAMESPACE . '#updateCourse',
381  SERVICE_STYLE,
382  SERVICE_USE,
383  'ILIAS updateCourse(). Update course settings, assigned members, tutors, administrators with a ' .
384  'given xml description'
385  );
386 
387  // get obj_id by import id
388  $this->server->register(
389  'getObjIdByImportId',
390  array('sid' => 'xsd:string',
391  'import_id' => 'xsd:string'),
392  array('obj_id' => 'xsd:int'),
393  SERVICE_NAMESPACE,
394  SERVICE_NAMESPACE . '#getCourseIdByImportId',
395  SERVICE_STYLE,
396  SERVICE_USE,
397  'ILIAS getObjIdByImportId(). Get the obj_id of an ILIAS obj by a given import id.'
398  );
399 
400 
401  // get ref ids by import id
402  $this->server->register(
403  'getRefIdsByImportId',
404  array('sid' => 'xsd:string',
405  'import_id' => 'xsd:string'),
406  array('ref_ids' => 'tns:intArray'),
407  SERVICE_NAMESPACE,
408  SERVICE_NAMESPACE . '#getRefIdsByImportId',
409  SERVICE_STYLE,
410  SERVICE_USE,
411  'ILIAS getRefIdsByImportId(). Get all reference ids by a given import id.'
412  );
413 
414  // get obj_id by import id
415  $this->server->register(
416  'getRefIdsByObjId',
417  array('sid' => 'xsd:string',
418  'obj_id' => 'xsd:string'),
419  array('ref_ids' => 'tns:intArray'),
420  SERVICE_NAMESPACE,
421  SERVICE_NAMESPACE . '#getRefIdsByObjId',
422  SERVICE_STYLE,
423  SERVICE_USE,
424  'ILIAS getRefIdsByObjId(). Get all reference ids by a given object id.'
425  );
426 
427  // Object administration
428  $this->server->register(
429  'getObjectByReference',
430  array('sid' => 'xsd:string',
431  'reference_id' => 'xsd:int',
432  'user_id' => 'xsd:int'),
433  array('object_xml' => 'xsd:string'),
434  SERVICE_NAMESPACE,
435  SERVICE_NAMESPACE . '#getObjectByReference',
436  SERVICE_STYLE,
437  SERVICE_USE,
438  'ILIAS getObjectByReference(). Get XML-description of an ILIAS object. If a user id is given, ' .
439  'this methods also checks the permissions of that user on the object.'
440  );
441 
442  $this->server->register(
443  'getObjectsByTitle',
444  array('sid' => 'xsd:string',
445  'title' => 'xsd:string',
446  'user_id' => 'xsd:int'),
447  array('object_xml' => 'xsd:string'),
448  SERVICE_NAMESPACE,
449  SERVICE_NAMESPACE . '#getObjectsByTitle',
450  SERVICE_STYLE,
451  SERVICE_USE,
452  'ILIAS getObjectsByTitle(). Get XML-description of an ILIAS object with given title. ' .
453  'If a user id is given this method also checks the permissions of that user on the object.'
454  );
455 
456  $this->server->register(
457  'searchObjects',
458  array('sid' => 'xsd:string',
459  'types' => 'tns:stringArray',
460  'key' => 'xsd:string',
461  'combination' => 'xsd:string',
462  'user_id' => 'xsd:int'),
463  array('object_xml' => 'xsd:string'),
464  SERVICE_NAMESPACE,
465  SERVICE_NAMESPACE . '#searchObjects',
466  SERVICE_STYLE,
467  SERVICE_USE,
468  'ILIAS searchObjects(): Searches for objects. Key is within "title" or "description" ' .
469  'Typical calls are searchObject($sid,array("lm","crs"),"\"this and that\"","and"); ' .
470  ' If an optional user id is given, this methods also return the permissions for that user ' .
471  'on the found objects'
472  );
473 
474  $this->server->register(
475  'getTreeChilds',
476  array('sid' => 'xsd:string',
477  'ref_id' => 'xsd:int',
478  'types' => 'tns:stringArray',
479  'user_id' => 'xsd:int'),
480  array('object_xml' => 'xsd:string'),
481  SERVICE_NAMESPACE,
482  SERVICE_NAMESPACE . '#getTreeChilds',
483  SERVICE_STYLE,
484  SERVICE_USE,
485  'ILIAS getTreeChilds(): Get all child objects of a given object.' .
486  'Choose array of types to filter the output. Choose empty type array to receive all object types'
487  );
488 
489  $this->server->register(
490  'getXMLTree',
491  array('sid' => 'xsd:string',
492  'ref_id' => 'xsd:int',
493  'types' => 'tns:stringArray',
494  'user_id' => 'xsd:int'),
495  array('object_xml' => 'xsd:string'),
496  SERVICE_NAMESPACE,
497  SERVICE_NAMESPACE . '#getXMLTree',
498  SERVICE_STYLE,
499  SERVICE_USE,
500  'ILIAS getXMLTree(): Returns a xml stream with the subtree objects.'
501  );
502 
503 
504 
505  $this->server->register(
506  'addObject',
507  array('sid' => 'xsd:string',
508  'target_id' => 'xsd:int',
509  'object_xml' => 'xsd:string'),
510  array('ref_id' => 'xsd:int'),
511  SERVICE_NAMESPACE,
512  SERVICE_NAMESPACE . '#addObject',
513  SERVICE_STYLE,
514  SERVICE_USE,
515  'ILIAS addObject. Create new object based on xml description under a given node ' .
516  '("category,course,group or folder). Return created reference id of the new object.'
517  );
518 
519  $this->server->register(
520  'updateObjects',
521  array('sid' => 'xsd:string',
522  'object_xml' => 'xsd:string'),
523  array('success' => 'xsd:boolean'),
524  SERVICE_NAMESPACE,
525  SERVICE_NAMESPACE . '#updateObjects',
526  SERVICE_STYLE,
527  SERVICE_USE,
528  'ILIAS updateObjects. Update object data (title,description,owner)'
529  );
530 
531  $this->server->register(
532  'addReference',
533  array('sid' => 'xsd:string',
534  'source_id' => 'xsd:int',
535  'target_id' => 'xsd:int'),
536  array('ref_id' => 'xsd:int'),
537  SERVICE_NAMESPACE,
538  SERVICE_NAMESPACE . '#addReference',
539  SERVICE_STYLE,
540  SERVICE_USE,
541  'ILIAS addReference. Create new link of given object to new object. Return the new reference id'
542  );
543 
544  $this->server->register(
545  'deleteObject',
546  array('sid' => 'xsd:string',
547  'reference_id' => 'xsd:int'),
548  array('success' => 'xsd:boolean'),
549  SERVICE_NAMESPACE,
550  SERVICE_NAMESPACE . '#deleteObject',
551  SERVICE_STYLE,
552  SERVICE_USE,
553  'ILIAS deleteObject. Stores object in trash. If multiple references exist, only the reference is deleted '
554  );
555 
556 
557  $this->server->register(
558  'removeFromSystemByImportId',
559  array('sid' => 'xsd:string',
560  'import_id' => 'xsd:string'),
561  array('success' => 'xsd:boolean'),
562  SERVICE_NAMESPACE,
563  SERVICE_NAMESPACE . '#removeFromSystemByImportId',
564  SERVICE_STYLE,
565  SERVICE_USE,
566  'ILIAS removeFromSystemByImportId(). Removes an object identified by its import id permanently from the ' .
567  'system. All data will be deleted. There will be no possibility to restore it from the trash. Do not use ' .
568  'this function for deleting roles or users. Use deleteUser() or deleteRole() instead.'
569  );
570 
571  $this->server->register(
572  'addUserRoleEntry',
573  array('sid' => 'xsd:string',
574  'user_id' => 'xsd:int',
575  'role_id' => 'xsd:int'),
576  array('success' => 'xsd:boolean'),
577  SERVICE_NAMESPACE,
578  SERVICE_NAMESPACE . '#addUserRoleEntry',
579  SERVICE_STYLE,
580  SERVICE_USE,
581  'ILIAS addUserRoleEntry. Assign user to role.'
582  );
583 
584  $this->server->register(
585  'deleteUserRoleEntry',
586  array('sid' => 'xsd:string',
587  'user_id' => 'xsd:int',
588  'role_id' => 'xsd:int'),
589  array('success' => 'xsd:boolean'),
590  SERVICE_NAMESPACE,
591  SERVICE_NAMESPACE . '#deleteUserRoleEntry',
592  SERVICE_STYLE,
593  SERVICE_USE,
594  'ILIAS deleteUserRoleEntry. Deassign user from role.'
595  );
596 
597 
598  // Add complex type for operations e.g array(array('name' => 'read','ops_id' => 2),...)
599  $this->server->wsdl->addComplexType(
600  'ilOperation',
601  'complexType',
602  'struct',
603  'all',
604  '',
605  array('ops_id' => array('name' => 'ops_id',
606  'type' => 'xsd:int'),
607  'operation' => array('name' => 'operation',
608  'type' => 'xsd:string'),
609  'description' => array('name' => 'description',
610  'type' => 'xsd:string'))
611  );
612  // Now create an array of ilOperations
613  $this->server->wsdl->addComplexType(
614  'ilOperations',
615  'complexType',
616  'array',
617  '',
618  'SOAP-ENC:Array',
619  array(),
620  array(array('ref' => 'SOAP-ENC:arrayType',
621  'wsdl:arrayType' => 'tns:ilOperation[]')),
622  'tns:ilOperation'
623  );
624  $this->server->register(
625  'getOperations',
626  array('sid' => 'xsd:string'),
627  array('operations' => 'tns:ilOperations'),
628  SERVICE_NAMESPACE,
629  SERVICE_NAMESPACE . '#getOperations',
630  SERVICE_STYLE,
631  SERVICE_USE,
632  'ILIAS getOperations(): get complete set of RBAC operations.'
633  );
634 
635  $this->server->register(
636  'revokePermissions',
637  array('sid' => 'xsd:string',
638  'ref_id' => 'xsd:int',
639  'role_id' => 'xsd:int'),
640  array('success' => 'xsd:boolean'),
641  SERVICE_NAMESPACE,
642  SERVICE_NAMESPACE . '#revokePermissions',
643  SERVICE_STYLE,
644  SERVICE_USE,
645  'ILIAS revokePermissions(): Revoke all permissions for a specific role on an object.'
646  );
647 
648  $this->server->wsdl->addComplexType(
649  'ilOperationIds',
650  'complexType',
651  'array',
652  '',
653  'SOAP-ENC:Array',
654  array(),
655  array(array('ref' => 'SOAP-ENC:arrayType',
656  'wsdl:arrayType' => 'xsd:int[]')),
657  'xsd:int'
658  );
659 
660  $this->server->register(
661  'grantPermissions',
662  array('sid' => 'xsd:string',
663  'ref_id' => 'xsd:int',
664  'role_id' => 'xsd:int',
665  'operations' => 'tns:intArray'),
666  array('success' => 'xsd:boolean'),
667  SERVICE_NAMESPACE,
668  SERVICE_NAMESPACE . '#grantPermissions',
669  SERVICE_STYLE,
670  SERVICE_USE,
671  'ILIAS grantPermissions(): Grant permissions for a specific role on an object. ' .
672  '(Substitutes existing permission settings)'
673  );
674 
675  $this->server->register(
676  'getLocalRoles',
677  array('sid' => 'xsd:string',
678  'ref_id' => 'xsd:int'),
679  array('role_xml' => 'xsd:string'),
680  SERVICE_NAMESPACE,
681  SERVICE_NAMESPACE . '#getLocalRoles',
682  SERVICE_STYLE,
683  SERVICE_USE,
684  'ILIAS getLocalRoles(): Get all local roles assigned to an specific object.'
685  );
686 
687  $this->server->register(
688  'getUserRoles',
689  array('sid' => 'xsd:string',
690  'user_id' => 'xsd:int'),
691  array('role_xml' => 'xsd:string'),
692  SERVICE_NAMESPACE,
693  SERVICE_NAMESPACE . '#getLocalRoles',
694  SERVICE_STYLE,
695  SERVICE_USE,
696  'ILIAS getUserRoles(): Get all local roles assigned to an specific user. '
697  );
698 
699  $this->server->register(
700  'addRole',
701  array('sid' => 'xsd:string',
702  'target_id' => 'xsd:int',
703  'obj_xml' => 'xsd:string'),
704  array('role_ids' => 'tns:intArray'),
705  SERVICE_NAMESPACE,
706  SERVICE_NAMESPACE . '#addRole',
707  SERVICE_STYLE,
708  SERVICE_USE,
709  'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS ' .
710  'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created.'
711  );
712 
713  $this->server->register(
714  'deleteRole',
715  array('sid' => 'xsd:string',
716  'role_id' => 'xsd:int'),
717  array('success' => 'xsd:boolean'),
718  SERVICE_NAMESPACE,
719  SERVICE_NAMESPACE . '#deleteRole',
720  SERVICE_STYLE,
721  SERVICE_USE,
722  'ILIAS deleteRole(): Deletes an role and all user assignments. Fails if it is the last role of an user'
723  );
724 
725  $this->server->register(
726  'addRoleFromTemplate',
727  array('sid' => 'xsd:string',
728  'target_id' => 'xsd:int',
729  'obj_xml' => 'xsd:string',
730  'role_template_id' => 'xsd:int'),
731  array('role_ids' => 'tns:intArray'),
732  SERVICE_NAMESPACE,
733  SERVICE_NAMESPACE . '#addRole',
734  SERVICE_STYLE,
735  SERVICE_USE,
736  'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS ' .
737  'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created. ' .
738  'In addition to addRole the template permissions will be copied from the given role template'
739  );
740 
741  $this->server->register(
742  'getObjectTreeOperations',
743  array('sid' => 'xsd:string',
744  'ref_id' => 'xsd:int',
745  'user_id' => 'xsd:int'),
746  array('operations' => 'tns:ilOperations'),
747  SERVICE_NAMESPACE,
748  SERVICE_NAMESPACE . '#getPermissionsForObject',
749  SERVICE_STYLE,
750  SERVICE_USE,
751  'ILIAS getObjectTreeOperations(): Get all granted permissions for all references of ' .
752  'an object for a specific user. Returns array of granted operations or empty array'
753  );
754 
755  $this->server->register(
756  'addGroup',
757  array('sid' => 'xsd:string',
758  'target_id' => 'xsd:int',
759  'group_xml' => 'xsd:string'),
760  array('ref_id' => 'xsd:int'),
761  SERVICE_NAMESPACE,
762  SERVICE_NAMESPACE . '#addGroup',
763  SERVICE_STYLE,
764  SERVICE_USE,
765  'ILIAS addGroup(): Add grop according to valid group XML ' .
766  '@See ilias_group_0_1.dtd'
767  );
768 
769  $this->server->register(
770  'groupExists',
771  array('sid' => 'xsd:string',
772  'title' => 'xsd:string'),
773  array('exists' => 'xsd:boolean'),
774  SERVICE_NAMESPACE,
775  SERVICE_NAMESPACE . '#groupExists',
776  SERVICE_STYLE,
777  SERVICE_USE,
778  'ILIAS addGroup(): Check if group with given name exists. '
779  );
780 
781 
782  // getGroup
783  $this->server->register(
784  'getGroup',
785  array('sid' => 'xsd:string',
786  'ref_id' => 'xsd:int'),
787  array('group_xml' => 'xsd:string'),
788  SERVICE_NAMESPACE,
789  SERVICE_NAMESPACE . '#getGroup',
790  SERVICE_STYLE,
791  SERVICE_USE,
792  'ILIAS getGroup(): get xml description of grouip with given reference id.'
793  );
794 
795  // assignGroupMember()
796  $this->server->register(
797  'assignGroupMember',
798  array('sid' => 'xsd:string',
799  'group_id' => 'xsd:int',
800  'user_id' => 'xsd:int',
801  'type' => 'xsd:string'),
802  array('success' => 'xsd:boolean'),
803  SERVICE_NAMESPACE,
804  SERVICE_NAMESPACE . '#assignGroupMember',
805  SERVICE_STYLE,
806  SERVICE_USE,
807  'ILIAS assignGroupMember(). Assigns an user to an existing group. Type should be "Admin","Member"'
808  );
809 
810  // excludeGroupMember()
811  $this->server->register(
812  'excludeGroupMember',
813  array('sid' => 'xsd:string',
814  'group_id' => 'xsd:int',
815  'user_id' => 'xsd:int'),
816  array('success' => 'xsd:boolean'),
817  SERVICE_NAMESPACE,
818  SERVICE_NAMESPACE . '#excludeGroupMember',
819  SERVICE_STYLE,
820  SERVICE_USE,
821  'ILIAS excludeGroupMember(). Excludes an user from an existing group.'
822  );
823 
824  // isAssignedToGroup()
825  $this->server->register(
826  'isAssignedToGroup',
827  array('sid' => 'xsd:string',
828  'group_id' => 'xsd:int',
829  'user_id' => 'xsd:int'),
830  array('role' => 'xsd:int'),
831  SERVICE_NAMESPACE,
832  SERVICE_NAMESPACE . '#isAssignedToGroup',
833  SERVICE_STYLE,
834  SERVICE_USE,
835  'ILIAS isAssignedToGroup(). Checks whether an user is assigned to a given group. ' .
836  'Returns 0 => not assigned, 1 => group admin, 2 => group member'
837  );
838 
839 
840 
841  // ILIAS util functions
842  $this->server->register(
843  'sendMail',
844  array('sid' => 'xsd:string',
845  'rcp_to' => 'xsd:string',
846  'rcp_cc' => 'xsd:string',
847  'rcp_bcc' => 'xsd:string',
848  'sender' => 'xsd:string',
849  'subject' => 'xsd:string',
850  'message' => 'xsd:string',
851  'attachments' => 'xsd:string'),
852  array('status' => 'xsd:boolean'),
853  SERVICE_NAMESPACE,
854  SERVICE_NAMESPACE . '#sendMail',
855  SERVICE_STYLE,
856  SERVICE_USE,
857  'ILIAS sendMail(): Send mime mails according to xml description. Only for internal usage ' .
858  'Syntax, parameters may change in future releases'
859  );
860 
861  $this->server->register(
862  'distributeMails',
863  array('sid' => 'xsd:string',
864  'mail_xml' => 'xsd:string'),
865  array('status' => 'xsd:boolean'),
866  SERVICE_NAMESPACE,
867  SERVICE_NAMESPACE . '#sendMail',
868  SERVICE_STYLE,
869  SERVICE_USE,
870  'ILIAS distributeMails(): Distribute ILIAS mails according according to the mail setting of the recipients as ' .
871  'ILIAS internal mail or as e-mail.'
872  );
873 
874  // Clone functions
875  $this->server->register(
876  'ilClone',
877  array('sid' => 'xsd:string','copy_identifier' => 'xsd:int'),
878  array('new_ref_id' => 'xsd:int'),
879  SERVICE_NAMESPACE,
880  SERVICE_NAMESPACE . '#ilClone',
881  SERVICE_STYLE,
882  SERVICE_USE,
883  'ILIAS ilClone(): Only for internal usage.' .
884  'Syntax, parameters may change in future releases. '
885  );
886 
887  $this->server->register(
888  'handleECSTasks',
889  array('sid' => 'xsd:string','server_id' => 'xsd:int'),
890  array('success' => 'xsd:boolean'),
891  SERVICE_NAMESPACE,
892  SERVICE_NAMESPACE . '#handleECSTasks',
893  SERVICE_STYLE,
894  SERVICE_USE,
895  'ILIAS handleECSTasks(): Only for internal usage.' .
896  'Syntax, parameters may change in future releases. '
897  );
898 
899  $this->server->register(
900  'ilCloneDependencies',
901  array('sid' => 'xsd:string','copy_identifier' => 'xsd:int'),
902  array('success' => 'xsd:boolean'),
903  SERVICE_NAMESPACE,
904  SERVICE_NAMESPACE . '#ilCloneDependencies',
905  SERVICE_STYLE,
906  SERVICE_USE,
907  'ILIAS ilCloneDependencies(): Only for internal usage.' .
908  'Syntax, parameters may change in future releases. '
909  );
910 
911  $this->server->register(
912  'saveQuestionResult',
913  array('sid' => 'xsd:string',
914  'user_id' => 'xsd:int',
915  'test_id' => 'xsd:int',
916  'question_id' => 'xsd:int',
917  'pass' => 'xsd:int',
918  'solution' => 'tns:stringArray'),
919  array('status' => 'xsd:boolean'),
920  SERVICE_NAMESPACE,
921  SERVICE_NAMESPACE . '#saveQuestionResult',
922  SERVICE_STYLE,
923  SERVICE_USE,
924  'ILIAS saveQuesionResult: Typically called from an external assessment question to save the user input. DEPRECATED since ILIAS 3.9'
925  );
926 
927  $this->server->register(
928  'saveQuestion',
929  array('sid' => 'xsd:string',
930  'active_id' => 'xsd:long',
931  'question_id' => 'xsd:long',
932  'pass' => 'xsd:int',
933  'solution' => 'tns:stringArray'),
934  array('status' => 'xsd:boolean'),
935  SERVICE_NAMESPACE,
936  SERVICE_NAMESPACE . '#saveQuestion',
937  SERVICE_STYLE,
938  SERVICE_USE,
939  '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.'
940  );
941 
942  $this->server->register(
943  'saveQuestionSolution',
944  array('sid' => 'xsd:string',
945  'active_id' => 'xsd:long',
946  'question_id' => 'xsd:long',
947  'pass' => 'xsd:int',
948  'solution' => 'xsd:string'),
949  array('status' => 'xsd:string'),
950  SERVICE_NAMESPACE,
951  SERVICE_NAMESPACE . '#saveQuestionSolution',
952  SERVICE_STYLE,
953  SERVICE_USE,
954  'ILIAS saveQuestionSolution: 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. The solution has to be an XML string which contains &lt;values&gt;&lt;value&gt;VALUE&lt;/value&gt;&lt;value&gt;VALUE&lt;/value&gt;&lt;points&gt;POINTS&lt;/points&gt;...&lt;/values&gt; where the triplet (value,value,points) can repeat n times. The result string is either TRUE or it contains an error message.'
955  );
956 
957  $this->server->register(
958  'getQuestionSolution',
959  array('sid' => 'xsd:string',
960  'active_id' => 'xsd:long',
961  'question_id' => 'xsd:int',
962  'pass' => 'xsd:int'),
963  array('solution' => 'tns:stringArray'),
964  SERVICE_NAMESPACE,
965  SERVICE_NAMESPACE . '#getQuestionSolution',
966  SERVICE_STYLE,
967  SERVICE_USE,
968  'ILIAS getQuestionSolution: Typically called from external assessment questions to retrieve the previous input of a user.'
969  );
970 
971  $this->server->register(
972  'getTestUserData',
973  array('sid' => 'xsd:string',
974  'active_id' => 'xsd:long'),
975  array('userdata' => 'tns:stringArray'),
976  SERVICE_NAMESPACE,
977  SERVICE_NAMESPACE . '#getTestUserData',
978  SERVICE_STYLE,
979  SERVICE_USE,
980  'ILIAS getTestUserData: Typically called from external assessment questions to retrieve data of the active user. The returned string array values are fullname, title, firstname, lastname, login.'
981  );
982 
983  $this->server->register(
984  'getPositionOfQuestion',
985  array('sid' => 'xsd:string',
986  'active_id' => 'xsd:long',
987  'question_id' => 'xsd:int',
988  'pass' => 'xsd:int'),
989  array('position' => 'xsd:int'),
990  SERVICE_NAMESPACE,
991  SERVICE_NAMESPACE . '#getPositionOfQuestion',
992  SERVICE_STYLE,
993  SERVICE_USE,
994  'ILIAS getPositionOfQuestion: Returns the position of a given question for a given user in a given test pass.'
995  );
996 
997  $this->server->register(
998  'getPreviousReachedPoints',
999  array('sid' => 'xsd:string',
1000  'active_id' => 'xsd:long',
1001  'question_id' => 'xsd:int',
1002  'pass' => 'xsd:int'),
1003  array('position' => 'tns:doubleArray'),
1004  SERVICE_NAMESPACE,
1005  SERVICE_NAMESPACE . '#getPreviousReachedPoints',
1006  SERVICE_STYLE,
1007  SERVICE_USE,
1008  'ILIAS getPreviousReachedPoints: Returns an array of reached points for the previous questions in a given test pass.'
1009  );
1010 
1011  $this->server->register(
1012  'getNrOfQuestionsInPass',
1013  array('sid' => 'xsd:string',
1014  'active_id' => 'xsd:long',
1015  'pass' => 'xsd:int'),
1016  array('count' => 'xsd:int'),
1017  SERVICE_NAMESPACE,
1018  SERVICE_NAMESPACE . '#getNrOfQuestionsInPass',
1019  SERVICE_STYLE,
1020  SERVICE_USE,
1021  'ILIAS getNrOfQuestionsInPass: Returns the question count for a given test user in a given pass.'
1022  );
1023 
1024  $this->server->register(
1025  'getStructureObjects',
1026  array('sid' => 'xsd:string',
1027  'ref_id' => 'xsd:int'),
1028  array('xml' => 'xsd:string'),
1029  SERVICE_NAMESPACE,
1030  SERVICE_NAMESPACE . '#getStructureObjects',
1031  SERVICE_STYLE,
1032  SERVICE_USE,
1033  'ILIAS getStructureObjects: delivers structure of content objects like learning modules (chapters/pages) or glossary (terms)'
1034  );
1035 
1036  // importUsers()
1037  $this->server->register(
1038  'importUsers',
1039  array('sid' => 'xsd:string',
1040  'folder_id' => 'xsd:int',
1041  'usr_xml' => 'xsd:string',
1042  'conflict_rule' => 'xsd:int',
1043  'send_account_mail' => 'xsd:int'),
1044  array('protocol' => 'xsd:string'),
1045  SERVICE_NAMESPACE,
1046  SERVICE_NAMESPACE . '#importUsers',
1047  SERVICE_STYLE,
1048  SERVICE_USE,
1049  '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'
1050  );
1051 
1052  $this->server->register(
1053  'getRoles',
1054  array('sid' => 'xsd:string',
1055  'role_type' => 'xsd:string',
1056  'id' => 'xsd:string'),
1057  array('role_xml' => 'xsd:string'),
1058  SERVICE_NAMESPACE,
1059  SERVICE_NAMESPACE . '#getRoles',
1060  SERVICE_STYLE,
1061  SERVICE_USE,
1062  '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'
1063  );
1064 
1065  $this->server->register(
1066  'getUsersForContainer',
1067  array('sid' => 'xsd:string',
1068  'ref_id' => 'xsd:int',
1069  'attach_roles' => 'xsd:int',
1070  'active' => 'xsd:int'),
1071  array('user_xml' => 'xsd:string'),
1072  SERVICE_NAMESPACE,
1073  SERVICE_NAMESPACE . '#getUsersForContainer',
1074  SERVICE_STYLE,
1075  SERVICE_USE,
1076  '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'
1077  );
1078 
1079  $this->server->register(
1080  'getUsersForRole',
1081  array('sid' => 'xsd:string',
1082  'role_id' => 'xsd:int',
1083  'attach_roles' => 'xsd:int',
1084  'active' => 'xsd:int'),
1085  array('user_xml' => 'xsd:string'),
1086  SERVICE_NAMESPACE,
1087  SERVICE_NAMESPACE . '#getUsersForRole',
1088  SERVICE_STYLE,
1089  SERVICE_USE,
1090  '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'
1091  );
1092 
1093  $this->server->register(
1094  'searchUser',
1095  array('sid' => 'xsd:string',
1096  'key_fields' => 'tns:stringArray',
1097  'query_operator' => 'xsd:string',
1098  'key_values' => 'tns:stringArray',
1099  'attach_roles' => 'xsd:int',
1100  'active' => 'xsd:int'),
1101  array('user_xml' => 'xsd:string'),
1102  SERVICE_NAMESPACE,
1103  SERVICE_NAMESPACE . '#searchUsers',
1104  SERVICE_STYLE,
1105  SERVICE_USE,
1106  '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'
1107  );
1108 
1109  // Mail Functions
1110  // Check whether current user has new mail
1111  $this->server->register(
1112  'hasNewMail',
1113  array('sid' => 'xsd:string'),
1114  array('status' => 'xsd:boolean'),
1115  SERVICE_NAMESPACE,
1116  SERVICE_NAMESPACE . '#hasNewMail',
1117  SERVICE_STYLE,
1118  SERVICE_USE,
1119  'ILIAS hasNewMail(): Checks whether the current authenticated user has a new mail.'
1120  );
1121 
1122  $this->server->register(
1123  'getNIC',
1124  array('sid' => 'xsd:string'),
1125  array('xmlresultset' => 'xsd:string'),
1126  SERVICE_NAMESPACE,
1127  SERVICE_NAMESPACE . '#getNIC',
1128  SERVICE_STYLE,
1129  SERVICE_USE,
1130  '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'
1131  );
1132 
1133  $this->server->register(
1134  'getExerciseXML',
1135  array('sid' => 'xsd:string', "ref_id" => 'xsd:int', "attachment_mode" => "xsd:int"),
1136  array('exercisexml' => 'xsd:string'),
1137  SERVICE_NAMESPACE,
1138  SERVICE_NAMESPACE . '#getExerciseXML',
1139  SERVICE_STYLE,
1140  SERVICE_USE,
1141  'ILIAS getExerciseXML(): returns xml description of exercise. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)'
1142  );
1143 
1144  $this->server->register(
1145  'addExercise',
1146  array('sid' => 'xsd:string', "target_id" => 'xsd:int', "xml" => "xsd:string"),
1147  array('refid' => 'xsd:int'),
1148  SERVICE_NAMESPACE,
1149  SERVICE_NAMESPACE . '#addExercise',
1150  SERVICE_STYLE,
1151  SERVICE_USE,
1152  '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!'
1153  );
1154 
1155  $this->server->register(
1156  'updateExercise',
1157  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
1158  array('success' => 'xsd:boolean'),
1159  SERVICE_NAMESPACE,
1160  SERVICE_NAMESPACE . '#updateExercise',
1161  SERVICE_STYLE,
1162  SERVICE_USE,
1163  '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.!'
1164  );
1165 
1166  $this->server->register(
1167  'getFileXML',
1168  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'attachment_mode' => 'xsd:int'),
1169  array('filexml' => 'xsd:string'),
1170  SERVICE_NAMESPACE,
1171  SERVICE_NAMESPACE . '#getFileXML',
1172  SERVICE_STYLE,
1173  SERVICE_USE,
1174  'ILIAS getFileXML(): returns xml description of file. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)'
1175  );
1176 
1177  $this->server->register(
1178  'addFile',
1179  array('sid' => 'xsd:string', 'target_id' => 'xsd:int', 'xml' => 'xsd:string'),
1180  array('refid' => 'xsd:int'),
1181  SERVICE_NAMESPACE,
1182  SERVICE_NAMESPACE . '#addFile',
1183  SERVICE_STYLE,
1184  SERVICE_USE,
1185  '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!'
1186  );
1187 
1188  $this->server->register(
1189  'updateFile',
1190  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
1191  array('success' => 'xsd:boolean'),
1192  SERVICE_NAMESPACE,
1193  SERVICE_NAMESPACE . '#updateFile',
1194  SERVICE_STYLE,
1195  SERVICE_USE,
1196  '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.!'
1197  );
1198 
1199 
1200  $this->server->register(
1201  'getUserXML',
1202  array('sid' => 'xsd:string', 'user_ids' => 'tns:intArray', 'attach_roles' => 'xsd:int'),
1203  array('xml' => 'xsd:string'),
1204  SERVICE_NAMESPACE,
1205  SERVICE_NAMESPACE . '#resolveUsers',
1206  SERVICE_STYLE,
1207  SERVICE_USE,
1208  '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'
1209  );
1210 
1211 
1212  // get objs ids by ref id
1213  $this->server->register(
1214  'getObjIdsByRefIds',
1215  array('sid' => 'xsd:string',
1216  'ref_ids' => 'tns:intArray'),
1217  array('obj_ids' => 'tns:intArray'),
1218  SERVICE_NAMESPACE,
1219  SERVICE_NAMESPACE . '#getRefIdsByImportId',
1220  SERVICE_STYLE,
1221  SERVICE_USE,
1222  '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'
1223  );
1224 
1225  $this->server->register(
1226  'updateGroup',
1227  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
1228  array('success' => 'xsd:boolean'),
1229  SERVICE_NAMESPACE,
1230  SERVICE_NAMESPACE . '#updateGroup',
1231  SERVICE_STYLE,
1232  SERVICE_USE,
1233  'ILIAS updateGroup(): update existing group using ref id and group xml (see DTD).'
1234  );
1235 
1236 
1237 
1238  $this->server->register(
1239  'getIMSManifestXML',
1240  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int'),
1241  array('xml' => 'xsd:string'),
1242  SERVICE_NAMESPACE,
1243  SERVICE_NAMESPACE . '#getIMSManifestXML',
1244  SERVICE_STYLE,
1245  SERVICE_USE,
1246  'ILIAS getIMSManifestXML(): returns xml of ims manifest file (scorm learning module) referred by refid'
1247  );
1248 
1249  $this->server->register(
1250  'hasSCORMCertificate',
1251  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'usr_id' => 'xsd:int'),
1252  array('success' => 'xsd:boolean'),
1253  SERVICE_NAMESPACE,
1254  SERVICE_NAMESPACE . '#hasSCORMCertificate',
1255  SERVICE_STYLE,
1256  SERVICE_USE,
1257  'ILIAS hasSCORMCertificate(): returns true if a certficate is available for a user referred by usr_id in a SCORM learning module referred by ref_id'
1258  );
1259 
1260  $this->server->register(
1261  'getSCORMCompletionStatus',
1262  array('sid' => 'xsd:string', 'usr_id' => 'xsd:int', 'ref_id' => 'xsd:int'),
1263  array('status' => 'xsd:string'),
1264  SERVICE_NAMESPACE,
1265  SERVICE_NAMESPACE . '#getSCORMCompletionStatus',
1266  SERVICE_STYLE,
1267  SERVICE_USE,
1268  'ILIAS getSCORMCompletionStatus(): returns a completion status of a scorm module'
1269  );
1270 
1271  $this->server->register(
1272  'copyObject',
1273  array('sid' => 'xsd:string', 'xml' => 'xsd:string'),
1274  array('xml' => 'xsd:int'),
1275  SERVICE_NAMESPACE,
1276  SERVICE_NAMESPACE . '#copyObject',
1277  SERVICE_STYLE,
1278  SERVICE_USE,
1279  'ILIAS copyObject(): returns reference of copy, if copy is created directly, or the ref id of the target if copy is in progress.'
1280  );
1281 
1282  $this->server->register(
1283  'moveObject',
1284  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'target_id' => 'xsd:int'),
1285  array('result' => 'xsd:boolean'),
1286  SERVICE_NAMESPACE,
1287  SERVICE_NAMESPACE . '#moveObject',
1288  SERVICE_STYLE,
1289  SERVICE_USE,
1290  'ILIAS moveObject(): returns true, if object with refid could be successfully moved to target id, other it raises an error.'
1291  );
1292 
1293 
1294  $this->server->register(
1295  'getTestResults',
1296  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'sum_only' => 'xsd:boolean'),
1297  array('xml' => 'xsd:string'),
1298  SERVICE_NAMESPACE,
1299  SERVICE_NAMESPACE . '#getTestResults',
1300  SERVICE_STYLE,
1301  SERVICE_USE,
1302  'ILIAS getTestResults(): returns XMLResultSet with
1303  sum only = true: user_id, login, firstname, lastname, matriculation, maximum points, received points
1304  sum only = false: user_id, login, firstname, lastname, matriculation, question id, question title, question points, received points'
1305  );
1306 
1307  $this->server->register(
1308  'removeTestResults',
1309  array(
1310  'sid' => 'xsd:string',
1311  'ref_id' => 'xsd:int',
1312  'user_ids' => 'tns:intArray'),
1313  array('success' => 'xsd:boolean'),
1314  SERVICE_NAMESPACE,
1315  SERVICE_NAMESPACE . '#removeTestResults',
1316  SERVICE_STYLE,
1317  SERVICE_USE,
1318  'ILIAS removeTestResults(): remove test results for the chosen users'
1319  );
1320 
1321  $this->server->register(
1322  'getCoursesForUser',
1323  array('sid' => 'xsd:string', 'parameters' => 'xsd:string'),
1324  array('xml' => 'xsd:string'),
1325  SERVICE_NAMESPACE,
1326  SERVICE_NAMESPACE . '#getCoursesForUser',
1327  SERVICE_STYLE,
1328  SERVICE_USE,
1329  '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.'
1330  );
1331 
1332  $this->server->register(
1333  'getGroupsForUser',
1334  array('sid' => 'xsd:string', 'parameters' => 'xsd:string'),
1335  array('xml' => 'xsd:string'),
1336  SERVICE_NAMESPACE,
1337  SERVICE_NAMESPACE . '#getGroupsForUser',
1338  SERVICE_STYLE,
1339  SERVICE_USE,
1340  '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.'
1341  );
1342 
1343  $this->server->register(
1344  'getPathForRefId',
1345  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int'),
1346  array('xml' => 'xsd:string'),
1347  SERVICE_NAMESPACE,
1348  SERVICE_NAMESPACE . '#getPathForRefId',
1349  SERVICE_STYLE,
1350  SERVICE_USE,
1351  'ILIAS getPathForRefId(): returns XMLResultSet with columns ref_id, type and title.'
1352  );
1353 
1354  $this->server->register(
1355  'searchRoles',
1356  array('sid' => 'xsd:string', 'key' => 'xsd:string', 'combination' => 'xsd:string', 'role_type' => 'xsd:string'),
1357  array('xml' => 'xsd:string'),
1358  SERVICE_NAMESPACE,
1359  SERVICE_NAMESPACE . '#searchRoles',
1360  SERVICE_STYLE,
1361  SERVICE_USE,
1362  'ILIAS searchRoles(): returns XML following role dtd with search results for given role type and search terms.'
1363  );
1364 
1365  $this->server->register(
1366  'getInstallationInfoXML',
1367  array(),
1368  array('xml' => 'xsd:string'),
1369  SERVICE_NAMESPACE,
1370  SERVICE_NAMESPACE . '#getInstallationInfoXML',
1371  SERVICE_STYLE,
1372  SERVICE_USE,
1373  'ILIAS getInstallationInfoXML(): returns XML following installation_info dtd'
1374  );
1375 
1376  $this->server->register(
1377  'getClientInfoXML',
1378  array('clientid' => 'xsd:string'),
1379  array('xml' => 'xsd:string'),
1380  SERVICE_NAMESPACE,
1381  SERVICE_NAMESPACE . '#getClientInfoXML',
1382  SERVICE_STYLE,
1383  SERVICE_USE,
1384  'ILIAS getClientInfoXML(): returns XML following installation_info dtd, contains the client the data of given client id'
1385  );
1386 
1387  $this->server->register(
1388  'getSkillCompletionDateForTriggerRefId',
1389  array('sid' => 'xsd:string',
1390  'user_id' => 'xsd:string',
1391  'ref_id' => 'xsd:string'),
1392  array('dates' => 'xsd:string'),
1393  SERVICE_NAMESPACE,
1394  SERVICE_NAMESPACE . '#getSkillCompletionDateForTriggerRefId',
1395  SERVICE_STYLE,
1396  SERVICE_USE,
1397  'ILIAS getSkillCompletionDateForTriggerRefId(). Get completion dates for skill trigger ref ids.'
1398  );
1399 
1400  $this->server->register(
1401  'checkSkillUserCertificateForTriggerRefId',
1402  array('sid' => 'xsd:string',
1403  'user_id' => 'xsd:string',
1404  'ref_id' => 'xsd:string'),
1405  array('have_certificates' => 'xsd:string'),
1406  SERVICE_NAMESPACE,
1407  SERVICE_NAMESPACE . '#checkSkillUserCertificateForTriggerRefId',
1408  SERVICE_STYLE,
1409  SERVICE_USE,
1410  'ILIAS checkSkillUserCertificateForTriggerRefId(). Check user certificates for trigger ref ids.'
1411  );
1412 
1413  $this->server->register(
1414  'getSkillTriggerOfAllCertificates',
1415  array('sid' => 'xsd:string',
1416  'user_id' => 'xsd:string'),
1417  array('certificate_triggers' => 'xsd:string'),
1418  SERVICE_NAMESPACE,
1419  SERVICE_NAMESPACE . '#getSkillTriggerOfAllCertificates',
1420  SERVICE_STYLE,
1421  SERVICE_USE,
1422  'ILIAS getSkillTriggerOfAllCertificates(). Check get all trigger with certificate for a user.'
1423  );
1424 
1425  $this->server->register(
1426  'getUserIdBySid',
1427  array('sid' => 'xsd:string'),
1428  array('usr_id' => 'xsd:int'),
1429  SERVICE_NAMESPACE,
1430  SERVICE_NAMESPACE . '#getUserIdBySid',
1431  SERVICE_STYLE,
1432  SERVICE_USE,
1433  'ILIAS getUserIdBySid(): returns an ILIAS usr_id for the given sid'
1434  );
1435 
1436  $this->server->register(
1437  'deleteExpiredDualOptInUserObjects',
1438  array('sid' => 'xsd:string',
1439  'usr_id' => 'xsd:int'),
1440  array('status' => 'xsd:boolean'),
1441  SERVICE_NAMESPACE,
1442  SERVICE_NAMESPACE . '#deleteExpiredDualOptInUserObjects',
1443  SERVICE_STYLE,
1444  SERVICE_USE,
1445  'ILIAS deleteExpiredDualOptInUserObjects(): Deletes expired user accounts caused by unconfirmed registration links in "dual opt in" registration method'
1446  );
1447 
1448 
1449  $this->server->register(
1450  'readWebLink',
1451  array('sid' => 'xsd:string', "ref_id" => 'xsd:int'),
1452  array('weblinkxml' => 'xsd:string'),
1453  SERVICE_NAMESPACE,
1454  SERVICE_NAMESPACE . '#readWebLink',
1455  SERVICE_STYLE,
1456  SERVICE_USE,
1457  'ILIAS readWebLink(): returns xml description of a weblink container.'
1458  );
1459 
1460  $this->server->register(
1461  'createWebLink',
1462  array('sid' => 'xsd:string', "target_id" => 'xsd:int', "xml" => "xsd:string"),
1463  array('refid' => 'xsd:int'),
1464  SERVICE_NAMESPACE,
1465  SERVICE_NAMESPACE . '#createWebLink',
1466  SERVICE_STYLE,
1467  SERVICE_USE,
1468  'ILIAS createWebLink(): create web link container, put it into target (ref_id) and update weblink container from xml (see ilias_weblink_4_0.dtd for details). Obj_id must not be set!'
1469  );
1470 
1471  $this->server->register(
1472  'updateWebLink',
1473  array('sid' => 'xsd:string', 'ref_id' => 'xsd:int', 'xml' => 'xsd:string'),
1474  array('success' => 'xsd:boolean'),
1475  SERVICE_NAMESPACE,
1476  SERVICE_NAMESPACE . '#updateWebLink',
1477  SERVICE_STYLE,
1478  SERVICE_USE,
1479  'ILIAS updateWebLink():update existing weblink, update weblink properties from xml (see ilias_weblink_4_0.dtd for details).'
1480  );
1481 
1482  // mcs-patch start
1483  $this->server->register(
1484  'getLearningProgressChanges',
1485  array('sid' => 'xsd:string', 'timestamp' => 'xsd:string', 'include_ref_ids' => 'xsd:boolean', 'type_filter' => 'tns:stringArray'),
1486  array('lp_data' => 'xsd:string'),
1487  SERVICE_NAMESPACE,
1488  SERVICE_NAMESPACE . '#getLearningProgressChanges',
1489  SERVICE_STYLE,
1490  SERVICE_USE,
1491  'ILIAS getLearningProgressChanges(): Get learning progress changes after a given timestamp.'
1492  );
1493  // mcs-patch end
1494 
1495 
1496 
1497  $this->server->register(
1498  'deleteProgress',
1499  array(
1500  'sid' => 'xsd:string',
1501  'ref_ids' => 'tns:intArray',
1502  'usr_ids' => 'tns:intArray',
1503  'type_filter' => 'tns:stringArray',
1504  'progress_filter' => 'tns:intArray'
1505  ),
1506  array('status' => 'xsd:boolean'),
1507  SERVICE_NAMESPACE,
1508  SERVICE_NAMESPACE . '#deleteProgress',
1509  SERVICE_STYLE,
1510  SERVICE_USE,
1511  'Delete user progress data of objects. '
1512  );
1513 
1514 
1515  $this->server->register(
1516  'getProgressInfo',
1517  array(
1518  'sid' => 'xsd:string',
1519  'ref_id' => 'xsd:int',
1520  'progress_filter' => 'tns:intArray'
1521  ),
1522  array('user_results' => 'xsd:string'),
1523  SERVICE_NAMESPACE,
1524  SERVICE_NAMESPACE . '#getProgressInfo',
1525  SERVICE_STYLE,
1526  SERVICE_USE,
1527  'Get object learning progress information'
1528  );
1529 
1530 
1531  $this->server->register(
1532  'exportDataCollectionContent',
1533  array(
1534  'sid' => 'xsd:string',
1535  'ref_id' => 'xsd:int',
1536  'table_id' => 'xsd:int',
1537  'format' => 'xsd:string',
1538  'filepath' => 'xsd:string'
1539  ),
1540  array('export_path' => 'xsd:string'),
1541  SERVICE_NAMESPACE,
1542  SERVICE_NAMESPACE . '#exportDataCollectionTableContent',
1543  SERVICE_STYLE,
1544  SERVICE_USE,
1545  'Generate DataCollectionContent Export'
1546  );
1547 
1548  $this->server->register(
1549  'processBackgroundTask',
1550  array(
1551  'sid' => 'xsd:string',
1552  'task_id' => 'xsd:int'
1553  ),
1554  array('status' => 'xsd:boolean'),
1555  SERVICE_NAMESPACE,
1556  SERVICE_NAMESPACE . '#processBackgroundTask',
1557  SERVICE_STYLE,
1558  SERVICE_USE,
1559  'Process task in background'
1560  );
1561 
1562  // If a client ID is submitted, there might be some SOAP plugins registering methods/types
1563  if (isset($_GET['client_id'])) {
1564  $this->handleSoapPlugins();
1565  }
1566 
1567  return true;
1568  }
1569 
1573  protected function handleSoapPlugins()
1574  {
1575  // Note: We need a context that does not handle authentication at this point, because this is
1576  // handled by an actual SOAP request which always contains the session ID and client
1580 
1581  global $ilPluginAdmin;
1582  $soapHook = new ilSoapHook($ilPluginAdmin);
1583  foreach ($soapHook->getWsdlTypes() as $type) {
1584  $this->server->wsdl->addComplexType(
1585  $type->getName(),
1586  $type->getTypeClass(),
1587  $type->getPhpType(),
1588  $type->getCompositor(),
1589  $type->getRestrictionBase(),
1590  $type->getElements(),
1591  $type->getAttributes(),
1592  $type->getArrayType()
1593  );
1594  }
1595  foreach ($soapHook->getSoapMethods() as $method) {
1596  $this->server->register(
1597  $method->getName(),
1598  $method->getInputParams(),
1599  $method->getOutputParams(),
1600  $method->getServiceNamespace(),
1601  $method->getServiceNamespace() . '#' . $method->getName(),
1602  $method->getServiceStyle(),
1603  $method->getServiceUse(),
1604  $method->getDocumentation()
1605  );
1606  }
1607  }
1608 }
soap_server allows the user to create a SOAP server that is capable of receiving messages and returni...
Definition: nusoap.php:2313
handleSoapPlugins()
Register any methods and types of SOAP plugins to the SOAP server.
$type
$_GET["client_id"]
const CONTEXT_SOAP_NO_AUTH
global $HTTP_RAW_POST_DATA
static initILIAS()
ilias initialisation
Class ilSoapHook.
Create styles array
The data for the language used.
static init($a_type)
Init context by type.
const CONTEXT_SOAP