ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjExercise.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once "./Services/Object/classes/class.ilObject.php";
5require_once "./Modules/Exercise/classes/class.ilExerciseMembers.php";
6
20{
24 protected $user;
25
26 public $file_obj;
28 public $files;
29
30 public $timestamp;
31 public $hour;
32 public $minutes;
33 public $day;
34 public $month;
35 public $year;
38
39 public $tutor_feedback = 7; // [int]
40
44
53 protected $completion_by_submission = false;
54
59
66 public function __construct($a_id = 0, $a_call_by_reference = true)
67 {
68 global $DIC;
69
70 $this->db = $DIC->database();
71 $this->app_event_handler = $DIC["ilAppEventHandler"];
72 $this->lng = $DIC->language();
73 $this->user = $DIC->user();
74 $this->setPassMode("all");
75 $this->type = "exc";
76 $this->webFilesystem = $DIC->filesystem()->web();
77
78 parent::__construct($a_id, $a_call_by_reference);
79 }
80
81 // SET, GET METHODS
82 public function setDate($a_hour, $a_minutes, $a_day, $a_month, $a_year)
83 {
84 $this->hour = (int) $a_hour;
85 $this->minutes = (int) $a_minutes;
86 $this->day = (int) $a_day;
87 $this->month = (int) $a_month;
88 $this->year = (int) $a_year;
89 $this->timestamp = mktime($this->hour, $this->minutes, 0, $this->month, $this->day, $this->year);
90 return true;
91 }
92 public function getTimestamp()
93 {
94 return $this->timestamp;
95 }
96 public function setTimestamp($a_timestamp)
97 {
98 $this->timestamp = $a_timestamp;
99 }
100 public function setInstruction($a_instruction)
101 {
102 $this->instruction = $a_instruction;
103 }
104 public function getInstruction()
105 {
106 return $this->instruction;
107 }
108
114 public function setPassMode($a_val)
115 {
116 $this->pass_mode = $a_val;
117 }
118
124 public function getPassMode()
125 {
126 return $this->pass_mode;
127 }
128
134 public function setPassNr($a_val)
135 {
136 $this->pass_nr = $a_val;
137 }
138
144 public function getPassNr()
145 {
146 return $this->pass_nr;
147 }
148
154 public function setShowSubmissions($a_val)
155 {
156 $this->show_submissions = $a_val;
157 }
158
164 public function getShowSubmissions()
165 {
166 return $this->show_submissions;
167 }
168
169
170 /* function getFiles()
171 {
172 return $this->files;
173 }*/
174
175 public function checkDate()
176 {
177 return $this->hour == (int) date("H", $this->timestamp) and
178 $this->minutes == (int) date("i", $this->timestamp) and
179 $this->day == (int) date("d", $this->timestamp) and
180 $this->month == (int) date("m", $this->timestamp) and
181 $this->year == (int) date("Y", $this->timestamp);
182 }
183
184 public function hasTutorFeedbackText()
185 {
186 return $this->tutor_feedback & self::TUTOR_FEEDBACK_TEXT;
187 }
188
189 public function hasTutorFeedbackMail()
190 {
191 return $this->tutor_feedback & self::TUTOR_FEEDBACK_MAIL;
192 }
193
194 public function hasTutorFeedbackFile()
195 {
196 return $this->tutor_feedback & self::TUTOR_FEEDBACK_FILE;
197 }
198
199 protected function getTutorFeedback()
200 {
202 }
203
204 public function setTutorFeedback($a_value)
205 {
206 $this->tutor_feedback = $a_value;
207 }
208
209 public function saveData()
210 {
212
213 $ilDB->insert("exc_data", array(
214 "obj_id" => array("integer", $this->getId()),
215 "instruction" => array("clob", $this->getInstruction()),
216 "time_stamp" => array("integer", $this->getTimestamp()),
217 "pass_mode" => array("text", $this->getPassMode()),
218 "pass_nr" => array("text", $this->getPassNr()),
219 "show_submissions" => array("integer", (int) $this->getShowSubmissions()),
220 'compl_by_submission' => array('integer', (int) $this->isCompletionBySubmissionEnabled()),
221 "certificate_visibility" => array("integer", (int) $this->getCertificateVisibility()),
222 "tfeedback" => array("integer", (int) $this->getTutorFeedback())
223 ));
224 return true;
225 }
226
234 public function cloneObject($a_target_id, $a_copy_id = 0, $a_omit_tree = false)
235 {
237
238 // Copy settings
239 $new_obj = parent::cloneObject($a_target_id, $a_copy_id, $a_omit_tree);
240 $new_obj->setInstruction($this->getInstruction());
241 $new_obj->setTimestamp($this->getTimestamp());
242 $new_obj->setPassMode($this->getPassMode());
243 $new_obj->saveData();
244 $new_obj->setPassNr($this->getPassNr());
245 $new_obj->setShowSubmissions($this->getShowSubmissions());
246 $new_obj->setCompletionBySubmission($this->isCompletionBySubmissionEnabled());
247 $new_obj->setTutorFeedback($this->getTutorFeedback());
248 $new_obj->setCertificateVisibility($this->getCertificateVisibility());
249 $new_obj->update();
250
251 $new_obj->saveCertificateVisibility($this->getCertificateVisibility());
252
253 // Copy criteria catalogues
254 $crit_cat_map = array();
255 include_once("./Modules/Exercise/classes/class.ilExcCriteriaCatalogue.php");
256 foreach (ilExcCriteriaCatalogue::getInstancesByParentId($this->getId()) as $crit_cat) {
257 $new_id = $crit_cat->cloneObject($new_obj->getId());
258 $crit_cat_map[$crit_cat->getId()] = $new_id;
259 }
260
261 // Copy assignments
262 include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
263 ilExAssignment::cloneAssignmentsOfExercise($this->getId(), $new_obj->getId(), $crit_cat_map);
264
265 // Copy learning progress settings
266 include_once('Services/Tracking/classes/class.ilLPObjSettings.php');
267 $obj_settings = new ilLPObjSettings($this->getId());
268 $obj_settings->cloneSettings($new_obj->getId());
269 unset($obj_settings);
270
272 $templateRepository = new ilCertificateTemplateRepository($ilDB);
273
274 $cloneAction = new ilCertificateCloneAction(
275 $ilDB,
276 $factory,
277 $templateRepository,
278 $this->webFilesystem,
279 $this->log,
281 );
282
283 $cloneAction->cloneCertificate($this, $new_obj);
284
285 return $new_obj;
286 }
287
294 public function delete()
295 {
297 $ilAppEventHandler = $this->app_event_handler;
298
299 // always call parent delete function first!!
300 if (!parent::delete()) {
301 return false;
302 }
303 // put here course specific stuff
304 $ilDB->manipulate("DELETE FROM exc_data " .
305 "WHERE obj_id = " . $ilDB->quote($this->getId(), "integer"));
306
307 include_once "Modules/Exercise/classes/class.ilExcCriteriaCatalogue.php";
309
310 // remove all notifications
311 include_once "./Services/Notification/classes/class.ilNotification.php";
313
314 $ilAppEventHandler->raise(
315 'Modules/Exercise',
316 'delete',
317 array('obj_id' => $this->getId())
318 );
319
320 return true;
321 }
322
323 public function read()
324 {
326
327 parent::read();
328
329 $query = "SELECT * FROM exc_data " .
330 "WHERE obj_id = " . $ilDB->quote($this->getId(), "integer");
331
332 $res = $ilDB->query($query);
333 while ($row = $ilDB->fetchObject($res)) {
334 $this->setInstruction($row->instruction);
335 $this->setTimestamp($row->time_stamp);
336 $pm = ($row->pass_mode == "")
337 ? "all"
338 : $row->pass_mode;
339 $this->setPassMode($pm);
340 $this->setShowSubmissions($row->show_submissions);
341 if ($row->pass_mode == "nr") {
342 $this->setPassNr($row->pass_nr);
343 }
344 $this->setCompletionBySubmission($row->compl_by_submission == 1 ? true : false);
345 $this->setCertificateVisibility($row->certificate_visibility);
346 $this->setTutorFeedback($row->tfeedback);
347 }
348
349 $this->members_obj = new ilExerciseMembers($this);
350
351 return true;
352 }
353
354 public function update()
355 {
357
359
360 if ($this->getPassMode() == "all") {
361 $pass_nr = null;
362 } else {
363 $pass_nr = $this->getPassNr();
364 }
365
366 $ilDB->update("exc_data", array(
367 "instruction" => array("clob", $this->getInstruction()),
368 "time_stamp" => array("integer", $this->getTimestamp()),
369 "pass_mode" => array("text", $this->getPassMode()),
370 "pass_nr" => array("integer", $this->getPassNr()),
371 "show_submissions" => array("integer", (int) $this->getShowSubmissions()),
372 'compl_by_submission' => array('integer', (int) $this->isCompletionBySubmissionEnabled()),
373 'tfeedback' => array('integer', (int) $this->getTutorFeedback()),
374 ), array(
375 "obj_id" => array("integer", $this->getId())
376 ));
377
378 $this->updateAllUsersStatus();
379
380 return true;
381 }
382
386 public function sendAssignment(ilExAssignment $a_ass, $a_members)
387 {
390
391 $lng->loadLanguageModule("exc");
392
393 // subject
394 $subject = $a_ass->getTitle()
395 ? $this->getTitle() . ": " . $a_ass->getTitle()
396 : $this->getTitle();
397
398
399 // body
400
401 $body = $a_ass->getInstruction();
402 $body .= "\n\n";
403
404 $body .= $lng->txt("exc_edit_until") . ": ";
405 $body .= (!$a_ass->getDeadline())
406 ? $lng->txt("exc_no_deadline_specified")
408 $body .= "\n\n";
409
410 include_once "Services/Link/classes/class.ilLink.php";
411 $body .= ilLink::_getLink($this->getRefId(), "exc");
412
413
414 // files
415 $file_names = array();
416 include_once("./Modules/Exercise/classes/class.ilFSStorageExercise.php");
417 $storage = new ilFSStorageExercise($a_ass->getExerciseId(), $a_ass->getId());
418 $files = $storage->getFiles();
419 if (count($files)) {
420 include_once "./Services/Mail/classes/class.ilFileDataMail.php";
421 $mfile_obj = new ilFileDataMail($GLOBALS['DIC']['ilUser']->getId());
422 foreach ($files as $file) {
423 $mfile_obj->copyAttachmentFile($file["fullpath"], $file["name"]);
424 $file_names[] = $file["name"];
425 }
426 }
427
428 // recipients
429 $recipients = array();
430 foreach ($a_members as $member_id) {
431 $tmp_obj = ilObjectFactory::getInstanceByObjId($member_id);
432 $recipients[] = $tmp_obj->getLogin();
433 unset($tmp_obj);
434 }
435 $recipients = implode(",", $recipients);
436
437 // send mail
438 include_once "Services/Mail/classes/class.ilMail.php";
439 $tmp_mail_obj = new ilMail($ilUser->getId());
440 $errors = $tmp_mail_obj->sendMail(
441 $recipients,
442 "",
443 "",
444 $subject,
445 $body,
446 $file_names,
447 array("normal")
448 );
449 unset($tmp_mail_obj);
450
451 // remove tmp files
452 if (sizeof($file_names)) {
453 $mfile_obj->unlinkFiles($file_names);
454 unset($mfile_obj);
455 }
456
457 // set recipients mail status
458 foreach ($a_members as $member_id) {
459 $member_status = $a_ass->getMemberStatus($member_id);
460 $member_status->setSent(true);
461 $member_status->update();
462 }
463
464 return true;
465 }
466
470 public function determinStatusOfUser($a_user_id = 0)
471 {
473
474 if ($a_user_id == 0) {
475 $a_user_id = $ilUser->getId();
476 }
477
478 include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
480
481 $passed_all_mandatory = true;
482 $failed_a_mandatory = false;
483 $cnt_passed = 0;
484 $cnt_notgraded = 0;
485 $passed_at_least_one = false;
486
487 foreach ($ass as $a) {
488 $stat = $a->getMemberStatus($a_user_id)->getStatus();
489 if ($a->getMandatory() && ($stat == "failed" || $stat == "notgraded")) {
490 $passed_all_mandatory = false;
491 }
492 if ($a->getMandatory() && ($stat == "failed")) {
493 $failed_a_mandatory = true;
494 }
495 if ($stat == "passed") {
496 $cnt_passed++;
497 }
498 if ($stat == "notgraded") {
499 $cnt_notgraded++;
500 }
501 }
502
503 if (count($ass) == 0) {
504 $passed_all_mandatory = false;
505 }
506
507 if ($this->getPassMode() != "nr") {
508 //echo "5";
509 $overall_stat = "notgraded";
510 if ($failed_a_mandatory) {
511 //echo "6";
512 $overall_stat = "failed";
513 } elseif ($passed_all_mandatory && $cnt_passed > 0) {
514 //echo "7";
515 $overall_stat = "passed";
516 }
517 } else {
518 //echo "8";
519 $min_nr = $this->getPassNr();
520 $overall_stat = "notgraded";
521 //echo "*".$cnt_passed."*".$cnt_notgraded."*".$min_nr."*";
522 if ($failed_a_mandatory || ($cnt_passed + $cnt_notgraded < $min_nr)) {
523 //echo "9";
524 $overall_stat = "failed";
525 } elseif ($passed_all_mandatory && $cnt_passed >= $min_nr) {
526 //echo "A";
527 $overall_stat = "passed";
528 }
529 }
530
531 $ret = array(
532 "overall_status" => $overall_stat,
533 "failed_a_mandatory" => $failed_a_mandatory);
534 //echo "<br>p:".$cnt_passed.":ng:".$cnt_notgraded;
535 //var_dump($ret);
536 return $ret;
537 }
538
542 public function updateUserStatus($a_user_id = 0)
543 {
545
546 if ($a_user_id == 0) {
547 $a_user_id = $ilUser->getId();
548 }
549
550 $st = $this->determinStatusOfUser($a_user_id);
551
552 include_once("./Modules/Exercise/classes/class.ilExerciseMembers.php");
554 $this->getId(),
555 $a_user_id,
556 $st["overall_status"]
557 );
558 }
559
563 public function updateAllUsersStatus()
564 {
565 if (!is_object($this->members_obj)) {
566 $this->members_obj = new ilExerciseMembers($this);
567 }
568
569 $mems = $this->members_obj->getMembers();
570 foreach ($mems as $mem) {
571 $this->updateUserStatus($mem);
572 }
573 }
574
578 public function exportGradesExcel()
579 {
580 include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
581 $ass_data = ilExAssignment::getInstancesByExercise($this->getId());
582
583 include_once "./Services/Excel/classes/class.ilExcel.php";
584 $excel = new ilExcel();
585 $excel->addSheet($this->lng->txt("exc_status"));
586
587
588 //
589 // status
590 //
591
592 // header row
593 $row = $cnt = 1;
594 $excel->setCell($row, 0, $this->lng->txt("name"));
595 foreach ($ass_data as $ass) {
596 $excel->setCell($row, $cnt++, ($cnt / 2) . " - ". $this->lng->txt("exc_tbl_status"));
597 $excel->setCell($row, $cnt++, (($cnt - 1) / 2) . " - ". $this->lng->txt("exc_tbl_mark"));
598 }
599 $excel->setCell($row, $cnt++, $this->lng->txt("exc_total_exc"));
600 $excel->setCell($row, $cnt++, $this->lng->txt("exc_mark"));
601 $excel->setCell($row++, $cnt, $this->lng->txt("exc_comment_for_learner"));
602 $excel->setBold("A1:" . $excel->getColumnCoord($cnt) . "1");
603
604 // data rows
605 $mem_obj = new ilExerciseMembers($this);
606
607 $filtered_members = $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
608 'edit_submissions_grades',
609 'edit_submissions_grades',
610 $this->getRefId(),
611 (array) $mem_obj->getMembers()
612 );
613
614 foreach ((array) $filtered_members as $user_id) {
615 $mems[$user_id] = ilObjUser::_lookupName($user_id);
616 }
617 $mems = ilUtil::sortArray($mems, "lastname", "asc", false, true);
618
619 include_once 'Services/Tracking/classes/class.ilLPMarks.php';
620 foreach ($mems as $user_id => $d) {
621 $col = 0;
622
623 // name
624 $excel->setCell($row, $col++, $d["lastname"] . ", " . $d["firstname"] . " [" . $d["login"] . "]");
625
626 reset($ass_data);
627 foreach ($ass_data as $ass) {
628 $status = $ass->getMemberStatus($user_id)->getStatus();
629 $mark = $ass->getMemberStatus($user_id)->getMark();
630 $excel->setCell($row, $col++, $this->lng->txt("exc_" . $status));
631 $excel->setCell($row, $col++, $mark);
632 }
633
634 // total status
635 $status = ilExerciseMembers::_lookupStatus($this->getId(), $user_id);
636 $excel->setCell($row, $col++, $this->lng->txt("exc_" . $status));
637
638 // #18096
639 $marks_obj = new ilLPMarks($this->getId(), $user_id);
640 $excel->setCell($row, $col++, $marks_obj->getMark());
641 $excel->setCell($row++, $col, $marks_obj->getComment());
642 }
643
644
645 //
646 // mark
647 //
648
649 $excel->addSheet($this->lng->txt("exc_mark"));
650
651 // header row
652 $row = $cnt = 1;
653 $excel->setCell($row, 0, $this->lng->txt("name"));
654 foreach ($ass_data as $ass) {
655 $excel->setCell($row, $cnt++, $cnt - 1);
656 }
657 $excel->setCell($row++, $cnt++, $this->lng->txt("exc_total_exc"));
658 $excel->setBold("A1:" . $excel->getColumnCoord($cnt) . "1");
659
660 // data rows
661 reset($mems);
662 foreach ($mems as $user_id => $d) {
663 $col = 0;
664
665 // name
666 $d = ilObjUser::_lookupName($user_id);
667 $excel->setCell($row, $col++, $d["lastname"] . ", " . $d["firstname"] . " [" . $d["login"] . "]");
668
669 reset($ass_data);
670 foreach ($ass_data as $ass) {
671 $excel->setCell($row, $col++, $ass->getMemberStatus($user_id)->getMark());
672 }
673
674 // total mark
675 $excel->setCell($row++, $col, ilLPMarks::_lookupMark($user_id, $this->getId()));
676 }
677
678 $exc_name = ilUtil::getASCIIFilename(preg_replace("/\s/", "_", $this->getTitle()));
679 $excel->sendToClient($exc_name);
680 }
681
685 public function sendFeedbackFileNotification($a_feedback_file, $a_user_id, $a_ass_id, $a_is_text_feedback = false)
686 {
687 $user_ids = $a_user_id;
688 if (!is_array($user_ids)) {
689 $user_ids = array($user_ids);
690 }
691
692 include_once("./Modules/Exercise/classes/class.ilExerciseMailNotification.php");
693
694 $type = (bool) $a_is_text_feedback
697
698 $not = new ilExerciseMailNotification();
699 $not->setType($type);
700 $not->setAssignmentId($a_ass_id);
701 $not->setObjId($this->getId());
702 if ($this->getRefId() > 0) {
703 $not->setRefId($this->getRefId());
704 }
705 $not->setRecipients($user_ids);
706 $not->send();
707 }
708
718 {
720 }
721
731 public function setCompletionBySubmission($bool)
732 {
733 $this->completion_by_submission = (bool) $bool;
734
735 return $this;
736 }
737
738 public function processExerciseStatus(ilExAssignment $a_ass, array $a_user_ids, $a_has_submitted, array $a_valid_submissions = null)
739 {
740 $a_has_submitted = (bool) $a_has_submitted;
741
742 include_once("./Modules/Exercise/classes/class.ilExerciseMembers.php");
743 foreach ($a_user_ids as $user_id) {
744 $member_status = $a_ass->getMemberStatus($user_id);
745 $member_status->setReturned($a_has_submitted);
746 $member_status->update();
747
748 ilExerciseMembers::_writeReturned($this->getId(), $user_id, $a_has_submitted);
749 }
750
751 // re-evaluate exercise status
752 if ($this->isCompletionBySubmissionEnabled()) {
753 foreach ($a_user_ids as $user_id) {
754 $status = 'notgraded';
755 if ($a_has_submitted) {
756 if (!is_array($a_valid_submissions) ||
757 $a_valid_submissions[$user_id]) {
758 $status = 'passed';
759 }
760 }
761
762 $member_status = $a_ass->getMemberStatus($user_id);
763 $member_status->setStatus($status);
764 $member_status->update();
765 }
766 }
767 }
768
775 public static function _lookupFinishedUserExercises($a_user_id)
776 {
777 global $DIC;
778
779 $ilDB = $DIC->database();
780
781 $set = $ilDB->query("SELECT obj_id, status FROM exc_members" .
782 " WHERE usr_id = " . $ilDB->quote($a_user_id, "integer") .
783 " AND (status = " . $ilDB->quote("passed", "text") .
784 " OR status = " . $ilDB->quote("failed", "text") . ")");
785
786 $all = array();
787 while ($row = $ilDB->fetchAssoc($set)) {
788 $all[$row["obj_id"]] = ($row["status"] == "passed");
789 }
790 return $all;
791 }
792
793
800 public function getCertificateVisibility()
801 {
802 return (strlen($this->certificate_visibility)) ? $this->certificate_visibility : 0;
803 }
804
811 public function setCertificateVisibility($a_value)
812 {
813 $this->certificate_visibility = $a_value;
814 }
815
822 public function saveCertificateVisibility($a_value)
823 {
825
826 $affectedRows = $ilDB->manipulateF(
827 "UPDATE exc_data SET certificate_visibility = %s WHERE obj_id = %s",
828 array('integer', 'integer'),
829 array($a_value, $this->getId())
830 );
831 }
832
838 public function hasAddToDesktop()
839 {
840 $exc_set = new ilSetting("excs");
841 return (bool) $exc_set->get("add_to_pd", true);
842 }
843}
user()
Definition: user.php:4
$factory
Definition: metadata.php:43
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
Exercise assignment.
getExerciseId()
Get exercise id.
getId()
Get assignment id.
getInstruction()
Get instruction.
static getInstancesByExercise($a_exc_id)
static cloneAssignmentsOfExercise($a_old_exc_id, $a_new_exc_id, array $a_crit_cat_map)
Clone assignments of exercise.
getMemberStatus($a_user_id=null)
getDeadline()
Get deadline (timestamp)
static getInstancesByParentId($a_parent_id)
Class ilExerciseMembers.
static _writeReturned($a_obj_id, $a_user_id, $a_status)
Write returned status.
static _lookupStatus($a_obj_id, $a_user_id)
Lookup current status (notgraded|passed|failed)
static _writeStatus($a_obj_id, $a_user_id, $a_status)
Write user status.
Class ilFileDataMail.
static _lookupMark($a_usr_id, $a_obj_id)
static removeForObject($type, $id)
Remove all notifications for given object.
Class ilObjExercise.
static _lookupFinishedUserExercises($a_user_id)
Get all exercises for user.
hasAddToDesktop()
Add to desktop after hand-in.
sendFeedbackFileNotification($a_feedback_file, $a_user_id, $a_ass_id, $a_is_text_feedback=false)
Send feedback file notification to user.
setTimestamp($a_timestamp)
determinStatusOfUser($a_user_id=0)
Determine status of user.
updateAllUsersStatus()
Update status of all users.
setPassNr($a_val)
Set number of assignments that must be passed to pass the exercise.
getShowSubmissions()
Get whether submissions of learners should be shown to other learners after deadline.
setShowSubmissions($a_val)
Set whether submissions of learners should be shown to other learners after deadline.
__construct($a_id=0, $a_call_by_reference=true)
Constructor @access public.
processExerciseStatus(ilExAssignment $a_ass, array $a_user_ids, $a_has_submitted, array $a_valid_submissions=null)
update()
update object in db
saveCertificateVisibility($a_value)
Saves the visibility settings of the certificate.
setTutorFeedback($a_value)
updateUserStatus($a_user_id=0)
Update exercise status of user.
setCertificateVisibility($a_value)
Sets the visibility settings of the certificate.
exportGradesExcel()
Exports grades as excel.
setPassMode($a_val)
Set pass mode (all | nr)
setInstruction($a_instruction)
getPassNr()
Get number of assignments that must be passed to pass the exercise.
setDate($a_hour, $a_minutes, $a_day, $a_month, $a_year)
getCertificateVisibility()
Returns the visibility settings of the certificate.
read()
read object data from db into object
sendAssignment(ilExAssignment $a_ass, $a_members)
send exercise per mail to members
cloneObject($a_target_id, $a_copy_id=0, $a_omit_tree=false)
Clone exercise (no member data)
setCompletionBySubmission($bool)
Enabled/Disable completion by submission.
isCompletionBySubmissionEnabled()
Checks whether completion by submission is enabled or not.
getPassMode()
Get pass mode (all | nr)
static _lookupName($a_user_id)
lookup user name
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
Class ilObject Basic functions for all objects.
getRefId()
get reference id @access public
getId()
get object id @access public
getTitle()
get object title @access public
ILIAS Setting Class.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
$errors
Definition: index.php:6
$row
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
update($pash, $contents, Config $config)
$ret
Definition: parser.php:6
$query
global $DIC
Definition: saml.php:7
foreach($_POST as $key=> $value) $res
global $ilDB
$ilUser
Definition: imgupload.php:18