4include_once(
"./Services/DataSet/classes/class.ilDataSet.php");
 
   32        return array(
"4.1.0", 
"4.4.0", 
"5.0.0", 
"5.1.0", 
"5.2.0", 
"5.3.0");
 
   43        return "http://www.ilias.de/xml/Modules/Exercise/" . $a_entity;
 
   52    protected function getTypes($a_entity, $a_version)
 
   54        if ($a_entity == 
"exc") {
 
   60                        "Description" => 
"text",
 
   62                        "PassNr" => 
"integer",
 
   63                        "ShowSubmissions" => 
"integer" 
   72                        "Description" => 
"text",
 
   74                        "PassNr" => 
"integer",
 
   75                        "ShowSubmissions" => 
"integer",
 
   76                        "ComplBySubmission" => 
"integer" 
   84                        "Description" => 
"text",
 
   86                        "PassNr" => 
"integer",
 
   87                        "ShowSubmissions" => 
"integer",
 
   88                        "ComplBySubmission" => 
"integer",
 
   89                        "Tfeedback" => 
"integer" 
   94        if ($a_entity == 
"exc_assignment") {
 
   99                        "ExerciseId" => 
"integer",
 
  100                        "Deadline" => 
"text",
 
  101                        "Instruction" => 
"text",
 
  103                        "Mandatory" => 
"integer",
 
  104                        "OrderNr" => 
"integer",
 
  105                        "Dir" => 
"directory");
 
  110                        "ExerciseId" => 
"integer",
 
  112                        "Deadline" => 
"integer",
 
  113                        "Instruction" => 
"text",
 
  115                        "Mandatory" => 
"integer",
 
  116                        "OrderNr" => 
"integer",
 
  120                        ,
"PeerMin" => 
"integer" 
  121                        ,
"PeerDeadline" => 
"integer" 
  123                        ,
"FeedbackFile" => 
"integer" 
  124                        ,
"FeedbackCron" => 
"integer" 
  125                        ,
"FeedbackDate" => 
"integer" 
  126                        ,
"FeedbackDir" => 
"directory" 
  132                        "ExerciseId" => 
"integer",
 
  134                        "Deadline" => 
"integer",
 
  135                        "Instruction" => 
"text",
 
  137                        "Mandatory" => 
"integer",
 
  138                        "OrderNr" => 
"integer",
 
  142                        ,
"PeerMin" => 
"integer" 
  143                        ,
"PeerDeadline" => 
"integer" 
  144                        ,
"PeerFile" => 
"integer" 
  145                        ,
"PeerPersonal" => 
"integer" 
  147                        ,
"FeedbackFile" => 
"integer" 
  148                        ,
"FeedbackCron" => 
"integer" 
  149                        ,
"FeedbackDate" => 
"integer" 
  150                        ,
"FeedbackDir" => 
"directory" 
  157                        "ExerciseId" => 
"integer",
 
  159                        "Deadline" => 
"integer",
 
  160                        "Deadline2" => 
"integer",
 
  161                        "Instruction" => 
"text",
 
  163                        "Mandatory" => 
"integer",
 
  164                        "OrderNr" => 
"integer",
 
  165                        "TeamTutor" => 
"integer",
 
  166                        "MaxFile" => 
"integer",
 
  170                        ,
"PeerMin" => 
"integer" 
  171                        ,
"PeerDeadline" => 
"integer" 
  172                        ,
"PeerFile" => 
"integer" 
  173                        ,
"PeerPersonal" => 
"integer" 
  174                        ,
"PeerChar" => 
"integer" 
  175                        ,
"PeerUnlock" => 
"integer" 
  176                        ,
"PeerValid" => 
"integer" 
  177                        ,
"PeerText" => 
"integer" 
  178                        ,
"PeerRating" => 
"integer" 
  179                        ,
"PeerCritCat" => 
"integer" 
  181                        ,
"FeedbackFile" => 
"integer" 
  182                        ,
"FeedbackCron" => 
"integer" 
  183                        ,
"FeedbackDate" => 
"integer" 
  184                        ,
"FeedbackDir" => 
"directory" 
  189                        "ExerciseId" => 
"integer",
 
  191                        "Deadline" => 
"integer",
 
  192                        "Deadline2" => 
"integer",
 
  193                        "Instruction" => 
"text",
 
  195                        "Mandatory" => 
"integer",
 
  196                        "OrderNr" => 
"integer",
 
  197                        "TeamTutor" => 
"integer",
 
  198                        "MaxFile" => 
"integer",
 
  199                        "Dir" => 
"directory",
 
  201                        "WebDataDir" => 
"directory" 
  204                        ,
"PeerMin" => 
"integer" 
  205                        ,
"PeerDeadline" => 
"integer" 
  206                        ,
"PeerFile" => 
"integer" 
  207                        ,
"PeerPersonal" => 
"integer" 
  208                        ,
"PeerChar" => 
"integer" 
  209                        ,
"PeerUnlock" => 
"integer" 
  210                        ,
"PeerValid" => 
"integer" 
  211                        ,
"PeerText" => 
"integer" 
  212                        ,
"PeerRating" => 
"integer" 
  213                        ,
"PeerCritCat" => 
"integer" 
  215                        ,
"FeedbackFile" => 
"integer" 
  216                        ,
"FeedbackCron" => 
"integer" 
  217                        ,
"FeedbackDate" => 
"integer" 
  218                        ,
"FeedbackDir" => 
"directory" 
  219                        ,
"FbDateCustom" => 
"integer" 
  224        if ($a_entity == 
"exc_cit_cat") {
 
  225            switch ($a_version) {
 
  231                        ,
"Parent" => 
"integer" 
  238        if ($a_entity == 
"exc_cit") {
 
  239            switch ($a_version) {
 
  245                        ,
"Parent" => 
"integer" 
  250                        ,
"Required" => 
"integer" 
  257        if ($a_entity == 
"exc_ass_file_order") {
 
  258            switch ($a_version) {
 
  262                    , 
"AssignmentId" => 
"integer" 
  263                    , 
"Filename" => 
"text" 
  264                    , 
"OrderNr" => 
"integer" 
  269        if ($a_entity == 
"exc_ass_reminders") {
 
  270            switch ($a_version) {
 
  274                        "AssignmentId" => 
"integer",
 
  275                        "ExerciseId" => 
"integer",
 
  276                        "Status" => 
"integer",
 
  277                        "Start" => 
"integer",
 
  279                        "Frequency" => 
"integer",
 
  280                        "LastSend" => 
"integer",
 
  281                        "TemplateId" => 
"integer" 
  294    public function readData($a_entity, $a_version, $a_ids, $a_field = 
"")
 
  298        if (!is_array($a_ids)) {
 
  299            $a_ids = array($a_ids);
 
  302        if ($a_entity == 
"exc") {
 
  303            switch ($a_version) {
 
  306                        " pass_mode, pass_nr, show_submissions" .
 
  307                        " FROM exc_data JOIN object_data ON (exc_data.obj_id = object_data.obj_id)" .
 
  308                        " WHERE " . 
$ilDB->in(
"exc_data.obj_id", $a_ids, 
false, 
"integer"));
 
  315                        " pass_mode, pass_nr, show_submissions, compl_by_submission" .
 
  316                        " FROM exc_data JOIN object_data ON (exc_data.obj_id = object_data.obj_id)" .
 
  317                        " WHERE " . 
$ilDB->in(
"exc_data.obj_id", $a_ids, 
false, 
"integer"));
 
  323                        " pass_mode, pass_nr, show_submissions, compl_by_submission, tfeedback" .
 
  324                        " FROM exc_data JOIN object_data ON (exc_data.obj_id = object_data.obj_id)" .
 
  325                        " WHERE " . 
$ilDB->in(
"exc_data.obj_id", $a_ids, 
false, 
"integer"));
 
  330        if ($a_entity == 
"exc_assignment") {
 
  331            switch ($a_version) {
 
  334                        " instruction, title, start_time, mandatory, order_nr" .
 
  335                        " FROM exc_assignment" .
 
  336                        " WHERE " . 
$ilDB->in(
"exc_id", $a_ids, 
false, 
"integer"));
 
  341                        " instruction, title, start_time, mandatory, order_nr, peer, peer_min, peer_dl peer_deadline," .
 
  342                        " fb_file feedback_file, fb_cron feedback_cron, fb_date feedback_date" .
 
  343                        " FROM exc_assignment" .
 
  344                        " WHERE " . 
$ilDB->in(
"exc_id", $a_ids, 
false, 
"integer"));
 
  349                        " instruction, title, start_time, mandatory, order_nr, peer, peer_min, peer_dl peer_deadline," .
 
  350                        " peer_file, peer_prsl peer_personal, fb_file feedback_file, fb_cron feedback_cron, fb_date feedback_date" .
 
  351                        " FROM exc_assignment" .
 
  352                        " WHERE " . 
$ilDB->in(
"exc_id", $a_ids, 
false, 
"integer"));
 
  359                        " instruction, title, start_time, mandatory, order_nr, team_tutor, max_file, peer, peer_min," .
 
  360                        " peer_dl peer_deadline, peer_file, peer_prsl peer_personal, peer_char, peer_unlock, peer_valid," .
 
  361                        " peer_text, peer_rating, peer_crit_cat, fb_file feedback_file, fb_cron feedback_cron, fb_date feedback_date," .
 
  363                        " FROM exc_assignment" .
 
  364                        " WHERE " . 
$ilDB->in(
"exc_id", $a_ids, 
false, 
"integer"));
 
  369        if ($a_entity == 
"exc_crit_cat") {
 
  370            switch ($a_version) {
 
  375                        " FROM exc_crit_cat" .
 
  376                        " WHERE " . 
$ilDB->in(
"parent", $a_ids, 
false, 
"integer"));
 
  381        if ($a_entity == 
"exc_crit") {
 
  382            switch ($a_version) {
 
  387                        ", descr, pos, required, def" .
 
  389                        " WHERE " . 
$ilDB->in(
"parent", $a_ids, 
false, 
"integer"));
 
  390                    foreach ($this->
data as $k => $v) {
 
  391                        $this->
data[$k][
"DefJson"] = 
"";
 
  392                        if ($v[
"Def"] != 
"") {
 
  393                            $this->
data[$k][
"DefJson"] = json_encode(unserialize($v[
"Def"]));
 
  400        if ($a_entity == 
"exc_ass_file_order") {
 
  401            switch ($a_version) {
 
  404                        " FROM exc_ass_file_order" .
 
  405                        " WHERE " . 
$ilDB->in(
"assignment_id", $a_ids, 
false, 
"integer"));
 
  410        if ($a_entity == 
"exc_ass_reminders") {
 
  411            switch ($a_version) {
 
  413                    $this->
getDirectDataFromQuery(
"SELECT type, ass_id, exc_id, status, start, end, freq, last_send, template_id" .
 
  414                        " FROM exc_ass_reminders" .
 
  415                        " WHERE " . 
$ilDB->in(
"ass_id", $a_ids, 
false, 
"integer"));
 
  429        if ($a_entity == 
"exc_assignment") {
 
  431            if ($a_set[
"StartTime"] != 
"") {
 
  435            if ($a_set[
"Deadline"] != 
"") {
 
  439            if ($a_set[
"Deadline2"] != 
"") {
 
  444            include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  446            $a_set[
"Dir"] = $fstorage->getPath();
 
  448            include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  450            $a_set[
"FeedbackDir"] = $fstorage->getGlobalFeedbackPath();
 
  453            include_once(
"./Modules/Exercise/classes/class.ilFSWebStorageExercise.php");
 
  455            $a_set[
'WebDataDir'] = $fswebstorage->getPath();
 
  459        if ($a_entity == 
"exc_ass_reminders") {
 
  460            if ($a_set[
"End"] != 
"") {
 
  464            if ($a_set[
"LastSend"] != 
"") {
 
  481                switch ($a_version) {
 
  486                            "exc_assignment" => array(
"ids" => $a_rec[
"Id"])
 
  493                            "exc_crit_cat" => array(
"ids" => $a_rec[
"Id"]),
 
  494                            "exc_assignment" => array(
"ids" => $a_rec[
"Id"])
 
  501                    "exc_crit" => array(
"ids" => $a_rec[
"Id"])
 
  504            case "exc_assignment":
 
  505                switch ($a_version) {
 
  508                            "exc_ass_file_order" => array(
"ids" => $a_rec[
"Id"]),
 
  509                            "exc_ass_reminders" => array(
"ids" => $a_rec[
"Id"])
 
  525    public function importRecord($a_entity, $a_types, $a_rec, $a_mapping, $a_schema_version)
 
  532                include_once(
"./Modules/Exercise/classes/class.ilObjExercise.php");
 
  534                if ($new_id = $a_mapping->getMapping(
'Services/Container', 
'objs', $a_rec[
'Id'])) {
 
  538                    $newObj->setType(
"exc");
 
  539                    $newObj->create(
true);
 
  542                $newObj->setTitle($a_rec[
"Title"]);
 
  543                $newObj->setDescription($a_rec[
"Description"]);
 
  544                $newObj->setPassMode($a_rec[
"PassMode"]);
 
  545                $newObj->setPassNr($a_rec[
"PassNr"]);
 
  546                $newObj->setShowSubmissions($a_rec[
"ShowSubmissions"]);
 
  547                $newObj->setCompletionBySubmission($a_rec[
"ComplBySubmission"]);
 
  548                $newObj->setTutorFeedback($a_rec[
"Tfeedback"]);
 
  551                $this->current_exc = $newObj;
 
  553                $a_mapping->addMapping(
"Modules/Exercise", 
"exc", $a_rec[
"Id"], $newObj->getId());
 
  556            case "exc_assignment":
 
  557                $exc_id = $a_mapping->getMapping(
"Modules/Exercise", 
"exc", $a_rec[
"ExerciseId"]);
 
  559                    if (is_object($this->current_exc) && $this->current_exc->getId() == $exc_id) {
 
  560                        $exc = $this->current_exc;
 
  562                        include_once(
"./Modules/Exercise/classes/class.ilObjExercise.php");
 
  566                    include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  569                    $ass->setExerciseId($exc_id);
 
  571                    if ($a_rec[
"StartTime"] != 
"") {
 
  576                    if ($a_rec[
"Deadline"] != 
"") {
 
  581                    $ass->setInstruction($a_rec[
"Instruction"]);
 
  582                    $ass->setTitle($a_rec[
"Title"]);
 
  583                    $ass->setMandatory($a_rec[
"Mandatory"]);
 
  584                    $ass->setOrderNr($a_rec[
"OrderNr"]);
 
  587                    $ass->setType($a_rec[
"Type"]);
 
  590                    $ass->setPeerReview($a_rec[
"Peer"]);
 
  591                    $ass->setPeerReviewMin($a_rec[
"PeerMin"]);
 
  592                    $ass->setPeerReviewDeadline($a_rec[
"PeerDeadline"]);
 
  593                    $ass->setFeedbackFile($a_rec[
"FeedbackFile"]);
 
  594                    $ass->setFeedbackCron($a_rec[
"FeedbackCron"]);
 
  595                    $ass->setFeedbackDate($a_rec[
"FeedbackDate"]);
 
  598                    $ass->setPeerReviewFileUpload($a_rec[
"PeerFile"]);
 
  599                    $ass->setPeerReviewPersonalized($a_rec[
"PeerPersonal"]);
 
  602                    if ($a_rec[
"Deadline2"] != 
"") {
 
  604                        $ass->setExtendedDeadline($deadline->get(
IL_CAL_UNIX));
 
  606                    $ass->setMaxFile($a_rec[
"MaxFile"]);
 
  607                    $ass->setTeamTutor($a_rec[
"TeamTutor"]);
 
  608                    $ass->setPeerReviewChars($a_rec[
"PeerChar"]);
 
  609                    $ass->setPeerReviewSimpleUnlock($a_rec[
"PeerUnlock"]);
 
  610                    $ass->setPeerReviewValid($a_rec[
"PeerValid"]);
 
  611                    $ass->setPeerReviewText($a_rec[
"PeerText"]);
 
  612                    $ass->setPeerReviewRating($a_rec[
"PeerRating"]);
 
  615                    $ass->setFeedbackDateCustom($a_rec[
"FbDateCustom"]);
 
  618                    if ($a_rec[
"PeerCritCat"]) {
 
  619                        $ass->setPeerReviewCriteriaCatalogue($a_mapping->getMapping(
"Modules/Exercise", 
"exc_crit_cat", $a_rec[
"PeerCritCat"]));
 
  624                    include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  629                    $dir = str_replace(
"..", 
"", $a_rec[
"Dir"]);
 
  632                        $target_dir = $fstorage->getPath();
 
  637                    $dir = str_replace(
"..", 
"", $a_rec[
"FeedbackDir"]);
 
  640                        $target_dir = $fstorage->getGlobalFeedbackPath();
 
  645                    include_once(
"./Modules/Exercise/classes/class.ilFSWebStorageExercise.php");
 
  647                    $fwebstorage->create();
 
  648                    $dir = str_replace(
"..", 
"", $a_rec[
"WebDataDir"]);
 
  651                        $target_dir = $fwebstorage->getPath();
 
  658                        $ar->setId($ass->getId());
 
  659                        $ar->setTemplateRefId(0);
 
  660                        $ar->setContainerRefId(0);
 
  664                    $a_mapping->addMapping(
"Modules/Exercise", 
"exc_assignment", $a_rec[
"Id"], $ass->getId());
 
  670                $exc_id = $a_mapping->getMapping(
"Modules/Exercise", 
"exc", $a_rec[
"Parent"]);
 
  672                    include_once(
"./Modules/Exercise/classes/class.ilExcCriteriaCatalogue.php");
 
  674                    $crit_cat->setParent($exc_id);
 
  675                    $crit_cat->setTitle($a_rec[
"Title"]);
 
  676                    $crit_cat->setPosition($a_rec[
"Pos"]);
 
  679                    $a_mapping->addMapping(
"Modules/Exercise", 
"exc_crit_cat", $a_rec[
"Id"], $crit_cat->getId());
 
  684                $crit_cat_id = $a_mapping->getMapping(
"Modules/Exercise", 
"exc_crit_cat", $a_rec[
"Parent"]);
 
  685                if ($crit_cat_id > 0) {
 
  686                    include_once(
"./Modules/Exercise/classes/class.ilExcCriteria.php");
 
  688                    $crit->setParent($crit_cat_id);
 
  689                    $crit->setTitle($a_rec[
"Title"]);
 
  690                    $crit->setDescription($a_rec[
"Descr"]);
 
  691                    $crit->setPosition($a_rec[
"Pos"]);
 
  692                    $crit->setRequired($a_rec[
"Required"]);
 
  693                    $crit->importDefinition($a_rec[
"Def"], $a_rec[
"DefJson"]);
 
  698            case "exc_ass_file_order":
 
  700                $ass_id = $a_mapping->getMapping(
"Modules/Exercise", 
"exc_assignment", $a_rec[
"AssignmentId"]);
 
  706            case "exc_ass_reminders":
 
  708                include_once(
"./Modules/Exercise/classes/class.ilExAssignmentReminder.php");
 
  709                $new_ass_id = $a_mapping->getMapping(
"Modules/Exercise", 
"exc_assignment", $a_rec[
"AssId"]);
 
  710                $new_exc_id = $a_mapping->getMapping(
'Modules/Exercise', 
'exc', $a_rec[
'ExcId']);
 
  714                $rmd->setReminderStatus($a_rec[
"Status"]);
 
  715                $rmd->setReminderStart($a_rec[
"Start"]);
 
  717                $rmd->setReminderFrequency($a_rec[
"Freq"]);
 
  718                $rmd->setReminderLastSend($a_rec[
"LastSend"]);
 
  719                $rmd->setReminderMailTemplate($a_rec[
"TemplateId"]);
 
An exception for terminatinating execution or to throw for unit testing.
A dataset contains in data in a common structure that can be shared and transformed for different pur...
getDirectDataFromQuery($a_query, $a_convert_to_leading_upper=true, $a_set=true)
Get data from query.This is a standard procedure, all db field names are directly mapped to abstract ...
getImportDirectory()
Get import directory.
@classDescription Date and time handling
Item group active record class.
TODO: import/export reminder data with the exercise/assignment.
static instructionFileInsertOrder($a_filename, $a_ass_id, $a_order_nr=0)
Store the file order in the database.
Class ilExcCriteriaCatalogue.
static getInstanceByType($a_type)
importRecord($a_entity, $a_types, $a_rec, $a_mapping, $a_schema_version)
Import record.
getXmlRecord($a_entity, $a_version, $a_set)
Get xml record (export)
getXmlNamespace($a_entity, $a_schema_version)
Get xml namespace.
getDependencies($a_entity, $a_version, $a_rec, $a_ids)
Determine the dependent sets of data.
getTypes($a_entity, $a_version)
Get field types for entity.
readData($a_entity, $a_version, $a_ids, $a_field="")
Read data.
getSupportedVersions()
Get supported versions.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.