4 require_once
"classes/class.ilObject.php";
5 require_once
"./Modules/Exercise/classes/class.ilFileDataExercise.php";
6 require_once
"./Modules/Exercise/classes/class.ilExerciseMembers.php";
43 $this->
ilObject($a_id,$a_call_by_reference);
47 function setDate($a_hour,$a_minutes,$a_day,$a_month,$a_year)
49 $this->hour = (int) $a_hour;
50 $this->minutes = (int) $a_minutes;
51 $this->day = (int) $a_day;
52 $this->month = (int) $a_month;
53 $this->year = (int) $a_year;
54 $this->timestamp = mktime($this->hour,$this->minutes,0,$this->month,$this->day,$this->year);
63 $this->timestamp = $a_timestamp;
67 $this->instruction = $a_instruction;
81 $this->pass_mode = $a_val;
91 return $this->pass_mode;
101 $this->pass_nr = $a_val;
111 return $this->pass_nr;
121 $this->show_submissions = $a_val;
131 return $this->show_submissions;
142 return $this->hour == (int) date(
"H",$this->timestamp) and
143 $this->minutes == (int) date(
"i",$this->timestamp) and
144 $this->day == (int) date(
"d",$this->timestamp) and
145 $this->month == (int) date(
"m",$this->timestamp) and
146 $this->year == (int) date(
"Y",$this->timestamp);
153 function deliverFile($a_http_post_files, $a_ass_id, $user_id, $unzip =
false)
157 include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
159 $deliver_result = $storage->deliverFile($a_http_post_files, $user_id, $unzip);
163 $next_id = $ilDB->nextId(
"exc_returned");
164 $query = sprintf(
"INSERT INTO exc_returned ".
165 "(returned_id, obj_id, user_id, filename, filetitle, mimetype, ts, ass_id) ".
166 "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
167 $ilDB->quote($next_id,
"integer"),
168 $ilDB->quote($this->
getId(),
"integer"),
169 $ilDB->quote($user_id,
"integer"),
170 $ilDB->quote($deliver_result[
"fullname"],
"text"),
171 $ilDB->quote($a_http_post_files[
"name"],
"text"),
172 $ilDB->quote($deliver_result[
"mimetype"],
"text"),
174 $ilDB->quote($a_ass_id,
"integer")
176 $ilDB->manipulate(
$query);
177 if (!$this->members_obj->isAssigned($user_id))
179 $this->members_obj->assignMember($user_id);
193 if ($unzipUploadedFile && preg_match(
"/zip/", $a_http_post_files[
"type"]) == 1)
203 $this->file_obj->storeUploadedFile($a_http_post_files,
true);
209 $this->file_obj->unlinkFiles($a_files);
223 $ilDB->insert(
"exc_data", array(
224 "obj_id" => array(
"integer", $this->
getId()),
226 "time_stamp" => array(
"integer", $this->
getTimestamp()),
227 "pass_mode" => array(
"text", $this->
getPassMode()),
228 "pass_nr" => array(
"text", $this->
getPassNr()),
250 $new_obj->saveData();
256 include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
263 include_once(
'Services/Tracking/classes/class.ilLPObjSettings.php');
265 $obj_settings->cloneSettings($new_obj->getId());
266 unset($obj_settings);
295 require_once
"./Services/Utilities/classes/class.ilUtil.php";
309 if (!parent::delete())
314 $ilDB->manipulate(
"DELETE FROM exc_data ".
315 "WHERE obj_id = ".$ilDB->quote($this->getId(),
"integer"));
323 include_once
"./Services/Notification/classes/class.ilNotification.php";
339 function notify($a_event,$a_ref_id,$a_node_id,$a_params = 0)
352 $query =
"SELECT * FROM exc_data ".
353 "WHERE obj_id = ".$ilDB->quote($this->
getId(),
"integer");
356 while(
$row = $ilDB->fetchObject(
$res))
360 $pm = (
$row->pass_mode ==
"")
363 $this->setPassMode($pm);
365 if (
$row->pass_mode ==
"nr")
401 $ilDB->update(
"exc_data", array(
403 "time_stamp" => array(
"integer", $this->
getTimestamp()),
404 "pass_mode" => array(
"text", $this->
getPassMode()),
405 "pass_nr" => array(
"integer", $this->
getPassNr()),
408 "obj_id" => array(
"integer", $this->
getId())
415 #$this->members_obj->update();
424 include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
426 $files = $storage->getFiles();
430 include_once
"./classes/class.ilFileDataMail.php";
435 $mfile_obj->copyAttachmentFile($file[
"fullpath"], $file[
"name"]);
436 $file_names[] = $file[
"name"];
440 include_once
"Services/Mail/classes/class.ilMail.php";
443 $message = $tmp_mail_obj->sendMail(
446 count($file_names) ? $file_names : array(),array(
"normal"));
448 unset($tmp_mail_obj);
450 if(count($file_names))
452 $mfile_obj->unlinkFiles($file_names);
458 foreach($a_members as $member_id => $value)
476 "WHERE obj_id= ".$ilDB->quote($exc_id,
"integer").
477 " AND usr_id= ".$ilDB->quote($member_id,
"integer");
479 $set = $ilDB->query($q);
480 if ($rec = $ilDB->fetchAssoc($set))
491 include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
494 $body = $ass->getInstruction();
496 $body .= $lng->txt(
"exc_edit_until") .
": ".
499 $body .= ILIAS_HTTP_PATH.
502 "_".$this->getRefId().
"&client_id=".CLIENT_ID;
514 foreach($a_members as $member_id => $value)
517 $tmp_members[] = $tmp_obj->getLogin();
522 return implode(
',',$tmp_members ? $tmp_members : array());
529 $a_usr_id = $a_usr_id ? $a_usr_id : $ilUser->getId();
559 global
$lng, $ilUser;
565 include_once (
"Services/Utilities/classes/class.ilFileUtils.php");
572 foreach ($filearray[
"file"] as $key =>
$filename)
575 $a_http_post_files[
"type"] =
"other";
576 $a_http_post_files[
"tmp_name"] = $filearray[
"path"][$key].
"/".
$filename;
577 $a_http_post_files[
"error"] = 0;
578 $a_http_post_files[
"size"] = filesize($filearray[
"path"][$key].
"/".
$filename);
580 if ($storageMethod ==
"deliverFile")
582 $this->$storageMethod($a_http_post_files, $a_ass_id, $ilUser->id,
true);
584 else if ($storageMethod ==
"storeUploadedFile")
586 $this->file_obj->$storageMethod($a_http_post_files,
true,
true);
616 $ex_pos = strrpos($a_filename,
"/exercise/");
619 $a_filename = CLIENT_DATA_DIR.substr($a_filename, $ex_pos);
630 if (is_array($a_array))
632 foreach ($a_array as $k => $v)
634 if ($v[
"filename"] !=
"")
653 $a_user_id = $ilUser->getId();
656 include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
659 $passed_all_mandatory =
true;
660 $failed_a_mandatory =
false;
663 $passed_at_least_one =
false;
668 if ($a[
"mandatory"] && ($stat ==
"failed" || $stat ==
"notgraded"))
670 $passed_all_mandatory =
false;
672 if ($a[
"mandatory"] && ($stat ==
"failed"))
674 $failed_a_mandatory =
true;
676 if ($stat ==
"passed")
680 if ($stat ==
"notgraded")
686 if (count($ass) == 0)
688 $passed_all_mandatory =
false;
694 $overall_stat =
"notgraded";
695 if ($failed_a_mandatory)
698 $overall_stat =
"failed";
700 else if ($passed_all_mandatory && $cnt_passed > 0)
703 $overall_stat =
"passed";
710 $overall_stat =
"notgraded";
712 if ($failed_a_mandatory || ($cnt_passed + $cnt_notgraded < $min_nr))
715 $overall_stat =
"failed";
717 else if ($passed_all_mandatory && $cnt_passed >= $min_nr)
720 $overall_stat =
"passed";
725 "overall_status" => $overall_stat,
726 "failed_a_mandatory" => $failed_a_mandatory);
741 $a_user_id = $ilUser->getId();
746 include_once(
"./Modules/Exercise/classes/class.ilExerciseMembers.php");
748 $st[
"overall_status"]);
756 if (!is_object($this->members_obj));
761 $mems = $this->members_obj->getMembers();
762 foreach ($mems as $mem)
773 include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
776 include_once
"./Services/Excel/classes/class.ilExcelUtils.php";
780 $adapter->setCellValue(0, 0, $this->lng->txt(
"name"));
782 foreach ($ass_data as $ass)
784 $adapter->setCellValue(0, $cnt, $cnt);
787 $adapter->setCellValue(0, $cnt, $this->lng->txt(
"exc_total_exc"));
791 $getmems = $this->mem_obj->getMembers();
793 foreach ($getmems as $user_id)
801 foreach ($mems as $user_id =>
$d)
806 $adapter->setCellValue($row_cnt, 0,
807 $d[
"lastname"].
", ".
$d[
"firstname"].
" [".
$d[
"login"].
"]");
811 foreach ($ass_data as $ass)
814 $adapter->setCellValue($row_cnt, $col_cnt, $this->lng->txt(
"exc_".$status));
820 $adapter->setCellValue($row_cnt, $col_cnt, $this->lng->txt(
"exc_".$status));
828 $adapter->addWorksheet();
829 $adapter->setActiveWorksheet($adapter->getWorksheetCount()-1);
832 $adapter->setCellValue(0, 0, $this->lng->txt(
"name"));
834 foreach ($ass_data as $ass)
836 $adapter->setCellValue(0, $cnt, $cnt);
839 $adapter->setCellValue(0, $cnt, $this->lng->txt(
"exc_total_exc"));
845 foreach ($mems as $user_id =>
$d)
851 $adapter->setCellValue($row_cnt, 0,
852 $d[
"lastname"].
", ".
$d[
"firstname"].
" [".
$d[
"login"].
"]");
856 foreach ($ass_data as $ass)
858 $adapter->setCellValue($row_cnt, $col_cnt,
864 include_once
'Services/Tracking/classes/class.ilLPMarks.php';
865 $adapter->setCellValue($row_cnt, $col_cnt,
872 $adapter->deliver($exc_name.
".".$adapter->getFileExtension());
880 include_once(
"./Modules/Exercise/classes/class.ilExerciseMailNotification.php");
883 $not->setAssignmentId($a_ass_id);
885 $not->setRecipients(array($a_user_id));