4require_once 
"./Services/Object/classes/class.ilObject.php";
 
    5require_once 
"./Modules/Exercise/classes/class.ilExerciseMembers.php";
 
   54                $this->
ilObject($a_id,$a_call_by_reference);
 
   58        function setDate($a_hour,$a_minutes,$a_day,$a_month,$a_year)
 
   60                $this->hour = (int) $a_hour;
 
   61                $this->minutes = (int) $a_minutes;
 
   62                $this->day = (int) $a_day;
 
   63                $this->month = (int) $a_month;
 
   64                $this->year = (int) $a_year;
 
   65                $this->timestamp = mktime($this->hour,$this->minutes,0,$this->month,$this->day,$this->year);
 
   74                $this->timestamp = $a_timestamp;
 
   78                $this->instruction = $a_instruction;
 
   92                $this->pass_mode = $a_val;
 
  102                return $this->pass_mode;
 
  112                $this->pass_nr = $a_val;
 
  122                return $this->pass_nr;
 
  132                $this->show_submissions = $a_val;
 
  142                return $this->show_submissions;
 
  153                return  $this->hour == (int) date(
"H",$this->timestamp) and
 
  154                        $this->minutes == (int) date(
"i",$this->timestamp) and
 
  155                        $this->day == (int) date(
"d",$this->timestamp) and
 
  156                        $this->month == (int) date(
"m",$this->timestamp) and
 
  157                        $this->year == (int) date(
"Y",$this->timestamp);
 
  164        function deliverFile($a_http_post_files, $a_ass_id, $user_id, $unzip = 
false)
 
  168                include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  170                $deliver_result = $storage->deliverFile($a_http_post_files, $user_id, $unzip);
 
  174                        $next_id = 
$ilDB->nextId(
"exc_returned");
 
  175                        $query = sprintf(
"INSERT INTO exc_returned ".
 
  176                                                         "(returned_id, obj_id, user_id, filename, filetitle, mimetype, ts, ass_id) ".
 
  177                                                         "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
 
  178                                $ilDB->quote($next_id, 
"integer"),
 
  179                                $ilDB->quote($this->getId(), 
"integer"),
 
  180                                $ilDB->quote($user_id, 
"integer"),
 
  181                                $ilDB->quote($deliver_result[
"fullname"], 
"text"),
 
  182                                $ilDB->quote($a_http_post_files[
"name"], 
"text"),
 
  183                                $ilDB->quote($deliver_result[
"mimetype"], 
"text"),
 
  185                                $ilDB->quote($a_ass_id, 
"integer")
 
  193                                $user_ids = array($user_id);
 
  201                        foreach($user_ids as $user_id)
 
  203                                if (!$this->members_obj->isAssigned($user_id))
 
  205                                        $this->members_obj->assignMember($user_id);
 
  220                if ($unzipUploadedFile && preg_match(
"/zip/",   $a_http_post_files[
"type"]) == 1)
 
  230                        $this->file_obj->storeUploadedFile($a_http_post_files, 
true);
 
  236                $this->file_obj->unlinkFiles($a_files);
 
  250                $ilDB->insert(
"exc_data", array(
 
  251                        "obj_id" => array(
"integer", $this->
getId()),
 
  253                        "time_stamp" => array(
"integer", $this->
getTimestamp()),
 
  254                        "pass_mode" => array(
"text", $this->
getPassMode()),
 
  255                        "pass_nr" => array(
"text", $this->
getPassNr()),
 
  275                $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
 
  279                $new_obj->saveData();
 
  288                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  292                include_once(
'Services/Tracking/classes/class.ilLPObjSettings.php');
 
  294                $obj_settings->cloneSettings($new_obj->getId());
 
  295                unset($obj_settings);
 
  317                                $user_ids = array($user_id);
 
  320                        foreach($user_ids as $user_id)
 
  334                require_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  345                global 
$ilDB, $ilAppEventHandler;
 
  348                if (!parent::delete())
 
  353                $ilDB->manipulate(
"DELETE FROM exc_data ".
 
  354                        "WHERE obj_id = ".
$ilDB->quote($this->getId(), 
"integer"));
 
  362                include_once 
"./Services/Notification/classes/class.ilNotification.php";
 
  365                $ilAppEventHandler->raise(
'Modules/Exercise',
 
  367                        array(
'obj_id'=>$this->
getId()));               
 
  382        function notify($a_event,$a_ref_id,$a_node_id,$a_params = 0)
 
  386                parent::notify($a_event,$a_ref_id,$a_node_id,$a_params);
 
  395                $query = 
"SELECT * FROM exc_data ".
 
  396                        "WHERE obj_id = ".$ilDB->quote($this->
getId(), 
"integer");
 
  403                        $pm = (
$row->pass_mode == 
"")
 
  406                        $this->setPassMode($pm);
 
  408                        if (
$row->pass_mode == 
"nr")
 
  442                $ilDB->update(
"exc_data", array(
 
  444                        "time_stamp" => array(
"integer", $this->
getTimestamp()),
 
  445                        "pass_mode" => array(
"text", $this->
getPassMode()),
 
  446                        "pass_nr" => array(
"integer", $this->
getPassNr()),
 
  450                        "obj_id" => array(
"integer", $this->
getId())
 
  457                #$this->members_obj->update(); 
  466                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  469                include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  471                $files = $storage->getFiles();
 
  475                        include_once 
"./Services/Mail/classes/class.ilFileDataMail.php";
 
  480                                $mfile_obj->copyAttachmentFile(
$file[
"fullpath"], 
$file[
"name"]);
 
  481                                $file_names[] = 
$file[
"name"];
 
  485                include_once 
"Services/Mail/classes/class.ilMail.php";
 
  488                $message = $tmp_mail_obj->sendMail(
 
  491                        count($file_names) ? $file_names : array(),array(
"normal"));
 
  493                unset($tmp_mail_obj);
 
  495                if(count($file_names))
 
  497                        $mfile_obj->unlinkFiles($file_names);
 
  503                foreach($a_members as $member_id => $value)
 
  521                "WHERE obj_id= ".$ilDB->quote($exc_id, 
"integer").
 
  522                " AND usr_id= ".$ilDB->quote($member_id, 
"integer");
 
  524                $set = 
$ilDB->query($q);
 
  525                if ($rec = 
$ilDB->fetchAssoc($set))
 
  536                $lng->loadLanguageModule(
"exc");
 
  538                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  541                $body = $ass->getInstruction();
 
  543                if ($ass->getDeadline() == 0)
 
  545                        $body .= 
$lng->txt(
"exc_edit_until") . 
": ".
 
  546                                $lng->txt(
"exc_no_deadline_specified");
 
  550                        $body .= 
$lng->txt(
"exc_edit_until") . 
": ".
 
  554                $body .= ILIAS_HTTP_PATH.
 
  557                        "_".$this->getRefId().
"&client_id=".CLIENT_ID;
 
  566                if ($a_ass_title != 
"")
 
  568                        $subject.= 
": ".$a_ass_title;
 
  576                foreach($a_members as $member_id => $value)
 
  579                        $tmp_members[] = $tmp_obj->getLogin();
 
  584                return implode(
',',$tmp_members ? $tmp_members : array());
 
  602                include_once (
"Services/Utilities/classes/class.ilFileUtils.php");
 
  609                        foreach ($filearray[
"file"] as $key => 
$filename)
 
  612                                $a_http_post_files[
"type"] = 
"other";
 
  613                                $a_http_post_files[
"tmp_name"] = $filearray[
"path"][$key].
"/".
$filename;
 
  614                                $a_http_post_files[
"error"] = 0;
 
  615                                $a_http_post_files[
"size"] = filesize($filearray[
"path"][$key].
"/".
$filename);
 
  617                                if ($storageMethod == 
"deliverFile")
 
  619                                        $this->$storageMethod($a_http_post_files, $a_ass_id, 
$ilUser->id, 
true);
 
  621                                else if ($storageMethod == 
"storeUploadedFile")
 
  623                                        $this->file_obj->$storageMethod($a_http_post_files, 
true, 
true);                                
 
  652                $ex_pos = strrpos($a_filename, 
"/exercise/");
 
  655                        $a_filename = CLIENT_DATA_DIR.substr($a_filename, $ex_pos);
 
  666                if (is_array($a_array))
 
  668                        foreach ($a_array as $k => $v)
 
  670                                if ($v[
"filename"] != 
"")
 
  692                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  695                $passed_all_mandatory = 
true;
 
  696                $failed_a_mandatory = 
false;
 
  699                $passed_at_least_one = 
false;
 
  704                        if ($a[
"mandatory"] && ($stat == 
"failed" || $stat == 
"notgraded"))
 
  706                                $passed_all_mandatory = 
false;
 
  708                        if ($a[
"mandatory"] && ($stat == 
"failed"))
 
  710                                $failed_a_mandatory = 
true;
 
  712                        if ($stat == 
"passed")
 
  716                        if ($stat == 
"notgraded")
 
  722                if (count($ass) == 0)
 
  724                        $passed_all_mandatory = 
false;
 
  730                        $overall_stat = 
"notgraded";
 
  731                        if ($failed_a_mandatory)
 
  734                                $overall_stat = 
"failed";
 
  736                        else if ($passed_all_mandatory && $cnt_passed > 0)
 
  739                                $overall_stat = 
"passed";
 
  746                        $overall_stat = 
"notgraded";
 
  748                        if ($failed_a_mandatory || ($cnt_passed + $cnt_notgraded < $min_nr))
 
  751                                $overall_stat = 
"failed";
 
  753                        else if ($passed_all_mandatory && $cnt_passed >= $min_nr)
 
  756                                $overall_stat = 
"passed";
 
  761                        "overall_status" => $overall_stat,
 
  762                        "failed_a_mandatory" => $failed_a_mandatory);
 
  782                include_once(
"./Modules/Exercise/classes/class.ilExerciseMembers.php");
 
  784                        $st[
"overall_status"]);
 
  792                if (!is_object($this->members_obj));
 
  797                $mems = $this->members_obj->getMembers();
 
  798                foreach ($mems as $mem)
 
  809                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  812                include_once 
"./Services/Excel/classes/class.ilExcelWriterAdapter.php";
 
  815                $workbook = $adapter->getWorkbook();
 
  816                $workbook->setVersion(8); 
 
  817                include_once (
"./Services/Excel/classes/class.ilExcelUtils.php");
 
  822                $mainworksheet = $workbook->addWorksheet();
 
  827                foreach ($ass_data as $ass)
 
  829                        $mainworksheet->writeString(0, $cnt, $cnt);
 
  836                $getmems = $this->mem_obj->getMembers();
 
  838                foreach ($getmems as $user_id)
 
  846                foreach ($mems as $user_id => 
$d)
 
  851                        $mainworksheet->writeString($row_cnt, 0,
 
  856                        foreach ($ass_data as $ass)
 
  873                $worksheet2 = $workbook->addWorksheet();
 
  878                foreach ($ass_data as $ass)
 
  880                        $worksheet2->writeString(0, $cnt, $cnt);
 
  889                foreach ($mems as $user_id => 
$d)
 
  895                        $worksheet2->writeString($row_cnt, 0,
 
  900                        foreach ($ass_data as $ass)
 
  902                                $worksheet2->writeString($row_cnt, $col_cnt,
 
  908                        include_once 
'Services/Tracking/classes/class.ilLPMarks.php';
 
  909                        $worksheet2->writeString($row_cnt, $col_cnt,
 
  926                $user_ids = $a_user_id;
 
  927                if(!is_array($user_ids))
 
  929                        $user_ids = array($user_ids);
 
  932                include_once(
"./Modules/Exercise/classes/class.ilExerciseMailNotification.php");
 
  934                $type = (bool)$a_is_text_feedback
 
  939                $not->setType(
$type);
 
  940                $not->setAssignmentId($a_ass_id);
 
  941                $not->setObjId($this->
getId());
 
  946                $not->setRecipients($user_ids);
 
  974                $this->completion_by_submission = (bool)$bool;
 
  995                        include_once 
'Modules/Exercise/classes/class.ilExAssignment.php';       
 
 1001                                $user_ids = array(
$ilUser->getId());
 
 1005                                'SELECT returned_id'.
 
 1006                                ' FROM exc_returned'.
 
 1007                                ' WHERE obj_id = '.
$ilDB->quote($this->getId(), 
'integer').
 
 1008                                ' AND ass_id = '.$ilDB->quote($ass_id, 
'integer').
 
 1009                                ' AND '.$ilDB->in(
'user_id', $user_ids, 
'', 
'integer')
 
 1018                                $status = 
'notgraded';
 
 1020                        foreach($user_ids as $user_id)
 
 1037                $set = 
$ilDB->query(
"SELECT obj_id, status FROM exc_members".
 
 1038                        " WHERE usr_id = ".
$ilDB->quote($a_user_id, 
"integer").
 
 1039                        " AND (status = ".$ilDB->quote(
"passed", 
"text").
 
 1040                        " OR status = ".$ilDB->quote(
"failed", 
"text").
")");
 
 1045                        $all[
$row[
"obj_id"]] = (
$row[
"status"] == 
"passed");
 
 1062                $next_id = 
$ilDB->nextId(
"exc_returned");
 
 1063                $query = sprintf(
"INSERT INTO exc_returned ".
 
 1064                                                 "(returned_id, obj_id, user_id, filetitle, ass_id, ts, atext) ".
 
 1065                                                 "VALUES (%s, %s, %s, %s, %s, %s, %s)",
 
 1066                        $ilDB->quote($next_id, 
"integer"),
 
 1067                        $ilDB->quote($this->getId(), 
"integer"),
 
 1068                        $ilDB->quote($user_id, 
"integer"),
 
 1069                        $ilDB->quote($a_wsp_id, 
"text"),
 
 1070                        $ilDB->quote($a_ass_id, 
"integer"),
 
 1072                        $ilDB->quote($a_text, 
"text")
 
 1075                if (!$this->members_obj->isAssigned($user_id))
 
 1077                        $this->members_obj->assignMember($user_id);
 
 1097                $ilDB->manipulate(
"DELETE FROM exc_returned".
 
 1098                        " WHERE obj_id = ".
$ilDB->quote($this->getId(), 
"integer").
 
 1099                        " AND user_id = ".$ilDB->quote($user_id, 
"integer").
 
 1100                        " AND ass_id = ".$ilDB->quote($a_ass_id, 
"integer").
 
 1101                        " AND returned_id = ".$ilDB->quote($a_returned_id, 
"integer"));         
 
 1144                                $ilDB->manipulate(
"UPDATE exc_returned".
 
 1145                                        " SET atext = ".
$ilDB->quote($a_text, 
"text").
 
 1146                                        ", ts = ".$ilDB->quote(
ilUtil::now(), 
"timestamp").
 
 1147                                        " WHERE returned_id = ".$ilDB->quote(
$id, 
"integer"));
 
 1157                $set = 
$ilDB->query(
"SELECT obj_id".
 
 1158                        " FROM exc_returned".
 
 1159                        " WHERE returned_id = ".
$ilDB->quote($a_returned_id, 
"integer"));
 
 1161                return (
int)
$row[
"obj_id"];             
 
 1171                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
 1185                $set = 
$ilDB->query(
"SELECT obj_id, ass_id".
 
 1186                        " FROM exc_returned".
 
 1187                        " WHERE user_id = ".
$ilDB->quote($a_user_id, 
"integer").
 
 1188                        " AND filetitle = ".$ilDB->quote($a_filetitle, 
"text"));
 
 1205                return (strlen($this->certificate_visibility)) ? $this->certificate_visibility : 0;
 
 1216                $this->certificate_visibility = $a_value;
 
 1229                $affectedRows = 
$ilDB->manipulateF(
"UPDATE exc_data SET certificate_visibility = %s WHERE obj_id = %s",
 
 1230                        array(
'integer', 
'integer'),
 
 1231                        array($a_value, $this->
getId())
 
 1244                include_once 
"Services/Certificate/classes/class.ilCertificate.php";
 
 1249                        if($certificate_visible != 2)
 
 1252                                include_once 
'Modules/Exercise/classes/class.ilExerciseMembers.php';
 
 1254                                if($certificate_visible == 1 && $status == 
"passed")
 
 1259                                else if($certificate_visible == 0 && $status != 
"notgraded")
 
 1276                return (
bool)$exc_set->get(
"add_to_pd", 
true);
 
static isObjectActive($a_obj_id)
static getTeamIdByAssignment($a_ass_id, $a_user_id)
Find team by assignment.
lookupMarkOfUser($a_ass_id, $a_user_id)
Lookup user mark.
updateStatusSentForUser($a_ass_id, $a_user_id, $a_status)
was: setStatusSentForMember($a_member_id,$a_status)
static getTeamMembersByAssignmentId($a_ass_id, $a_user_id)
Find team members by assignment and team member.
static writeTeamLog($a_team_id, $a_action, $a_details=null)
Add entry to team log.
updateStatusOfUser($a_ass_id, $a_user_id, $a_status)
was: setStatusForMember($a_member_id,$a_status)
lookupStatusOfUser($a_ass_id, $a_user_id)
was: getStatusByMember
static getAssignmentDataOfExercise($a_exc_id)
Get assignments data of an exercise in an array.
getDeliveredFiles($a_exc_id, $a_ass_id, $a_user_id, $a_filter_empty_filename=false)
was: getDeliveredFiles($a_member_id)
cloneAssignmentsOfExercise($a_old_exc_id, $a_new_exc_id)
Clone assignments of exercise.
static lookupTitle($a_id)
Lookup title.
deleteDeliveredFiles($a_exc_id, $a_ass_id, $file_id_array, $a_user_id)
was: deleteDeliveredFiles($file_id_array, $a_member_id)
updateStatusReturnedForUser($a_ass_id, $a_user_id, $a_status)
was: setStatusReturnedForMember($a_member_id,$a_status)
static deleteAllDeliveredFilesOfUser($a_exc_id, $a_user_id)
Delete all delivered files of user.
_convert_text($a_text, $a_target="has been removed")
Class ilExcelWriterAdapter.
const TYPE_FEEDBACK_FILE_ADDED
const TYPE_FEEDBACK_TEXT_ADDED
_writeReturned($a_obj_id, $a_user_id, $a_status)
Write returned status.
_writeStatus($a_obj_id, $a_user_id, $a_status)
Write user status.
_lookupStatus($a_obj_id, $a_user_id)
Lookup current status (notgraded|passed|failed)
This class handles all operations on files (attachments) in directory ilias_data/mail.
Class to report exception.
utf8_encode($string)
utf8-encodes string if it is not a valid utf8-string.
processZipFile($a_directory, $a_file, $structure, $ref_id=null, $containerType=null, $tree=null, $access_handler=null)
unzips in given directory and processes uploaded zip for use as single files
recursive_dirscan($dir, &$arr)
Recursively scans a given directory and writes path and filename into referenced array.
_lookupMark($a_usr_id, $a_obj_id)
Class Mail this class handles base functions for mail handling.
static removeForObject($type, $id)
Remove all notifications for given object.
const TYPE_EXERCISE_SUBMISSION
deliverFile($a_http_post_files, $a_ass_id, $user_id, $unzip=false)
Save submitted file of user.
static _fixFilename($a_filename)
This function fixes filenames.
static _lookupFinishedUserExercises($a_user_id)
Get all exercises for user.
sendAssignment($a_exc_id, $a_ass_id, $a_members)
send exercise per mail to members
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.
deleteResourceObject($a_ass_id, $user_id, $a_returned_id)
Remove personal resource to assigment.
static lookupExerciseIdForReturnedId($a_returned_id)
setTimestamp($a_timestamp)
cloneObject($a_target_id, $a_copy_id=0)
Clone exercise (no member data)
determinStatusOfUser($a_user_id=0)
Determine status of user.
updateAllUsersStatus()
Update status of all users.
notify($a_event, $a_ref_id, $a_node_id, $a_params=0)
notifys an object about an event occured Based on the event happend, each object may decide how it re...
setPassNr($a_val)
Set number of assignments that must be passed to pass the exercise.
processUploadedFile($fileTmp, $storageMethod, $persistentErrorMessage, $a_ass_id)
processes errorhandling etc for uploaded archive
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.
deleteAllDeliveredFilesOfUser($a_user_id)
Delete all delivered files of user.
_lookupStatusTime($exc_id, $member_id)
Get time when exercise has been set to solved.
update()
update object in db
saveCertificateVisibility($a_value)
Saves the visibility settings of the certificate.
updateUserStatus($a_user_id=0)
Update exercise status of user.
updateTextSubmission($a_exc_id, $a_ass_id, $a_user_id, $a_text)
Handle text assignment submissions.
setCertificateVisibility($a_value)
Sets the visibility settings of the certificate.
exportGradesExcel()
Exports grades as excel.
static findUserFiles($a_user_id, $a_filetitle)
Check if given file was assigned.
handleSubmission($ass_id)
This method is called after an user submitted one or more files.
setPassMode($a_val)
Set pass mode (all | nr)
setInstruction($a_instruction)
getPassNr()
Get number of assignments that must be passed to pass the exercise.
hasUserCertificate($a_user_id)
Check if given user has certificate to show/download.
$completion_by_submission
setDate($a_hour, $a_minutes, $a_day, $a_month, $a_year)
__formatSubject($a_ass_title="")
__formatRecipients($a_members)
getCertificateVisibility()
Returns the visibility settings of the certificate.
ilObjExercise($a_id=0, $a_call_by_reference=true)
Constructor @access public.
static _fixFilenameArray($a_array)
Iterates an associative array and fixes all fields with the key "filename" using the _fixFilename() m...
deleteDeliveredFiles($a_exc_id, $a_ass_id, $file_id_array, $user_id)
Deletes already delivered files.
setCompletionBySubmission($bool)
Enabled/Disable completion by submission.
isCompletionBySubmissionEnabled()
Checks whether completion by submission is enabled or not.
getPassMode()
Get pass mode (all | nr)
addUploadedFile($a_http_post_files, $unzipUploadedFile=false)
Upload assigment files.
addResourceObject($a_wsp_id, $a_ass_id, $user_id, $a_text=null)
Add personal resource to assigment.
deliverReturnedFiles($user_id)
Delivers the returned files of an user.
static _lookupName($a_user_id)
lookup user name
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.
getType()
get object type @access public
ilObject($a_id=0, $a_reference=true)
Constructor @access public.
getRefId()
get reference id @access public
getId()
get object id @access public
getTitle()
get object title @access public
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getMySQLTimestamp($a_ts)
Get MySQL timestamp in 4.1.x or higher format (yyyy-mm-dd hh:mm:ss) This function converts a timestam...
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static now()
Return current timestamp in Y-m-d H:i:s format.
static ilTempnam()
Create a temporary file in an ILIAS writable directory.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...