34 include_once
'./webservice/soap/lib/nusoap.php';
35 include_once
'./webservice/soap/include/inc.soap_functions.php';
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;
53 $this->server->decode_utf8 =
false;
54 $this->server->class =
"ilSoapFunctions";
70 $this->server->service($HTTP_RAW_POST_DATA);
77 $this->server->configureWSDL(SERVICE_NAME,SERVICE_NAMESPACE);
87 $this->server->wsdl->addComplexType(
'intArray',
93 array(array(
'ref'=>
'SOAP-ENC:arrayType',
'wsdl:arrayType'=>
'xsd:int[]')),
96 $this->server->wsdl->addComplexType(
'stringArray',
102 array(array(
'ref'=>
'SOAP-ENC:arrayType',
'wsdl:arrayType'=>
'xsd:string[]')),
105 $this->server->wsdl->addComplexType(
'doubleArray',
111 array(array(
'ref'=>
'SOAP-ENC:arrayType',
'wsdl:arrayType'=>
'xsd:double[]')),
117 $this->server->register(
'login',
118 array(
'client' =>
'xsd:string',
119 'username' =>
'xsd:string',
120 'password' =>
'xsd:string'),
121 array(
'sid' =>
'xsd:string'),
123 SERVICE_NAMESPACE.
'#login',
126 'ILIAS login function');
129 $this->server->register(
'loginCAS',
130 array(
'client' =>
'xsd:string',
131 'PT' =>
'xsd:string',
132 'user' =>
'xsd:string'),
133 array(
'sid' =>
'xsd:string'),
135 SERVICE_NAMESPACE.
'#loginCAS',
138 'ILIAS login function via CAS');
140 $this->server->register(
'loginLDAP',
141 array(
'client' =>
'xsd:string',
142 'username' =>
'xsd:string',
143 'password' =>
'xsd:string'),
144 array(
'sid' =>
'xsd:string'),
146 SERVICE_NAMESPACE.
'#login',
149 'ILIAS login function via LDAP');
154 $this->server->register(
'logout',
155 array(
'sid' =>
'xsd:string'),
156 array(
'success' =>
'xsd:boolean'),
158 SERVICE_NAMESPACE.
'#logout',
161 'ILIAS logout function');
163 $this->server->wsdl->addComplexType(
'ilUserData',
168 array(
'usr_id' => array(
'name' =>
'usr_id',
'type' =>
'xsd:int'),
169 'login' => array(
'name' =>
'login',
'type' =>
'xsd:string'),
170 'passwd' => array(
'name' =>
'passwd',
'type' =>
'xsd:string'),
171 'firstname' => array(
'name' =>
'firstname',
'type' =>
'xsd:string'),
172 'lastname' => array(
'name' =>
'lastname',
'type' =>
'xsd:string'),
173 'title' => array(
'name' =>
'title',
'type' =>
'xsd:string'),
174 'gender' => array(
'name' =>
'gender',
'type' =>
'xsd:string'),
175 'email' => array(
'name' =>
'email',
'type' =>
'xsd:string'),
176 'institution' => array(
'name' =>
'institution',
'type' =>
'xsd:string'),
177 'street' => array(
'name' =>
'street',
'type' =>
'xsd:string'),
178 'city' => array(
'name' =>
'city',
'type' =>
'xsd:string'),
179 'zipcode' => array(
'name' =>
'zipcode',
'type' =>
'xsd:string'),
180 'country' => array(
'name' =>
'country',
'type' =>
'xsd:string'),
181 'phone_office' => array(
'name' =>
'phone_office',
'type' =>
'xsd:string'),
182 'last_login' => array(
'name' =>
'last_login',
'type' =>
'xsd:string'),
183 'last_update' => array(
'name' =>
'last_update',
'type' =>
'xsd:string'),
184 'create_date' => array(
'name' =>
'create_date',
'type' =>
'xsd:string'),
185 'hobby' => array(
'name' =>
'hobby',
'type' =>
'xsd:string'),
186 'department' => array(
'name' =>
'department',
'type' =>
'xsd:string'),
187 'phone_home' => array(
'name' =>
'phone_home',
'type' =>
'xsd:string'),
188 'phone_mobile' => array(
'name' =>
'phone_mobile',
'type' =>
'xsd:string'),
189 'fax' => array(
'name' =>
'fax',
'type' =>
'xsd:string'),
190 'time_limit_owner' => array(
'name' =>
'time_limit_owner',
'type' =>
'xsd:int'),
191 'time_limit_unlimited' => array(
'name' =>
'time_limit_unlimited',
'type' =>
'xsd:int'),
192 'time_limit_from' => array(
'name' =>
'time_limit_from',
'type' =>
'xsd:int'),
193 'time_limit_until' => array(
'name' =>
'time_limit_until',
'type' =>
'xsd:int'),
194 'time_limit_message' => array(
'name' =>
'time_limit_message',
'type' =>
'xsd:int'),
195 'referral_comment' => array(
'name' =>
'referral_comment',
'type' =>
'xsd:string'),
196 'matriculation' => array(
'name' =>
'matriculation',
'type' =>
'xsd:string'),
197 'active' => array(
'name' =>
'active',
'type' =>
'xsd:int'),
198 'accepted_agreement' => array(
'name' =>
'accepted_agreement',
'type' =>
'xsd:boolean'),
199 'approve_date' => array(
'name' =>
'approve_date',
'type' =>
'xsd:string'),
200 'user_skin' => array(
'name' =>
'user_skin',
'type' =>
'xsd:string'),
201 'user_style' => array(
'name' =>
'user_style',
'type' =>
'xsd:string'),
202 'user_language' => array(
'name' =>
'user_language',
'type' =>
'xsd:string'),
203 'import_id' => array(
'name' =>
'import_id',
'type' =>
'xsd:string')
208 $this->server->register(
'lookupUser',
209 array(
'sid' =>
'xsd:string',
210 'user_name' =>
'xsd:string'),
211 array(
'usr_id' =>
'xsd:int'),
213 SERVICE_NAMESPACE.
'#lookupUser',
216 'ILIAS lookupUser(): check if username exists. Return usr_id or 0 if lookup fails.');
220 $this->server->register(
'getUser',
221 array(
'sid' =>
'xsd:string',
222 'user_id' =>
'xsd:int'),
223 array(
'user_data' =>
'tns:ilUserData'),
225 SERVICE_NAMESPACE.
'#getUser',
228 'ILIAS getUser(): get complete set of user data.');
230 $this->server->register(
'updateUser',
231 array(
'sid' =>
'xsd:string',
232 'user_data' =>
'tns:ilUserData'),
233 array(
'success' =>
'xsd:boolean'),
235 SERVICE_NAMESPACE.
'#updateUser',
238 'ILIAS updateUser(). DEPRECATED: Use importUsers() for modifications of user data. Updates all user data. '.
239 'Use getUser(), then modify desired fields and finally start the updateUser() call.');
241 $this->server->register(
'updatePassword',
242 array(
'sid' =>
'xsd:string',
243 'user_id' =>
'xsd:int',
244 'new_password' =>
'xsd:string'),
245 array(
'success' =>
'xsd:boolean'),
247 SERVICE_NAMESPACE.
'#updatePassword',
250 'ILIAS updatePassword(). Updates password of given user. Password must be MD5 hash');
254 $this->server->register(
'addUser',
255 array(
'sid' =>
'xsd:string',
256 'user_data' =>
'tns:ilUserData',
257 'global_role_id' =>
'xsd:int'),
258 array(
'user_id' =>
'xsd:int'),
260 SERVICE_NAMESPACE.
'#addUser',
263 'ILIAS addUser() user. DEPRECATED: Since it is not possible to add new user data fields '.
264 'without breaking the backward compatability, this method is deprecated. Please use importUser() instead. '.
265 'Add new ILIAS user. Requires complete or subset of user_data structure');
268 $this->server->register(
'deleteUser',
269 array(
'sid' =>
'xsd:string',
270 'user_id' =>
'xsd:int'),
271 array(
'success' =>
'xsd:boolean'),
273 SERVICE_NAMESPACE.
'#deleteUser',
276 'ILIAS deleteUser(). Deletes all user related data (Bookmarks, Mails ...)');
279 $this->server->register(
'addCourse',
280 array(
'sid' =>
'xsd:string',
281 'target_id' =>
'xsd:int',
282 'crs_xml' =>
'xsd:string'),
283 array(
'course_id' =>
'xsd:int'),
285 SERVICE_NAMESPACE.
'#addCourse',
288 'ILIAS addCourse(). Course import. See ilias_course_0_1.dtd for details about course xml structure');
291 $this->server->register(
'deleteCourse',
292 array(
'sid' =>
'xsd:string',
293 'course_id' =>
'xsd:int'),
294 array(
'success' =>
'xsd:boolean'),
296 SERVICE_NAMESPACE.
'#deleteCourse',
299 'ILIAS deleteCourse(). Deletes a course. Delete courses are stored in "Trash" and can be undeleted in '.
300 ' the ILIAS administration. ');
302 $this->server->register(
'assignCourseMember',
303 array(
'sid' =>
'xsd:string',
304 'course_id' =>
'xsd:int',
305 'user_id' =>
'xsd:int',
306 'type' =>
'xsd:string'),
307 array(
'success' =>
'xsd:boolean'),
309 SERVICE_NAMESPACE.
'#assignCourseMember',
312 'ILIAS assignCourseMember(). Assigns an user to an existing course. Type should be "Admin", "Tutor" or "Member"');
315 $this->server->register(
'excludeCourseMember',
316 array(
'sid' =>
'xsd:string',
317 'course_id' =>
'xsd:int',
318 'user_id' =>
'xsd:int'),
319 array(
'success' =>
'xsd:boolean'),
321 SERVICE_NAMESPACE.
'#excludeCourseMember',
324 'ILIAS excludeCourseMember(). Excludes an user from an existing course.');
327 $this->server->register(
'isAssignedToCourse',
328 array(
'sid' =>
'xsd:string',
329 'course_id' =>
'xsd:int',
330 'user_id' =>
'xsd:int'),
331 array(
'role' =>
'xsd:int'),
333 SERVICE_NAMESPACE.
'#isAssignedToCourse',
336 'ILIAS isAssignedToCourse(). Checks whether an user is assigned to a given course. '.
337 'Returns 0 => not assigned, 1 => course admin, 2 => course member or 3 => course tutor');
340 $this->server->register(
'getCourseXML',
341 array(
'sid' =>
'xsd:string',
342 'course_id' =>
'xsd:int'),
343 array(
'xml' =>
'xsd:string'),
345 SERVICE_NAMESPACE.
'#getCourseXML',
348 'ILIAS getCourseXML(). Get a xml description of a specific course.');
351 $this->server->register(
'updateCourse',
352 array(
'sid' =>
'xsd:string',
353 'course_id' =>
'xsd:int',
354 'xml' =>
'xsd:string'),
355 array(
'success' =>
'xsd:boolean'),
357 SERVICE_NAMESPACE.
'#updateCourse',
360 'ILIAS updateCourse(). Update course settings, assigned members, tutors, administrators with a '.
361 'given xml description');
364 $this->server->register(
'getObjIdByImportId',
365 array(
'sid' =>
'xsd:string',
366 'import_id' =>
'xsd:string'),
367 array(
'obj_id' =>
'xsd:int'),
369 SERVICE_NAMESPACE.
'#getCourseIdByImportId',
372 'ILIAS getObjIdByImportId(). Get the obj_id of an ILIAS obj by a given import id.');
376 $this->server->register(
'getRefIdsByImportId',
377 array(
'sid' =>
'xsd:string',
378 'import_id' =>
'xsd:string'),
379 array(
'ref_ids' =>
'tns:intArray'),
381 SERVICE_NAMESPACE.
'#getRefIdsByImportId',
384 'ILIAS getRefIdsByImportId(). Get all reference ids by a given import id.');
387 $this->server->register(
'getRefIdsByObjId',
388 array(
'sid' =>
'xsd:string',
389 'obj_id' =>
'xsd:string'),
390 array(
'ref_ids' =>
'tns:intArray'),
392 SERVICE_NAMESPACE.
'#getRefIdsByObjId',
395 'ILIAS getRefIdsByObjId(). Get all reference ids by a given object id.');
398 $this->server->register(
'getObjectByReference',
399 array(
'sid' =>
'xsd:string',
400 'reference_id' =>
'xsd:int',
401 'user_id' =>
'xsd:int'),
402 array(
'object_xml' =>
'xsd:string'),
404 SERVICE_NAMESPACE.
'#getObjectByReference',
407 'ILIAS getObjectByReference(). Get XML-description of an ILIAS object. If a user id is given, '.
408 'this methods also checks the permissions of that user on the object.');
410 $this->server->register(
'getObjectsByTitle',
411 array(
'sid' =>
'xsd:string',
412 'title' =>
'xsd:string',
413 'user_id' =>
'xsd:int'),
414 array(
'object_xml' =>
'xsd:string'),
416 SERVICE_NAMESPACE.
'#getObjectsByTitle',
419 'ILIAS getObjectsByTitle(). Get XML-description of an ILIAS object with given title. '.
420 'If a user id is given this method also checks the permissions of that user on the object.');
422 $this->server->register(
'searchObjects',
423 array(
'sid' =>
'xsd:string',
424 'types' =>
'tns:stringArray',
425 'key' =>
'xsd:string',
426 'combination' =>
'xsd:string',
427 'user_id' =>
'xsd:int'),
428 array(
'object_xml' =>
'xsd:string'),
430 SERVICE_NAMESPACE.
'#searchObjects',
433 'ILIAS searchObjects(): Searches for objects. Key is within "title" or "description" '.
434 'Typical calls are searchObject($sid,array("lm","crs"),"\"this and that\"","and"); '.
435 ' If an optional user id is given, this methods also return the permissions for that user '.
436 'on the found objects');
438 $this->server->register(
'getTreeChilds',
439 array(
'sid' =>
'xsd:string',
440 'ref_id' =>
'xsd:int',
441 'types' =>
'tns:stringArray',
442 'user_id' =>
'xsd:int'),
443 array(
'object_xml' =>
'xsd:string'),
445 SERVICE_NAMESPACE.
'#getTreeChilds',
448 'ILIAS getTreeChilds(): Get all child objects of a given object.'.
449 'Choose array of types to filter the output. Choose empty type array to receive all object types');
451 $this->server->register(
'getXMLTree',
452 array(
'sid' =>
'xsd:string',
453 'ref_id' =>
'xsd:int',
454 'types' =>
'tns:stringArray',
455 'user_id' =>
'xsd:int'),
456 array(
'object_xml' =>
'xsd:string'),
458 SERVICE_NAMESPACE.
'#getXMLTree',
461 'ILIAS getXMLTree(): Returns a xml stream with the subtree objects.');
465 $this->server->register(
'addObject',
466 array(
'sid' =>
'xsd:string',
467 'target_id' =>
'xsd:int',
468 'object_xml' =>
'xsd:string'),
469 array(
'ref_id' =>
'xsd:int'),
471 SERVICE_NAMESPACE.
'#addObject',
474 'ILIAS addObject. Create new object based on xml description under a given node '.
475 '("category,course,group or folder). Return created reference id of the new object.' );
477 $this->server->register(
'updateObjects',
478 array(
'sid' =>
'xsd:string',
479 'object_xml' =>
'xsd:string'),
480 array(
'success' =>
'xsd:boolean'),
482 SERVICE_NAMESPACE.
'#updateObjects',
485 'ILIAS updateObjects. Update object data (title,description,owner)');
487 $this->server->register(
'addReference',
488 array(
'sid' =>
'xsd:string',
489 'source_id' =>
'xsd:int',
490 'target_id' =>
'xsd:int'),
491 array(
'ref_id' =>
'xsd:int'),
493 SERVICE_NAMESPACE.
'#addReference',
496 'ILIAS addReference. Create new link of given object to new object. Return the new reference id');
498 $this->server->register(
'deleteObject',
499 array(
'sid' =>
'xsd:string',
500 'reference_id' =>
'xsd:int'),
501 array(
'success' =>
'xsd:boolean'),
503 SERVICE_NAMESPACE.
'#deleteObject',
506 'ILIAS deleteObject. Stores object in trash. If multiple references exist, only the reference is deleted ');
509 $this->server->register(
'removeFromSystemByImportId',
510 array(
'sid' =>
'xsd:string',
511 'import_id' =>
'xsd:string'),
512 array(
'success' =>
'xsd:boolean'),
514 SERVICE_NAMESPACE.
'#removeFromSystemByImportId',
517 'ILIAS removeFromSystemByImportId(). Removes an object identified by its import id permanently from the '.
518 'system. All data will be deleted. There will be no possibility to restore it from the trash. Do not use '.
519 'this function for deleting roles or users. Use deleteUser() or deleteRole() instead.');
521 $this->server->register(
'addUserRoleEntry',
522 array(
'sid' =>
'xsd:string',
523 'user_id' =>
'xsd:int',
524 'role_id' =>
'xsd:int'),
525 array(
'success' =>
'xsd:boolean'),
527 SERVICE_NAMESPACE.
'#addUserRoleEntry',
530 'ILIAS addUserRoleEntry. Assign user to role.');
532 $this->server->register(
'deleteUserRoleEntry',
533 array(
'sid' =>
'xsd:string',
534 'user_id' =>
'xsd:int',
535 'role_id' =>
'xsd:int'),
536 array(
'success' =>
'xsd:boolean'),
538 SERVICE_NAMESPACE.
'#deleteUserRoleEntry',
541 'ILIAS deleteUserRoleEntry. Deassign user from role.');
545 $this->server->wsdl->addComplexType(
'ilOperation',
550 array(
'ops_id' => array(
'name' =>
'ops_id',
551 'type' =>
'xsd:int'),
552 'operation' => array(
'name' =>
'operation',
553 'type' =>
'xsd:string'),
554 'description' => array(
'name' =>
'description',
555 'type' =>
'xsd:string')));
557 $this->server->wsdl->addComplexType(
'ilOperations',
563 array(array(
'ref' =>
'SOAP-ENC:arrayType',
564 'wsdl:arrayType' =>
'tns:ilOperation[]')),
566 $this->server->register(
'getOperations',
567 array(
'sid' =>
'xsd:string'),
568 array(
'operations' =>
'tns:ilOperations'),
570 SERVICE_NAMESPACE.
'#getOperations',
573 'ILIAS getOperations(): get complete set of RBAC operations.');
575 $this->server->register(
'revokePermissions',
576 array(
'sid' =>
'xsd:string',
577 'ref_id' =>
'xsd:int',
578 'role_id' =>
'xsd:int'),
579 array(
'success' =>
'xsd:boolean'),
581 SERVICE_NAMESPACE.
'#revokePermissions',
584 'ILIAS revokePermissions(): Revoke all permissions for a specific role on an object.');
586 $this->server->wsdl->addComplexType(
'ilOperationIds',
592 array(array(
'ref' =>
'SOAP-ENC:arrayType',
593 'wsdl:arrayType' =>
'xsd:int[]')),
596 $this->server->register(
'grantPermissions',
597 array(
'sid' =>
'xsd:string',
598 'ref_id' =>
'xsd:int',
599 'role_id' =>
'xsd:int',
600 'operations' =>
'tns:intArray'),
601 array(
'success' =>
'xsd:boolean'),
603 SERVICE_NAMESPACE.
'#grantPermissions',
606 'ILIAS grantPermissions(): Grant permissions for a specific role on an object. '.
607 '(Substitutes existing permission settings)');
609 $this->server->register(
'getLocalRoles',
610 array(
'sid' =>
'xsd:string',
611 'ref_id' =>
'xsd:int'),
612 array(
'role_xml' =>
'xsd:string'),
614 SERVICE_NAMESPACE.
'#getLocalRoles',
617 'ILIAS getLocalRoles(): Get all local roles assigned to an specific object.');
619 $this->server->register(
'getUserRoles',
620 array(
'sid' =>
'xsd:string',
621 'user_id' =>
'xsd:int'),
622 array(
'role_xml' =>
'xsd:string'),
624 SERVICE_NAMESPACE.
'#getLocalRoles',
627 'ILIAS getUserRoles(): Get all local roles assigned to an specific user. ');
629 $this->server->register(
'addRole',
630 array(
'sid' =>
'xsd:string',
631 'target_id' =>
'xsd:int',
632 'obj_xml' =>
'xsd:string'),
633 array(
'role_ids' =>
'tns:intArray'),
635 SERVICE_NAMESPACE.
'#addRole',
638 'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS '.
639 'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created.');
641 $this->server->register(
'deleteRole',
642 array(
'sid' =>
'xsd:string',
643 'role_id' =>
'xsd:int'),
644 array(
'success' =>
'xsd:boolean'),
646 SERVICE_NAMESPACE.
'#deleteRole',
649 'ILIAS deleteRole(): Deletes an role and all user assignments. Fails if it is the last role of an user');
651 $this->server->register(
'addRoleFromTemplate',
652 array(
'sid' =>
'xsd:string',
653 'target_id' =>
'xsd:int',
654 'obj_xml' =>
'xsd:string',
655 'role_template_id' =>
'xsd:int'),
656 array(
'role_ids' =>
'tns:intArray'),
658 SERVICE_NAMESPACE.
'#addRole',
661 'ILIAS addRole(): Creates new role under given node. "target_id" is the reference id of an ILIAS '.
662 'ILIAS object. E.g ref_id of crs,grp. If no role folder exists, a new role folder will be created. '.
663 'In addition to addRole the template permissions will be copied from the given role template');
665 $this->server->register(
'getObjectTreeOperations',
666 array(
'sid' =>
'xsd:string',
667 'ref_id' =>
'xsd:int',
668 'user_id' =>
'xsd:int'),
669 array(
'operations' =>
'tns:ilOperations'),
671 SERVICE_NAMESPACE.
'#getPermissionsForObject',
674 'ILIAS getObjectTreeOperations(): Get all granted permissions for all references of '.
675 'an object for a specific user. Returns array of granted operations or empty array');
677 $this->server->register(
'addGroup',
678 array(
'sid' =>
'xsd:string',
679 'target_id' =>
'xsd:int',
680 'group_xml' =>
'xsd:string'),
681 array(
'ref_id' =>
'xsd:int'),
683 SERVICE_NAMESPACE.
'#addGroup',
686 'ILIAS addGroup(): Add grop according to valid group XML '.
687 '@See ilias_group_0_1.dtd');
689 $this->server->register(
'groupExists',
690 array(
'sid' =>
'xsd:string',
691 'title' =>
'xsd:string'),
692 array(
'exists' =>
'xsd:boolean'),
694 SERVICE_NAMESPACE.
'#groupExists',
697 'ILIAS addGroup(): Check if group with given name exists. ');
701 $this->server->register(
'getGroup',
702 array(
'sid' =>
'xsd:string',
703 'ref_id' =>
'xsd:int'),
704 array(
'group_xml' =>
'xsd:string'),
706 SERVICE_NAMESPACE.
'#getGroup',
709 'ILIAS getGroup(): get xml description of grouip with given reference id.');
712 $this->server->register(
'assignGroupMember',
713 array(
'sid' =>
'xsd:string',
714 'group_id' =>
'xsd:int',
715 'user_id' =>
'xsd:int',
716 'type' =>
'xsd:string'),
717 array(
'success' =>
'xsd:boolean'),
719 SERVICE_NAMESPACE.
'#assignGroupMember',
722 'ILIAS assignGroupMember(). Assigns an user to an existing group. Type should be "Admin","Member"');
725 $this->server->register(
'excludeGroupMember',
726 array(
'sid' =>
'xsd:string',
727 'group_id' =>
'xsd:int',
728 'user_id' =>
'xsd:int'),
729 array(
'success' =>
'xsd:boolean'),
731 SERVICE_NAMESPACE.
'#excludeGroupMember',
734 'ILIAS excludeGroupMember(). Excludes an user from an existing group.');
737 $this->server->register(
'isAssignedToGroup',
738 array(
'sid' =>
'xsd:string',
739 'group_id' =>
'xsd:int',
740 'user_id' =>
'xsd:int'),
741 array(
'role' =>
'xsd:int'),
743 SERVICE_NAMESPACE.
'#isAssignedToGroup',
746 'ILIAS isAssignedToGroup(). Checks whether an user is assigned to a given group. '.
747 'Returns 0 => not assigned, 1 => group admin, 2 => group member');
752 $this->server->register(
'sendMail',
753 array(
'sid' =>
'xsd:string',
754 'rcp_to' =>
'xsd:string',
755 'rcp_cc' =>
'xsd:string',
756 'rcp_bcc' =>
'xsd:string',
757 'sender' =>
'xsd:string',
758 'subject' =>
'xsd:string',
759 'message' =>
'xsd:string',
760 'attachments' =>
'xsd:string'),
761 array(
'status' =>
'xsd:boolean'),
763 SERVICE_NAMESPACE.
'#sendMail',
766 'ILIAS sendMail(): Send mime mails according to xml description. Only for internal usage '.
767 'Syntax, parameters may change in future releases');
769 $this->server->register(
'ilClone',
770 array(
'sid' =>
'xsd:string',
'copy_identifier' =>
'xsd:int'),
771 array(
'new_ref_id' =>
'xsd:int'),
773 SERVICE_NAMESPACE.
'#ilClone',
776 'ILIAS ilClone(): Only for internal usage.'.
777 'Syntax, parameters may change in future releases. ');
779 $this->server->register(
'handleECSTasks',
780 array(
'sid' =>
'xsd:string'),
781 array(
'success' =>
'xsd:boolean'),
783 SERVICE_NAMESPACE.
'#handleECSTasks',
786 'ILIAS handleECSTasks(): Only for internal usage.'.
787 'Syntax, parameters may change in future releases. ');
789 $this->server->register(
'ilCloneDependencies',
790 array(
'sid' =>
'xsd:string',
'copy_identifier' =>
'xsd:int'),
791 array(
'success' =>
'xsd:boolean'),
793 SERVICE_NAMESPACE.
'#ilCloneDependencies',
796 'ILIAS ilCloneDependencies(): Only for internal usage.'.
797 'Syntax, parameters may change in future releases. ');
799 $this->server->register(
'saveQuestionResult',
800 array(
'sid' =>
'xsd:string',
801 'user_id' =>
'xsd:int',
802 'test_id' =>
'xsd:int',
803 'question_id' =>
'xsd:int',
805 'solution' =>
'tns:stringArray'),
806 array(
'status' =>
'xsd:boolean'),
808 SERVICE_NAMESPACE.
'#saveQuestionResult',
811 'ILIAS saveQuesionResult: Typically called from an external assessment question to save the user input. DEPRECATED since ILIAS 3.9');
813 $this->server->register(
'saveQuestion',
814 array(
'sid' =>
'xsd:string',
815 'active_id' =>
'xsd:long',
816 'question_id' =>
'xsd:long',
818 'solution' =>
'tns:stringArray'),
819 array(
'status' =>
'xsd:boolean'),
821 SERVICE_NAMESPACE.
'#saveQuestion',
824 '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.');
826 $this->server->register(
'saveQuestionSolution',
827 array(
'sid' =>
'xsd:string',
828 'active_id' =>
'xsd:long',
829 'question_id' =>
'xsd:long',
831 'solution' =>
'xsd:string'),
832 array(
'status' =>
'xsd:string'),
834 SERVICE_NAMESPACE.
'#saveQuestionSolution',
837 '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 <values><value>VALUE</value><value>VALUE</value><points>POINTS</points>...</values> where the triplet (value,value,points) can repeat n times. The result string is either TRUE or it contains an error message.');
839 $this->server->register(
'getQuestionSolution',
840 array(
'sid' =>
'xsd:string',
841 'active_id' =>
'xsd:long',
842 'question_id' =>
'xsd:int',
843 'pass' =>
'xsd:int'),
844 array(
'solution' =>
'tns:stringArray'),
846 SERVICE_NAMESPACE.
'#getQuestionSolution',
849 'ILIAS getQuestionSolution: Typically called from external assessment questions to retrieve the previous input of a user.');
851 $this->server->register(
'getTestUserData',
852 array(
'sid' =>
'xsd:string',
853 'active_id' =>
'xsd:long'),
854 array(
'userdata' =>
'tns:stringArray'),
856 SERVICE_NAMESPACE.
'#getTestUserData',
859 '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.');
861 $this->server->register(
'getPositionOfQuestion',
862 array(
'sid' =>
'xsd:string',
863 'active_id' =>
'xsd:long',
864 'question_id' =>
'xsd:int',
865 'pass' =>
'xsd:int'),
866 array(
'position' =>
'xsd:int'),
868 SERVICE_NAMESPACE.
'#getPositionOfQuestion',
871 'ILIAS getPositionOfQuestion: Returns the position of a given question for a given user in a given test pass.');
873 $this->server->register(
'getPreviousReachedPoints',
874 array(
'sid' =>
'xsd:string',
875 'active_id' =>
'xsd:long',
876 'question_id' =>
'xsd:int',
877 'pass' =>
'xsd:int'),
878 array(
'position' =>
'tns:doubleArray'),
880 SERVICE_NAMESPACE.
'#getPreviousReachedPoints',
883 'ILIAS getPreviousReachedPoints: Returns an array of reached points for the previous questions in a given test pass.');
885 $this->server->register(
'getNrOfQuestionsInPass',
886 array(
'sid' =>
'xsd:string',
887 'active_id' =>
'xsd:long',
888 'pass' =>
'xsd:int'),
889 array(
'count' =>
'xsd:int'),
891 SERVICE_NAMESPACE.
'#getNrOfQuestionsInPass',
894 'ILIAS getNrOfQuestionsInPass: Returns the question count for a given test user in a given pass.');
896 $this->server->register(
'getStructureObjects',
897 array(
'sid' =>
'xsd:string',
898 'ref_id' =>
'xsd:int'),
899 array(
'xml' =>
'xsd:string'),
901 SERVICE_NAMESPACE.
'#getStructureObjects',
904 'ILIAS getStructureObjects: delivers structure of content objects like learning modules (chapters/pages) or glossary (terms)');
907 $this->server->register(
'importUsers',
908 array(
'sid' =>
'xsd:string',
909 'folder_id' =>
'xsd:int',
910 'usr_xml' =>
'xsd:string',
911 'conflict_rule' =>
'xsd:int',
912 'send_account_mail' =>
'xsd:int'),
913 array(
'protocol' =>
'xsd:string'),
915 SERVICE_NAMESPACE.
'#importUsers',
918 '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');
920 $this->server->register(
'getRoles',
921 array(
'sid' =>
'xsd:string',
922 'role_type' =>
'xsd:string',
923 'id' =>
'xsd:string'),
924 array(
'role_xml' =>
'xsd:string'),
926 SERVICE_NAMESPACE.
'#getRoles',
929 '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');
931 $this->server->register(
'getUsersForContainer',
932 array(
'sid' =>
'xsd:string',
933 'ref_id' =>
'xsd:int',
934 'attach_roles' =>
'xsd:int',
935 'active' =>
'xsd:int'),
936 array(
'user_xml' =>
'xsd:string'),
938 SERVICE_NAMESPACE.
'#getUsersForContainer',
941 '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');
943 $this->server->register(
'getUsersForRole',
944 array(
'sid' =>
'xsd:string',
945 'role_id' =>
'xsd:int',
946 'attach_roles' =>
'xsd:int',
947 'active' =>
'xsd:int'),
948 array(
'user_xml' =>
'xsd:string'),
950 SERVICE_NAMESPACE.
'#getUsersForRole',
953 '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');
955 $this->server->register(
'searchUser',
956 array(
'sid' =>
'xsd:string',
957 'key_fields' =>
'tns:stringArray',
958 'query_operator' =>
'xsd:string',
959 'key_values' =>
'tns:stringArray',
960 'attach_roles' =>
'xsd:int',
961 'active' =>
'xsd:int'),
963 array(
'user_xml' =>
'xsd:string'),
965 SERVICE_NAMESPACE.
'#searchUsers',
968 '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');
972 $this->server->register(
'hasNewMail',
973 array(
'sid' =>
'xsd:string'),
974 array(
'status' =>
'xsd:boolean'),
976 SERVICE_NAMESPACE.
'#hasNewMail',
979 'ILIAS hasNewMail(): Checks whether the current authenticated user has a new mail.');
981 $this->server->register(
'getNIC',
982 array(
'sid' =>
'xsd:string'),
983 array(
'xmlresultset' =>
'xsd:string'),
985 SERVICE_NAMESPACE.
'#getNIC',
988 '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');
990 $this->server->register(
'getExerciseXML',
991 array(
'sid' =>
'xsd:string',
"ref_id" =>
'xsd:int',
"attachment_mode" =>
"xsd:int"),
992 array(
'exercisexml' =>
'xsd:string'),
994 SERVICE_NAMESPACE.
'#getExerciseXML',
997 'ILIAS getExerciseXML(): returns xml description of exercise. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)');
999 $this->server->register(
'addExercise',
1000 array(
'sid' =>
'xsd:string',
"target_id" =>
'xsd:int',
"xml" =>
"xsd:string"),
1001 array(
'refid' =>
'xsd:int'),
1003 SERVICE_NAMESPACE.
'#addExercise',
1006 '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!');
1008 $this->server->register(
'updateExercise',
1009 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'xml' =>
'xsd:string'),
1010 array(
'success' =>
'xsd:boolean'),
1012 SERVICE_NAMESPACE.
'#updateExercise',
1015 '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.!');
1017 $this->server->register(
'getFileXML',
1018 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'attachment_mode' =>
'xsd:int'),
1019 array(
'filexml' =>
'xsd:string'),
1021 SERVICE_NAMESPACE.
'#getFileXML',
1024 'ILIAS getFileXML(): returns xml description of file. Attachment mode: 0 - no file contents, 1 - plain content (base64encoded), 2 zlib + base64, 3 gzip + base64)');
1026 $this->server->register(
'addFile',
1027 array(
'sid' =>
'xsd:string',
'target_id' =>
'xsd:int',
'xml' =>
'xsd:string'),
1028 array(
'refid' =>
'xsd:int'),
1030 SERVICE_NAMESPACE.
'#addFile',
1033 '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!');
1035 $this->server->register(
'updateFile',
1036 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'xml' =>
'xsd:string'),
1037 array(
'success' =>
'xsd:boolean'),
1039 SERVICE_NAMESPACE.
'#updateFile',
1042 '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.!');
1045 $this->server->register(
'getUserXML',
1046 array(
'sid' =>
'xsd:string',
'user_ids' =>
'tns:intArray',
'attach_roles' =>
'xsd:int'),
1047 array(
'xml' =>
'xsd:string'),
1049 SERVICE_NAMESPACE.
'#resolveUsers',
1052 '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');
1056 $this->server->register(
'getObjIdsByRefIds',
1057 array(
'sid' =>
'xsd:string',
1058 'ref_ids' =>
'tns:intArray'),
1059 array(
'obj_ids' =>
'tns:intArray'),
1061 SERVICE_NAMESPACE.
'#getRefIdsByImportId',
1064 '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');
1066 $this->server->register(
'updateGroup',
1067 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'xml' =>
'xsd:string'),
1068 array(
'success' =>
'xsd:boolean'),
1070 SERVICE_NAMESPACE.
'#updateGroup',
1073 'ILIAS updateGroup(): update existing group using ref id and group xml (see DTD).');
1077 $this->server->register(
'getIMSManifestXML',
1078 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int'),
1079 array(
'xml' =>
'xsd:string'),
1081 SERVICE_NAMESPACE.
'#getIMSManifestXML',
1084 'ILIAS getIMSManifestXML(): returns xml of ims manifest file (scorm learning module) referred by refid');
1086 $this->server->register(
'hasSCORMCertificate',
1087 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'usr_id' =>
'xsd:int'),
1088 array(
'success' =>
'xsd:boolean'),
1090 SERVICE_NAMESPACE.
'#hasSCORMCertificate',
1093 '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');
1095 $this->server->register(
'getSCORMCompletionStatus',
1096 array(
'sid' =>
'xsd:string',
'usr_id' =>
'xsd:int',
'ref_id' =>
'xsd:int'),
1097 array(
'status' =>
'xsd:string'),
1099 SERVICE_NAMESPACE.
'#getSCORMCompletionStatus',
1102 'ILIAS getSCORMCompletionStatus(): returns a completion status of a scorm module');
1104 $this->server->register(
'copyObject',
1105 array(
'sid' =>
'xsd:string',
'xml' =>
'xsd:string'),
1106 array(
'xml' =>
'xsd:int'),
1108 SERVICE_NAMESPACE.
'#copyObject',
1111 'ILIAS copyObject(): returns reference of copy, if copy is created directly, or the ref id of the target if copy is in progress.');
1113 $this->server->register(
'moveObject',
1114 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'target_id' =>
'xsd:int'),
1115 array(
'result' =>
'xsd:boolean'),
1117 SERVICE_NAMESPACE.
'#moveObject',
1120 'ILIAS moveObject(): returns true, if object with refid could be successfully moved to target id, other it raises an error.');
1123 $this->server->register (
'getTestResults',
1124 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int',
'sum_only' =>
'xsd:boolean'),
1125 array(
'xml' =>
'xsd:string'),
1127 SERVICE_NAMESPACE.
'#getTestResults',
1130 'ILIAS getTestResults(): returns XMLResultSet with
1131 sum only = true: user_id, login, firstname, lastname, matriculation, maximum points, received points
1132 sum only = false: user_id, login, firstname, lastname, matriculation, question id, question title, question points, received points');
1134 $this->server->register (
'getTestIdByObjId',
1135 array(
'sid' =>
'xsd:string',
'test_obj_id' =>
'xsd:int'),
1136 array(
'test_id' =>
'xsd:int'),
1138 SERVICE_NAMESPACE.
'#getTestIdByObjId',
1141 'ILIAS getTestIdByObjId(): returns test ID for test with object ID test_obj_id');
1143 $this->server->register (
'getTestRunDates',
1144 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int'),
1145 array(
'dates' =>
'tns:stringArray'),
1147 SERVICE_NAMESPACE.
'#getTestRunDates',
1150 'ILIAS getTestRunDates(): returns array of YYYY-MM-DD date strings for all dates that have archived runs of the test with object ID obj_id');
1152 $this->server->register(
'packageTestRun',
1153 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int',
'date' =>
'xsd:string'),
1154 array(
'success' =>
'xsd:boolean'),
1156 SERVICE_NAMESPACE.
'#packageTestRun',
1159 'ILIAS getTestRunDates(): packages archived run designated by YYYY-MM-DD string date. Return TRUE iff successful.');
1161 $this->server->register (
'getTestRunPackageDates',
1162 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int'),
1163 array(
'dates' =>
'tns:stringArray'),
1165 SERVICE_NAMESPACE.
'#getTestRunPackageDates',
1168 'ILIAS getTestRunPackageDates(): returns array of YYYY-MM-DD date strings for all dates that have ZIP packages of archive runs of the test with object ID obj_id');
1170 $this->server->register (
'fetchTestRunPackage',
1171 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int',
'date' =>
'xsd:string'),
1172 array(
'zipfile' =>
'xsd:string'),
1174 SERVICE_NAMESPACE.
'#fetchTestRunPackage',
1177 'ILIAS fetchTestRunPackage(): if the test with object ID obj_id has a run package for the YYYY-MM-DD date specified in date, return the ZIP file as a base64-encoded string');
1179 $this->server->register(
'deleteTestRunPackage',
1180 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int',
'date' =>
'xsd:string'),
1181 array(
'success' =>
'xsd:boolean'),
1183 SERVICE_NAMESPACE.
'#deleteTestRunPackage',
1186 'ILIAS deleteTestRunPackage(): if the test with object ID obj_id has a run package for the YYYY-MM-DD date specified in date, delete it. Return TRUE iff successful');
1188 $this->server->register(
'obliterateTestRun',
1189 array(
'sid' =>
'xsd:string',
'obj_id' =>
'xsd:int',
'date' =>
'xsd:string'),
1190 array(
'success' =>
'xsd:boolean'),
1192 SERVICE_NAMESPACE.
'#obliterateTestRun',
1195 'ILIAS obliterateTestRun(): if the test with object ID obj_id has an archived run for the YYYY-MM-DD date specified in date, remove all archival traces of it. Return TRUE iff successful');
1198 $this->server->register (
'getCoursesForUser',
1199 array(
'sid' =>
'xsd:string',
'parameters' =>
'xsd:string'),
1200 array(
'xml' =>
'xsd:string'),
1202 SERVICE_NAMESPACE.
'#getCoursesForUser',
1205 '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.');
1207 $this->server->register (
'getGroupsForUser',
1208 array(
'sid' =>
'xsd:string',
'parameters' =>
'xsd:string'),
1209 array(
'xml' =>
'xsd:string'),
1211 SERVICE_NAMESPACE.
'#getGroupsForUser',
1214 '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.');
1216 $this->server->register (
'getPathForRefId',
1217 array(
'sid' =>
'xsd:string',
'ref_id' =>
'xsd:int'),
1218 array(
'xml' =>
'xsd:string'),
1220 SERVICE_NAMESPACE.
'#getPathForRefId',
1223 'ILIAS getPathForRefId(): returns XMLResultSet with columns ref_id, type and title.');
1225 $this->server->register (
'searchRoles',
1226 array(
'sid' =>
'xsd:string',
'key' =>
'xsd:string',
'combination' =>
'xsd:string',
'role_type' =>
'xsd:string'),
1227 array(
'xml' =>
'xsd:string'),
1229 SERVICE_NAMESPACE.
'#searchRoles',
1232 'ILIAS searchRoles(): returns XML following role dtd with search results for given role type and search terms.');
1234 $this->server->register (
'getInstallationInfoXML',
1236 array(
'xml' =>
'xsd:string'),
1238 SERVICE_NAMESPACE.
'#getInstallationInfoXML',
1241 'ILIAS getInstallationInfoXML(): returns XML following installation_info dtd');
1243 $this->server->register (
'getClientInfoXML',
1244 array(
'clientid' =>
'xsd:string'),
1245 array(
'xml' =>
'xsd:string'),
1247 SERVICE_NAMESPACE.
'#getClientInfoXML',
1250 'ILIAS getClientInfoXML(): returns XML following installation_info dtd, contains the client the data of given client id');
1252 $this->server->register (
'getUserIdBySid',
1253 array(
'sid' =>
'xsd:string'),
1254 array(
'usr_id' =>
'xsd:int'),
1256 SERVICE_NAMESPACE.
'#getUserIdBySid',
1259 'ILIAS getUserIdBySid(): returns an ILIAS usr_id for the given sid');
1261 $this->server->register(
'deleteExpiredDualOptInUserObjects',
1262 array(
'sid' =>
'xsd:string',
1263 'usr_id' =>
'xsd:int'),
1264 array(
'status' =>
'xsd:boolean'),
1266 SERVICE_NAMESPACE.
'#deleteExpiredDualOptInUserObjects',
1269 'ILIAS deleteExpiredDualOptInUserObjects(): Deletes expired user accounts caused by unconfirmed registration links in "dual opt in" registration method');