/** * Clone assignments of exercise * * @param * @return */ function cloneAssignmentsOfExercise($a_old_exc_id, $a_new_exc_id) { $ass_data = ilExAssignment::getAssignmentDataOfExercise($a_old_exc_id); foreach ($ass_data as $d) { // clone assignment $new_ass = new ilExAssignment(); $new_ass->setExerciseId($a_new_exc_id); $new_ass->setTitle($d["title"]); $new_ass->setDeadline($d["deadline"]); $new_ass->setInstruction($d["instruction"]); $new_ass->setMandatory($d["mandatory"]); $new_ass->setOrderNr($d["order_val"]); $new_ass->setStartTime($d["start_time"]); $new_ass->setType($d["type"]); $new_ass->setPeerReview($d["peer"]); $new_ass->setPeerReviewMin($d["peer_min"]); $new_ass->setPeerReviewDeadline($d["peer_dl"]); $new_ass->setFeedbackFile($d["fb_file"]); $new_ass->setFeedbackCron($d["fb_cron"]); $new_ass->save(); // clone assignment files include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $old_storage = new ilFSStorageExercise($a_old_exc_id, (int) $d["id"]); $new_storage = new ilFSStorageExercise($a_new_exc_id, (int) $new_ass->getId()); $new_storage->create(); if (is_dir($old_storage->getPath())) { ilUtil::rCopy($old_storage->getPath(), $new_storage->getPath()); } } }
function executeCommand() { global $ilUser, $ilCtrl, $ilTabs, $lng; $next_class = $this->ctrl->getNextClass($this); $cmd = $this->ctrl->getCmd(); $this->prepareOutput(); //echo "-".$next_class."-".$cmd."-"; exit; switch ($next_class) { case "ilfilesystemgui": $this->checkPermission("write"); if ($_GET["fsmode"] == "peer") { $ilCtrl->saveParameter($this, array("fu")); // see self::downloadPeerReview() $parts = explode("__", $_GET["fu"]); $giver_id = $parts[0]; $peer_id = $parts[1]; if ($giver_id == $ilUser->getId() || $peer_id == $ilUser->getId()) { $this->checkPermission("read"); } else { $this->checkPermission("write"); } $valid = false; $peer_items = $this->ass->getPeerReviewsByPeerId($peer_id, true); if (sizeof($peer_items)) { foreach ($peer_items as $item) { if ($item["giver_id"] == $giver_id) { $valid = true; } } } if (!$valid) { $ilCtrl->redirect($this, "editPeerReview"); } $ilTabs->clearTargets(); $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "editPeerReview")); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), $this->ass->getId()); $fstorage->create(); include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getPeerReviewUploadPath($peer_id, $giver_id)); $fs_gui->setTableId("excfbpeer"); $fs_gui->setAllowDirectories(false); $fs_gui->setTitle($this->ass->getTitle() . ": " . $lng->txt("exc_peer_review") . " - " . $lng->txt("exc_peer_review_give")); $ret = $this->ctrl->forwardCommand($fs_gui); } else { if ($_GET["fsmode"] == "feedback" || $_GET["fsmode"] == "feedbackpart") { $ilCtrl->saveParameter($this, array("member_id")); //$this->setAssignmentHeader(); //$ilTabs->activateTab("ass_files"); $ilTabs->clearTargets(); if ($_GET["fsmode"] != "feedbackpart") { $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "members")); } else { $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "showParticipant")); } ilUtil::sendInfo($lng->txt("exc_fb_tutor_info")); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), (int) $_GET["ass_id"]); $fstorage->create(); include_once "./Services/User/classes/class.ilUserUtil.php"; $noti_rec_ids = array(); if ($this->ass->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) { $team_id = $this->ass->getTeamId((int) $_GET["member_id"]); $feedback_id = "t" . $team_id; $fs_title = array(); foreach ($this->ass->getTeamMembers($team_id) as $team_user_id) { $fs_title[] = ilUserUtil::getNamePresentation($team_user_id, false, false, "", true); $noti_rec_ids[] = $team_user_id; } $fs_title = implode(" / ", $fs_title); } else { $feedback_id = $noti_rec_ids = (int) $_GET["member_id"]; $fs_title = ilUserUtil::getNamePresentation((int) $_GET["member_id"], false, false, "", true); } include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getFeedbackPath($feedback_id)); $fs_gui->setTableId("excfbfil" . (int) $_GET["ass_id"] . "_" . $feedback_id); $fs_gui->setAllowDirectories(false); $fs_gui->setTitle($lng->txt("exc_fb_files") . " - " . ilExAssignment::lookupTitle((int) $_GET["ass_id"]) . " - " . $fs_title); $pcommand = $fs_gui->getLastPerformedCommand(); if (is_array($pcommand) && $pcommand["cmd"] == "create_file") { $this->object->sendFeedbackFileNotification($pcommand["name"], $noti_rec_ids, (int) $_GET["ass_id"]); } $ret = $this->ctrl->forwardCommand($fs_gui); } else { $this->setAssignmentHeader(); $ilTabs->activateTab("ass_files"); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), (int) $_GET["ass_id"]); $fstorage->create(); include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getPath()); $fs_gui->setTitle($lng->txt("exc_instruction_files")); $fs_gui->setTableId("excassfil" . $_GET["ass_id"]); $fs_gui->setAllowDirectories(false); $ret = $this->ctrl->forwardCommand($fs_gui); } } break; case "ilinfoscreengui": $ilTabs->activateTab("info"); $this->infoScreen(); // forwards command break; case 'ilpermissiongui': $ilTabs->activateTab("permissions"); include_once "Services/AccessControl/classes/class.ilPermissionGUI.php"; $perm_gui =& new ilPermissionGUI($this); $ret =& $this->ctrl->forwardCommand($perm_gui); break; case "illearningprogressgui": $ilTabs->activateTab("learning_progress"); include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php'; $new_gui =& new ilLearningProgressGUI(ilLearningProgressGUI::LP_CONTEXT_REPOSITORY, $this->object->getRefId(), $_GET['user_id'] ? $_GET['user_id'] : $ilUser->getId()); $this->ctrl->forwardCommand($new_gui); $this->tabs_gui->setTabActive('learning_progress'); break; case 'ilrepositorysearchgui': $ilTabs->activateTab("grades"); include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); if (!$_REQUEST["ctx"]) { $rep_search->setTitle($this->lng->txt("exc_add_participant")); $rep_search->setCallback($this, 'addMembersObject'); // Set tabs $this->tabs_gui->setTabActive('members'); $this->ctrl->setReturn($this, 'members'); #$this->__setSubTabs('members'); #$this->tabs_gui->setSubTabActive('members'); } else { $this->ctrl->saveParameterByClass('ilRepositorySearchGUI', 'ctx', 1); $rep_search->setTitle($this->lng->txt("exc_team_member_add")); $rep_search->setCallback($this, 'addTeamMemberActionObject'); // Set tabs $this->initTeamSubmission("submissionScreenTeam"); $this->ctrl->setReturn($this, 'submissionScreenTeam'); } $ret =& $this->ctrl->forwardCommand($rep_search); break; case 'ilobjectcopygui': $ilCtrl->saveParameter($this, 'new_type'); $ilCtrl->setReturnByClass(get_class($this), 'create'); include_once './Services/Object/classes/class.ilObjectCopyGUI.php'; $cp = new ilObjectCopyGUI($this); $cp->setType('exc'); $this->ctrl->forwardCommand($cp); break; case "ilexportgui": $ilTabs->activateTab("export"); include_once "./Services/Export/classes/class.ilExportGUI.php"; $exp_gui = new ilExportGUI($this); $exp_gui->addFormat("xml"); $ret = $this->ctrl->forwardCommand($exp_gui); // $this->tpl->show(); break; case 'ilshoppurchasegui': include_once './Services/Payment/classes/class.ilShopPurchaseGUI.php'; $sp = new ilShopPurchaseGUI($_GET['ref_id']); $this->ctrl->forwardCommand($sp); break; case "ilcommonactiondispatchergui": include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php"; $gui = ilCommonActionDispatcherGUI::getInstanceFromAjaxCall(); $this->ctrl->forwardCommand($gui); break; case "ilcertificategui": $this->setSettingsSubTabs(); $this->tabs_gui->activateTab("settings"); $this->tabs_gui->activateSubTab("certificate"); include_once "./Services/Certificate/classes/class.ilCertificateGUI.php"; include_once "./Modules/Exercise/classes/class.ilExerciseCertificateAdapter.php"; $output_gui = new ilCertificateGUI(new ilExerciseCertificateAdapter($this->object)); $this->ctrl->forwardCommand($output_gui); break; case "ilratinggui": $this->ass->updatePeerReviewTimestamp((int) $_REQUEST["peer_id"]); include_once "./Services/Rating/classes/class.ilRatingGUI.php"; $rating_gui = new ilRatingGUI(); $rating_gui->setObject($this->ass->getId(), "ass", (int) $_REQUEST["peer_id"], "peer"); $this->ctrl->forwardCommand($rating_gui); $ilCtrl->redirect($this, "editPeerReview"); break; default: $this->ctrl->setParameter($this, "fsmode", ""); // #15115 if (!$cmd) { $cmd = "infoScreen"; } $cmd .= "Object"; $this->{$cmd}(); break; } $this->addHeaderAction(); return true; }
/** * Import record * * @param * @return */ function importRecord($a_entity, $a_types, $a_rec, $a_mapping, $a_schema_version) { //echo $a_entity; //var_dump($a_rec); switch ($a_entity) { case "exc": include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; if ($new_id = $a_mapping->getMapping('Services/Container', 'objs', $a_rec['Id'])) { $newObj = ilObjectFactory::getInstanceByObjId($new_id, false); } else { $newObj = new ilObjExercise(); $newObj->setType("exc"); $newObj->create(true); } $newObj->setTitle($a_rec["Title"]); $newObj->setDescription($a_rec["Description"]); $newObj->setPassMode($a_rec["PassMode"]); $newObj->setPassNr($a_rec["PassNr"]); $newObj->setShowSubmissions($a_rec["ShowSubmissions"]); $newObj->update(); $newObj->saveData(); //var_dump($a_rec); $this->current_exc = $newObj; $a_mapping->addMapping("Modules/Exercise", "exc", $a_rec["Id"], $newObj->getId()); //var_dump($a_mapping->mappings["Services/News"]["news_context"]); break; case "exc_assignment": $exc_id = $a_mapping->getMapping("Modules/Exercise", "exc", $a_rec["ExerciseId"]); if ($exc_id > 0) { if (is_object($this->current_exc) && $this->current_exc->getId() == $exc_id) { $exc = $this->current_exc; } else { include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; $exc = new ilObjExercise($exc_id, false); } include_once "./Modules/Exercise/classes/class.ilExAssignment.php"; $ass = new ilExAssignment(); $ass->setExerciseId($exc_id); if ($a_rec["StartTime"] != "") { $start = new ilDateTime($a_rec["StartTime"], IL_CAL_DATETIME, "UTC"); $ass->setStartTime($start->get(IL_CAL_UNIX)); } if ($a_rec["Deadline"] != "") { $deadline = new ilDateTime($a_rec["Deadline"], IL_CAL_DATETIME, "UTC"); $ass->setDeadline($deadline->get(IL_CAL_UNIX)); } //var_dump($a_rec); $ass->setInstruction($a_rec["Instruction"]); $ass->setTitle($a_rec["Title"]); $ass->setMandatory($a_rec["Mandatory"]); $ass->setOrderNr($a_rec["OrderNr"]); // 4.2 $ass->setType($a_rec["Type"]); // 4.4 $ass->setPeerReview($a_rec["Peer"]); $ass->setPeerReviewMin($a_rec["PeerMin"]); $ass->setPeerReviewDeadline($a_rec["PeerDeadline"]); $ass->setFeedbackFile($a_rec["FeedbackFile"]); $ass->setFeedbackCron($a_rec["FeedbackCron"]); $ass->setFeedbackDate($a_rec["FeedbackDate"]); // 5.0 $ass->setPeerReviewFileUpload($a_rec["PeerFile"]); $ass->setPeerReviewPersonalized($a_rec["PeerPersonal"]); $ass->save(); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($exc_id, $ass->getId()); $fstorage->create(); // assignment files $dir = str_replace("..", "", $a_rec["Dir"]); if ($dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; $target_dir = $fstorage->getPath(); ilUtil::rCopy($source_dir, $target_dir); } // (4.4) global feedback file $dir = str_replace("..", "", $a_rec["FeedbackDir"]); if ($dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; $target_dir = $fstorage->getGlobalFeedbackPath(); ilUtil::rCopy($source_dir, $target_dir); } $a_mapping->addMapping("Modules/Exercise", "exc_assignment", $a_rec["Id"], $ass->getId()); } break; } }