1<?php
2
3require_once('./Services/Init/classes/class.ilInitialisation.php');
4require_once('./Services/WebServices/SOAP/classes/class.ilSoapHook.php');
5
6/*
7 +-----------------------------------------------------------------------------+
8 | ILIAS open source                                                           |
9 +-----------------------------------------------------------------------------+
10 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne            |
11 |                                                                             |
12 | This program is free software; you can redistribute it and/or               |
13 | modify it under the terms of the GNU General Public License                 |
14 | as published by the Free Software Foundation; either version 2              |
15 | of the License, or (at your option) any later version.                      |
16 |                                                                             |
17 | This program is distributed in the hope that it will be useful,             |
18 | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
20 | GNU General Public License for more details.                                |
21 |                                                                             |
22 | You should have received a copy of the GNU General Public License           |
23 | along with this program; if not, write to the Free Software                 |
24 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
25 +-----------------------------------------------------------------------------+
26 */
27use ILIAS\BackgroundTasks\Implementation\TaskManager\AsyncTaskManager;
28
29/**
30 * soap server
31 *
32 * @author Stefan Meyer <meyer@leifos.com>
33 * @version $Id$
34 *
35 * @package ilias
36 */
37
38class ilSoapFunctions
39{
40
41    // These functions are wrappers for soap, since it cannot register methods inside classes
42
43    // USER ADMINISTRATION
44    public static function login($client, $username, $password)
45    {
46        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
47
48        $sua = new ilSoapUserAdministration();
49
50        return $sua->login($client, $username, $password);
51    }
52
53    public static function loginCAS($client, $PT, $user)
54    {
55        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
56
57        $sua = new ilSoapUserAdministration();
58
59        return $sua->loginCAS($client, $PT, $user);
60    }
61
62    public static function loginLDAP($client, $username, $password)
63    {
64        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
65
66        $sua = new ilSoapUserAdministration();
67
68        return $sua->loginLDAP($client, $username, $password);
69    }
70
71    /**
72     * @deprecated
73     */
74    public static function loginStudipUser($sid, $user_id)
75    {
76        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
77
78        $sua = new ilSoapUserAdministration();
79
80        return $sua->loginStudipUser($sid, $user_id);
81    }
82
83
84    public static function logout($sid)
85    {
86        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
87
88        $sua = new ilSoapUserAdministration();
89
90        return $sua->logout($sid);
91    }
92    public static function lookupUser($sid, $user_name)
93    {
94        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
95
96        $sua = new ilSoapUserAdministration();
97
98        return $sua->lookupUser($sid, $user_name);
99    }
100
101    public static function getUser($sid, $user_id)
102    {
103        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
104
105        $sua = new ilSoapUserAdministration();
106
107        return $sua->getUser($sid, $user_id);
108    }
109
110
111
112    /**
113     */
114    public static function deleteUser($sid, $user_id)
115    {
116        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
117
118        $sua = new ilSoapUserAdministration();
119
120        return $sua->deleteUser($sid, $user_id);
121    }
122
123
124    // COURSE ADMINSTRATION
125    public static function addCourse($sid, $target_id, $crs_xml)
126    {
127        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
128
129        $sca = new ilSoapCourseAdministration();
130
131        return $sca->addCourse($sid, $target_id, $crs_xml);
132    }
133    public static function deleteCourse($sid, $course_id)
134    {
135        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
136
137        $sca = new ilSoapCourseAdministration();
138
139        return $sca->deleteCourse($sid, $course_id);
140    }
141    public static function assignCourseMember($sid, $course_id, $user_id, $type)
142    {
143        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
144
145        $sca = new ilSoapCourseAdministration();
146
147        return $sca->assignCourseMember($sid, $course_id, $user_id, $type);
148    }
149    public static function isAssignedToCourse($sid, $course_id, $user_id)
150    {
151        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
152
153        $sca = new ilSoapCourseAdministration();
154
155        return $sca->isAssignedToCourse($sid, $course_id, $user_id);
156    }
157
158    public static function excludeCourseMember($sid, $course_id, $user_id)
159    {
160        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
161
162        $sca = new ilSoapCourseAdministration();
163
164        return $sca->excludeCourseMember($sid, $course_id, $user_id);
165    }
166    public static function getCourseXML($sid, $course_id)
167    {
168        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
169
170        $sca = new ilSoapCourseAdministration();
171
172        return $sca->getCourseXML($sid, $course_id);
173    }
174    public static function updateCourse($sid, $course_id, $xml)
175    {
176        include_once './webservice/soap/classes/class.ilSoapCourseAdministration.php';
177
178        $sca = new ilSoapCourseAdministration();
179
180        return $sca->updateCourse($sid, $course_id, $xml);
181    }
182    // Object admninistration
183    public static function getObjIdByImportId($sid, $import_id)
184    {
185        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
186
187        $soa = new ilSoapObjectAdministration();
188
189        return $soa->getObjIdByImportId($sid, $import_id);
190    }
191
192    public static function getRefIdsByImportId($sid, $import_id)
193    {
194        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
195
196        $soa = new ilSoapObjectAdministration();
197
198        return $soa->getRefIdsByImportId($sid, $import_id);
199    }
200    public static function getRefIdsByObjId($sid, $object_id)
201    {
202        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
203
204        $soa = new ilSoapObjectAdministration();
205
206        return $soa->getRefIdsByObjId($sid, $object_id);
207    }
208
209
210    public static function getObjectByReference($sid, $a_ref_id, $user_id)
211    {
212        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
213
214        $soa = new ilSoapObjectAdministration();
215
216        return $soa->getObjectByReference($sid, $a_ref_id, $user_id);
217    }
218
219    public static function getObjectsByTitle($sid, $a_title, $user_id)
220    {
221        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
222
223        $soa = new ilSoapObjectAdministration();
224
225        return $soa->getObjectsByTitle($sid, $a_title, $user_id);
226    }
227
228    public static function addObject($sid, $a_target_id, $a_xml)
229    {
230        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
231
232        $soa = new ilSoapObjectAdministration();
233
234        return $soa->addObject($sid, $a_target_id, $a_xml);
235    }
236
237    public static function addReference($sid, $a_source_id, $a_target_id)
238    {
239        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
240
241        $soa = new ilSoapObjectAdministration();
242
243        return $soa->addReference($sid, $a_source_id, $a_target_id);
244    }
245
246    public static function deleteObject($sid, $reference_id)
247    {
248        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
249
250        $soa = new ilSoapObjectAdministration();
251
252        return $soa->deleteObject($sid, $reference_id);
253    }
254
255    public static function removeFromSystemByImportId($sid, $import_id)
256    {
257        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
258
259        $soa = new ilSoapObjectAdministration();
260
261        return $soa->removeFromSystemByImportId($sid, $import_id);
262    }
263
264    public static function updateObjects($sid, $obj_xml)
265    {
266        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
267
268        $soa = new ilSoapObjectAdministration();
269
270        return $soa->updateObjects($sid, $obj_xml);
271    }
272    public static function searchObjects($sid, $types, $key, $combination, $user_id)
273    {
274        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
275
276        $soa = new ilSoapObjectAdministration();
277
278        return $soa->searchObjects($sid, $types, $key, $combination, $user_id);
279    }
280
281    public static function getTreeChilds($sid, $ref_id, $types, $user_id)
282    {
283        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
284
285        $soa = new ilSoapObjectAdministration();
286
287        return $soa->getTreeChilds($sid, $ref_id, $types, $user_id);
288    }
289
290    public static function getXMLTree($sid, $ref_id, $types, $user_id)
291    {
292        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
293
294        $soa = new ilSoapObjectAdministration();
295
296        return $soa->getXMLTree($sid, $ref_id, $types, $user_id);
297    }
298
299
300
301    // Rbac Tree public static function s
302    public static function getOperations($sid)
303    {
304        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
305
306        $soa = new ilSoapRBACAdministration();
307
308        return $soa->getOperations($sid);
309    }
310
311
312    public static function addUserRoleEntry($sid, $user_id, $role_id)
313    {
314        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
315
316        $soa = new ilSoapRBACAdministration();
317
318        return $soa->addUserRoleEntry($sid, $user_id, $role_id);
319    }
320
321    public static function deleteUserRoleEntry($sid, $user_id, $role_id)
322    {
323        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
324
325        $soa = new ilSoapRBACAdministration();
326
327        return $soa->deleteUserRoleEntry($sid, $user_id, $role_id);
328    }
329
330    public static function revokePermissions($sid, $ref_id, $role_id)
331    {
332        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
333
334        $soa = new ilSoapRBACAdministration();
335
336        return $soa->revokePermissions($sid, $ref_id, $role_id);
337    }
338
339    public static function grantPermissions($sid, $ref_id, $role_id, $permissions)
340    {
341        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
342
343        $soa = new ilSoapRBACAdministration();
344
345        return $soa->grantPermissions($sid, $ref_id, $role_id, $permissions);
346    }
347
348    public static function getLocalRoles($sid, $ref_id)
349    {
350        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
351
352        $soa = new ilSoapRBACAdministration();
353
354        return $soa->getLocalRoles($sid, $ref_id);
355    }
356
357    public static function getUserRoles($sid, $user_id)
358    {
359        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
360
361        $soa = new ilSoapRBACAdministration();
362
363        return $soa->getUserRoles($sid, $user_id);
364    }
365
366    public static function deleteRole($sid, $role_id)
367    {
368        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
369
370        $soa = new ilSoapRBACAdministration();
371
372        return $soa->deleteRole($sid, $role_id);
373    }
374
375    public static function addRole($sid, $target_id, $obj_xml)
376    {
377        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
378
379        $soa = new ilSoapRBACAdministration();
380
381        return $soa->addRole($sid, $target_id, $obj_xml);
382    }
383    public static function addRoleFromTemplate($sid, $target_id, $obj_xml, $template_id)
384    {
385        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
386
387        $soa = new ilSoapRBACAdministration();
388
389        return $soa->addRoleFromTemplate($sid, $target_id, $obj_xml, $template_id);
390    }
391
392    public static function getObjectTreeOperations($sid, $ref_id, $user_id)
393    {
394        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
395
396        $soa = new ilSoapRBACAdministration();
397
398        return $soa->getObjectTreeOperations($sid, $ref_id, $user_id);
399    }
400
401    public static function addGroup($sid, $target_id, $group_xml)
402    {
403        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
404
405        $soa = new ilSoapGroupAdministration();
406
407        return $soa->addGroup($sid, $target_id, $group_xml);
408    }
409
410    public static function groupExists($sid, $title)
411    {
412        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
413
414        $soa = new ilSoapGroupAdministration();
415
416        return $soa->groupExists($sid, $title);
417    }
418    public static function getGroup($sid, $ref_id)
419    {
420        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
421
422        $soa = new ilSoapGroupAdministration();
423
424        return $soa->getGroup($sid, $ref_id);
425    }
426
427    public static function assignGroupMember($sid, $group_id, $user_id, $type)
428    {
429        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
430
431        $sca = new ilSoapGroupAdministration();
432
433        return $sca->assignGroupMember($sid, $group_id, $user_id, $type);
434    }
435    public static function isAssignedToGroup($sid, $group_id, $user_id)
436    {
437        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
438
439        $sca = new ilSoapGroupAdministration();
440
441        return $sca->isAssignedToGroup($sid, $group_id, $user_id);
442    }
443
444    public static function excludeGroupMember($sid, $group_id, $user_id)
445    {
446        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
447
448        $sca = new ilSoapGroupAdministration();
449
450        return $sca->excludeGroupMember($sid, $group_id, $user_id, $type);
451    }
452
453
454    public static function sendMail($sid, $to, $cc, $bcc, $sender, $subject, $message, $attach)
455    {
456        include_once './webservice/soap/classes/class.ilSoapUtils.php';
457
458        $sou = new ilSoapUtils();
459        $sou->disableSOAPCheck();
460        $sou->ignoreUserAbort();
461
462        return $sou->sendMail($sid, $to, $cc, $bcc, $sender, $subject, $message, $attach);
463    }
464
465    public static function distributeMails($sid, $mail_xml)
466    {
467        include_once './webservice/soap/classes/class.ilSoapUtils.php';
468
469        $sou = new ilSoapUtils();
470        return $sou->distributeMails($sid, $mail_xml);
471    }
472
473    public static function ilClone($sid, $copy_identifier)
474    {
475        include_once './webservice/soap/classes/class.ilSoapUtils.php';
476
477        $sou = new ilSoapUtils();
478        $sou->disableSOAPCheck();
479        $sou->ignoreUserAbort();
480
481        return $sou->ilClone($sid, $copy_identifier);
482    }
483    public static function ilCloneDependencies($sid, $copy_identifier)
484    {
485        include_once './webservice/soap/classes/class.ilSoapUtils.php';
486
487        $sou = new ilSoapUtils();
488        $sou->disableSOAPCheck();
489        $sou->ignoreUserAbort();
490
491        return $sou->ilCloneDependencies($sid, $copy_identifier);
492    }
493
494    public static function handleECSTasks($sid, $a_server_id)
495    {
496        include_once './webservice/soap/classes/class.ilSoapUtils.php';
497
498        $sou = new ilSoapUtils();
499        $sou->disableSoapCheck();
500        $sou->ignoreUserAbort();
501
502        return $sou->handleECSTasks($sid, $a_server_id);
503    }
504
505    public static function saveQuestionResult($sid, $user_id, $test_id, $question_id, $pass, $solution)
506    {
507        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
508
509        $sass = new ilSoapTestAdministration();
510
511        return $sass->saveQuestionResult($sid, $user_id, $test_id, $question_id, $pass, $solution);
512    }
513
514    public static function saveQuestion($sid, $active_id, $question_id, $pass, $solution)
515    {
516        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
517
518        $sass = new ilSoapTestAdministration();
519
520        return $sass->saveQuestion($sid, $active_id, $question_id, $pass, $solution);
521    }
522
523    public static function saveQuestionSolution($sid, $active_id, $question_id, $pass, $solution)
524    {
525        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
526
527        $sass = new ilSoapTestAdministration();
528
529        return $sass->saveQuestionSolution($sid, $active_id, $question_id, $pass, $solution);
530    }
531
532    public static function getQuestionSolution($sid, $active_id, $question_id, $pass)
533    {
534        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
535
536        $sass = new ilSoapTestAdministration();
537
538        return $sass->getQuestionSolution($sid, $active_id, $question_id, $pass);
539    }
540
541    public static function getTestUserData($sid, $active_id)
542    {
543        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
544
545        $sass = new ilSoapTestAdministration();
546
547        return $sass->getTestUserData($sid, $active_id);
548    }
549
550    public static function getNrOfQuestionsInPass($sid, $active_id, $pass)
551    {
552        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
553
554        $sass = new ilSoapTestAdministration();
555
556        return $sass->getNrOfQuestionsInPass($sid, $active_id, $pass);
557    }
558
559    public static function getPositionOfQuestion($sid, $active_id, $question_id, $pass)
560    {
561        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
562
563        $sass = new ilSoapTestAdministration();
564
565        return $sass->getPositionOfQuestion($sid, $active_id, $question_id, $pass);
566    }
567
568    public static function getPreviousReachedPoints($sid, $active_id, $question_id, $pass)
569    {
570        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
571
572        $sass = new ilSoapTestAdministration();
573
574        return $sass->getPreviousReachedPoints($sid, $active_id, $question_id, $pass);
575    }
576
577    public static function saveTempFileAsMediaObject($sid, $name, $tmp_name)
578    {
579        include_once './webservice/soap/classes/class.ilSoapUtils.php';
580
581        $sou = new ilSoapUtils();
582        $sou->disableSOAPCheck();
583
584        return $sou->saveTempFileAsMediaObject($sid, $name, $tmp_name);
585    }
586
587    public static function getMobsOfObject($sid, $a_type, $a_id)
588    {
589        include_once './webservice/soap/classes/class.ilSoapUtils.php';
590
591        $sou = new ilSoapUtils();
592        $sou->disableSOAPCheck();
593
594        return $sou->getMobsOfObject($sid, $a_type, $a_id);
595    }
596
597    public static function getStructureObjects($sid, $ref_id)
598    {
599        include_once './webservice/soap/classes/class.ilSoapStructureObjectAdministration.php';
600
601        $sca = new ilSOAPStructureObjectAdministration();
602
603        return $sca->getStructureObjects($sid, $ref_id);
604    }
605
606    public static function getRoles($sid, $role_type, $id)
607    {
608        include_once './webservice/soap/classes/class.ilSoapRBACAdministration.php';
609
610        $soa = new ilSoapRBACAdministration();
611
612        return $soa->getRoles($sid, $role_type, $id);
613    }
614
615    public static function importUsers($sid, $folder_id, $usr_xml, $conflict_rule, $send_account_mail)
616    {
617        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
618
619        $sua = new ilSoapUserAdministration();
620
621        return $sua->importUsers($sid, $folder_id, $usr_xml, $conflict_rule, $send_account_mail);
622    }
623
624    public static function getUsersForContainer($sid, $ref_id, $attach_roles, $active)
625    {
626        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
627
628        $sua = new ilSoapUserAdministration();
629
630        return $sua->getUsersForContainer($sid, $ref_id, $attach_roles, $active);
631    }
632
633    public static function getUsersForRole($sid, $role_id, $attach_roles, $active)
634    {
635        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
636
637        $sua = new ilSoapUserAdministration();
638
639        return $sua->getUserForRole($sid, $role_id, $attach_roles, $active);
640    }
641
642
643    public static function searchUser($sid, $a_keyfields, $query_operator, $a_keyvalues, $attach_roles, $active)
644    {
645        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
646
647        $sua = new ilSoapUserAdministration();
648
649        return $sua->searchUser($sid, $a_keyfields, $query_operator, $a_keyvalues, $attach_roles, $active);
650    }
651
652    public static function hasNewMail($sid)
653    {
654        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
655
656        $sua = new ilSoapUserAdministration();
657
658        return $sua->hasNewMail($sid);
659    }
660
661    public static function getNIC($sid)
662    {
663        include_once './webservice/soap/classes/class.ilSoapAdministration.php';
664        $soa = new ilSoapAdministration();
665        return $soa->getNIC($sid);
666    }
667
668    public static function getExerciseXML($sid, $ref_id, $attachFileContentsMode)
669    {
670        include_once './webservice/soap/classes/class.ilSoapExerciseAdministration.php';
671        $sta = new ilSoapExerciseAdministration();
672        return $sta->getExerciseXML($sid, $ref_id, $attachFileContentsMode);
673    }
674
675
676    public static function updateExercise($sid, $ref_id, $xml)
677    {
678        include_once './webservice/soap/classes/class.ilSoapExerciseAdministration.php';
679        $sta = new ilSoapExerciseAdministration();
680        return $sta->updateExercise($sid, $ref_id, $xml);
681    }
682
683    public static function addExercise($sid, $ref_id, $xml)
684    {
685        include_once './webservice/soap/classes/class.ilSoapExerciseAdministration.php';
686        $sta = new ilSoapExerciseAdministration();
687        return $sta->addExercise($sid, $ref_id, $xml);
688    }
689
690    public static function getFileXML($sid, $ref_id, $attachFileContentsMode)
691    {
692        include_once './webservice/soap/classes/class.ilSoapFileAdministration.php';
693        $sta = new ilSoapFileAdministration();
694        return $sta->getFileXML($sid, $ref_id, $attachFileContentsMode);
695    }
696
697
698    public static function updateFile($sid, $ref_id, $xml)
699    {
700        include_once './webservice/soap/classes/class.ilSoapFileAdministration.php';
701        $sta = new ilSoapFileAdministration();
702        return $sta->updateFile($sid, $ref_id, $xml);
703    }
704
705    public static function addFile($sid, $ref_id, $xml)
706    {
707        include_once './webservice/soap/classes/class.ilSoapFileAdministration.php';
708        $sta = new ilSoapFileAdministration();
709        return $sta->addFile($sid, $ref_id, $xml);
710    }
711
712    public static function getObjIdsByRefIds($sid, $ref_ids)
713    {
714        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
715
716        $soa = new ilSoapObjectAdministration();
717
718        return $soa->getObjIdsByRefIds($sid, $ref_ids);
719    }
720
721    public static function getUserXML($sid, $user_ids, $attach_roles)
722    {
723        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
724
725        $sua = new ilSoapUserAdministration();
726
727        return $sua->getUserXML($sid, $user_ids, $attach_roles);
728    }
729
730    public static function updateGroup($sid, $ref_id, $grp_xml)
731    {
732        include_once './webservice/soap/classes/class.ilSoapGroupAdministration.php';
733
734        $sua = new ilSoapGroupAdministration();
735
736        return $sua->updateGroup($sid, $ref_id, $grp_xml);
737    }
738
739    public static function getIMSManifestXML($sid, $ref_id)
740    {
741        include_once './webservice/soap/classes/class.ilSoapSCORMAdministration.php';
742
743        $sua = new ilSoapSCORMAdministration();
744
745        return $sua->getIMSManifestXML($sid, $ref_id);
746    }
747
748    public static function hasSCORMCertificate($sid, $ref_id, $usr_id)
749    {
750        include_once './webservice/soap/classes/class.ilSoapSCORMAdministration.php';
751
752        $sua = new ilSoapSCORMAdministration();
753
754        return $sua->hasSCORMCertificate($sid, $ref_id, $usr_id);
755    }
756
757    /**
758     * copy object in repository
759     * $sid	session id
760     * $settings_xml contains copy wizard settings following ilias_copy_wizard_settings.dtd
761     */
762    public static function copyObject($sid, $copy_settings_xml)
763    {
764        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
765
766        $soa = new ilSoapObjectAdministration();
767
768        return $soa->copyObject($sid, $copy_settings_xml);
769    }
770
771
772    /**
773     * @param $sid
774     *
775     * @return bool
776     */
777    public static function startBackgroundTaskWorker($sid)
778    {
779        require_once("./Services/BackgroundTasks/classes/class.ilSoapBackgroundTasksAdministration.php");
780        $soa = new ilSoapBackgroundTasksAdministration();
781
782        return $soa->runAsync($sid);
783    }
784
785    /** move object in repository
786     * @param $sid	session id
787     * @param $refid  source iod
788     * @param $target target ref id
789     * @return int refid of new location, -1 if not successful
790     */
791    public static function moveObject($sid, $ref_id, $target_id)
792    {
793        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
794
795        $soa = new ilSoapObjectAdministration();
796
797        return $soa->moveObject($sid, $ref_id, $target_id);
798    }
799
800
801    /**
802     * get results of test
803     *
804     * @param string $sid
805     * @param int $ref_id
806     * @param boolean $sum_only
807     *
808     * @return XMLResultSet with columns firstname, lastname, matriculation, maximum points, received points
809     */
810
811    public static function getTestResults($sid, $ref_id, $sum_only)
812    {
813        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
814
815        $soa = new ilSoapTestAdministration();
816
817        return $soa->getTestResults($sid, $ref_id, $sum_only);
818    }
819
820    /**
821     * Remove test results of user
822     *
823     * @param string $sid
824     * @param int $ref_id
825     * @param array user ids
826     *
827     * @return bool
828     */
829    public static function removeTestResults($sid, $ref_id, $a_user_ids)
830    {
831        include_once './webservice/soap/classes/class.ilSoapTestAdministration.php';
832
833        $soa = new ilSoapTestAdministration();
834        return $soa->removeTestResults($sid, $ref_id, $a_user_ids);
835    }
836
837    /**
838     * return courses for users depending on the status
839     *
840     * @param string $sid
841     * @param string $parameters xmlString following xmlResultSet
842     * @return string xmlResultSet
843     */
844    public static function getCoursesForUser($sid, $parameters)
845    {
846        include_once 'webservice/soap/classes/class.ilSoapCourseAdministration.php';
847        $soc = new ilSoapCourseAdministration();
848        return $soc->getCoursesForUser($sid, $parameters);
849    }
850
851    /**
852         * return courses for users depending on the status
853         *
854         * @param string $sid
855         * @param string $parameters xmlString following xmlResultSet
856         * @return string xmlResultSet
857         */
858    public static function getGroupsForUser($sid, $parameters)
859    {
860        include_once 'webservice/soap/classes/class.ilSoapGroupAdministration.php';
861        $soc = new ilSoapGroupAdministration();
862        return $soc->getGroupsForUser($sid, $parameters);
863    }
864
865    public static function getPathForRefId($sid, $ref_id)
866    {
867        include_once 'webservice/soap/classes/class.ilSoapObjectAdministration.php';
868        $soa = new ilSoapObjectAdministration();
869        return $soa->getPathForRefId($sid, $ref_id);
870    }
871
872    public static function searchRoles($sid, $key, $combination, $role_type)
873    {
874        include_once 'webservice/soap/classes/class.ilSoapRBACAdministration.php';
875        $roa = new ilSoapRBACAdministration();
876        return $roa->searchRoles($sid, $key, $combination, $role_type);
877    }
878
879
880    public static function getInstallationInfoXML()
881    {
882        include_once 'webservice/soap/classes/class.ilSoapAdministration.php';
883        $roa = new ilSoapAdministration();
884        return $roa->getInstallationInfoXML();
885    }
886
887    public static function getClientInfoXML($clientid)
888    {
889        include_once 'webservice/soap/classes/class.ilSoapAdministration.php';
890        $roa = new ilSoapAdministration();
891        return $roa->getClientInfoXML($clientid);
892    }
893
894    /**
895     * builds http path if no client is available
896     *
897     * @return string
898     */
899    public static function buildHTTPPath()
900    {
901        if ($_SERVER["HTTPS"] == "on") {
902            $protocol = 'https://';
903        } else {
904            $protocol = 'http://';
905        }
906        $host = $_SERVER['HTTP_HOST'];
907
908        $path = dirname($_SERVER['REQUEST_URI']);
909
910        //dirname cuts the last directory from a directory path e.g content/classes return content
911        include_once 'Services/Utilities/classes/class.ilUtil.php';
912        $module = ilUtil::removeTrailingPathSeparators(ILIAS_MODULE);
913
914        $dirs = explode('/', $module);
915        $uri = $path;
916        foreach ($dirs as $dir) {
917            $uri = dirname($uri);
918        }
919        return ilUtil::removeTrailingPathSeparators($protocol . $host . $uri);
920    }
921
922    public static function getSCORMCompletionStatus($sid, $usr_id, $a_ref_id)
923    {
924        include_once './webservice/soap/classes/class.ilSoapSCORMAdministration.php';
925
926        $sua = new ilSoapSCORMAdministration();
927
928        return $sua->getSCORMCompletionStatus($sid, $usr_id, $a_ref_id);
929    }
930
931    public static function getUserIdBySid($sid)
932    {
933        include_once './webservice/soap/classes/class.ilSoapUserAdministration.php';
934
935        $sua = new ilSoapUserAdministration();
936
937        return $sua->getUserIdBySid($sid);
938    }
939
940    public static function readWebLink($sid, $ref_id)
941    {
942        include_once './webservice/soap/classes/class.ilSoapWebLinkAdministration.php';
943
944        $swa = new ilSoapWebLinkAdministration();
945        return $swa->readWebLink($sid, $ref_id);
946    }
947
948    public static function createWebLink($sid, $ref_id, $xml)
949    {
950        include_once './webservice/soap/classes/class.ilSoapWebLinkAdministration.php';
951
952        $swa = new ilSoapWebLinkAdministration();
953        return $swa->createWebLink($sid, $ref_id, $xml);
954    }
955
956    public static function updateWebLink($sid, $ref_id, $xml)
957    {
958        include_once './webservice/soap/classes/class.ilSoapWebLinkAdministration.php';
959
960        $swa = new ilSoapWebLinkAdministration();
961        return $swa->updateWebLink($sid, $ref_id, $xml);
962    }
963
964    /**
965     *
966     * Static method for soap webservice: deleteExpiredDualOptInUserObjects
967     *
968     * This service will run in background. The client has not to wait for response.
969     *
970     * @param	string	$sid	Session id + client id, separated by ::
971     * @param	integer	$usr_id	User id of the actuator
972     * @return	boolean	true or false
973     * @access	public
974     * @static
975     *
976     */
977    public static function deleteExpiredDualOptInUserObjects($sid, $usr_id)
978    {
979        include_once './webservice/soap/classes/class.ilSoapUtils.php';
980
981        $sou = new ilSoapUtils();
982        $sou->disableSOAPCheck();
983        $sou->ignoreUserAbort();
984
985        return $sou->deleteExpiredDualOptInUserObjects($sid, $usr_id);
986    }
987
988    /*
989    public static function getSkillCompletionDateForTriggerRefId($sid, $usr_id, $a_ref_id)
990    {
991        include_once './webservice/soap/classes/class.ilSoapSkillAdministration.php';
992        $s = new ilSoapSkillAdministration();
993
994        $res = $s->getCompletionDateForTriggerRefId($sid, $usr_id, $a_ref_id);
995        return $res;
996    }
997
998    public static function checkSkillUserCertificateForTriggerRefId($sid, $usr_id, $a_ref_id)
999    {
1000        include_once './webservice/soap/classes/class.ilSoapSkillAdministration.php';
1001
1002        $s = new ilSoapSkillAdministration();
1003        return $s->checkUserCertificateForTriggerRefId($sid, $usr_id, $a_ref_id);
1004    }
1005
1006    public static function getSkillTriggerOfAllCertificates($sid, $usr_id)
1007    {
1008        include_once './webservice/soap/classes/class.ilSoapSkillAdministration.php';
1009
1010        $s = new ilSoapSkillAdministration();
1011        return $s->getTriggerOfAllCertificates($sid, $usr_id);
1012    }
1013    */
1014
1015    /**
1016     * Delete progress
1017     * @param string $sid
1018     * @param array $ref_ids
1019     * @param array $usr_ids
1020     * @param array $type_filter
1021     * @return type
1022     */
1023    public static function deleteProgress($sid, $ref_ids, $usr_ids, $type_filter, $progress_filter)
1024    {
1025        include_once './webservice/soap/classes/class.ilSoapLearningProgressAdministration.php';
1026        $sla = new ilSoapLearningProgressAdministration();
1027        return $sla->deleteProgress($sid, $ref_ids, $usr_ids, $type_filter, $progress_filter);
1028    }
1029    // mcs-patch start
1030    public static function getLearningProgressChanges($sid, $timestamp, $include_ref_ids, $type_filter)
1031    {
1032        include_once './webservice/soap/classes/class.ilSoapLearningProgressAdministration.php';
1033
1034        $s = new ilSoapLearningProgressAdministration();
1035
1036        return $s->getLearningProgressChanges($sid, $timestamp, $include_ref_ids, $type_filter);
1037    }
1038    // mcs-patch end
1039
1040
1041    /**
1042     * Get learning progress info
1043     * @param type $sid
1044     * @param type $ref_id
1045     * @param type $progress_filter
1046     * @return type
1047     */
1048    public static function getProgressInfo($sid, $ref_id, $progress_filter)
1049    {
1050        include_once './webservice/soap/classes/class.ilSoapLearningProgressAdministration.php';
1051        $sla = new ilSoapLearningProgressAdministration();
1052        return $sla->getProgressInfo($sid, $ref_id, $progress_filter);
1053    }
1054
1055    /**
1056     * Exports a given table of a datacollection into xls
1057     *
1058     * @param string $sid
1059     * @param int $data_collection_id
1060     * @param int $table_id
1061     * @param string $format
1062     * @param string $filepath
1063     *
1064     * @return string
1065     */
1066    public static function exportDataCollectionContent($sid, $data_collection_id, $table_id = null, $format = "xls", $filepath = null)
1067    {
1068        include_once './webservice/soap/classes/class.ilSoapDataCollectionAdministration.php';
1069        $dcl = new ilSoapDataCollectionAdministration();
1070        return $dcl->exportDataCollectionContent($sid, $data_collection_id, $table_id, $format, $filepath);
1071    }
1072
1073    /**
1074     * Process background task
1075     *
1076     * @param string $sid
1077     * @param int $task_id
1078     *
1079     * @return string
1080     */
1081    public static function processBackgroundTask($sid, $task_id)
1082    {
1083        include_once './webservice/soap/classes/class.ilSoapBackgroundTaskAdministration.php';
1084        $bg = new ilSoapBackgroundTaskAdministration();
1085        return $bg->processBackgroundTask($sid, $task_id);
1086    }
1087
1088    /**
1089     * Add desktop items for user
1090     *
1091     * @param $sid
1092     * @param $user_id
1093     * @param $reference_ids
1094     * @return int
1095     */
1096    public static function addDesktopItems($sid, $user_id, $reference_ids)
1097    {
1098        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
1099        $obj_handler = new ilSoapObjectAdministration();
1100        return $obj_handler->addDesktopItems($sid, $user_id, $reference_ids);
1101    }
1102
1103    /**
1104     * Add desktop items for user
1105     *
1106     * @param $sid
1107     * @param $user_id
1108     * @param $reference_ids
1109     * @return int
1110     */
1111    public static function removeDesktopItems($sid, $user_id, $reference_ids)
1112    {
1113        include_once './webservice/soap/classes/class.ilSoapObjectAdministration.php';
1114        $obj_handler = new ilSoapObjectAdministration();
1115        return $obj_handler->removeDesktopItems($sid, $user_id, $reference_ids);
1116    }
1117
1118    /**
1119     * @param string $name
1120     * @param array $arguments
1121     * @return mixed
1122     * @throws SoapFault
1123     */
1124    public function __call($name, $arguments)
1125    {
1126        // SoapHookPlugins need the client-ID submitted
1127        if (!isset($_GET['client_id'])) {
1128            throw new SoapFault('SOAP-ENV:Server', "Function '{$name}' does not exist");
1129        }
1130        // Note: We need to bootstrap ILIAS in order to get $ilPluginAdmin and load the soap plugins.
1131        // We MUST use a context that does not handle authentication at this point (session is checked by SOAP).
1132        ilContext::init(ilContext::CONTEXT_SOAP_NO_AUTH);
1133        ilInitialisation::initILIAS();
1134        ilContext::init(ilContext::CONTEXT_SOAP);
1135        global $DIC;
1136        $soapHook = new ilSoapHook($DIC['ilPluginAdmin']);
1137        // Method name may be invoked with namespace e.g. 'myMethod' vs 'ns:myMethod'
1138        if (strpos($name, ':') !== false) {
1139            list($_, $name) = explode(':', $name);
1140        }
1141        $method = $soapHook->getMethodByName($name);
1142        if ($method) {
1143            try {
1144                return $method->execute($arguments);
1145            } catch (ilSoapPluginException $e) {
1146                throw new SoapFault('SOAP-ENV:Server', $e->getMessage());
1147            }
1148        }
1149        throw new SoapFault('SOAP-ENV:Server', "Function '{$name}' does not exist");
1150    }
1151}
1152