コード例 #1
0
 /**
  * Save multi feedback files
  *
  * @param
  * @return
  */
 function saveMultiFeedbackFiles($a_files, $a_user_id = 0)
 {
     global $ilUser;
     $exc = new ilObjExercise($this->getExerciseId(), false);
     include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php";
     $fstorage = new ilFSStorageExercise($this->getExerciseId(), $this->getId());
     $fstorage->create();
     $mfu = $fstorage->getMultiFeedbackUploadPath($ilUser->getId());
     if ($a_user_id == 0) {
         $a_user_id = $ilUser->getId();
     }
     $mf_files = $this->getMultiFeedbackFiles();
     foreach ($mf_files as $f) {
         if ($a_files[$f["user_id"]][$f["file"]] != "") {
             $fb_path = $fstorage->getFeedbackPath((int) $f["user_id"]);
             $target = $fb_path . "/" . $f["file"];
             if (is_file($target)) {
                 unlink($target);
             }
             // rename file
             rename($f["full_path"], $target);
             $exc->sendFeedbackFileNotification($f["file"], (int) $f["user_id"], (int) $this->getId());
         }
     }
     $this->clearMultiFeedbackDirectory();
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 /**
  * Save multi feedback files
  *
  * @param
  * @return
  */
 function saveMultiFeedbackFiles($a_files)
 {
     $exc = new ilObjExercise($this->getExerciseId(), false);
     include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php";
     $fstorage = new ilFSStorageExercise($this->getExerciseId(), $this->getId());
     $fstorage->create();
     $team_map = array();
     $mf_files = $this->getMultiFeedbackFiles();
     foreach ($mf_files as $f) {
         $user_id = $f["user_id"];
         $file_path = $f["full_path"];
         $file_name = $f["file"];
         // if checked in confirmation gui
         if ($a_files[$user_id][md5($file_name)] != "") {
             // #14294 - team assignment
             if ($this->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
                 // just once for each user
                 if (!array_key_exists($user_id, $team_map)) {
                     $team_id = $this->getTeamId($user_id);
                     $team_map[$user_id]["team_id"] = "t" . $team_id;
                     $team_map[$user_id]["noti_rec_ids"] = array();
                     foreach ($this->getTeamMembers($team_id) as $team_user_id) {
                         $team_map[$user_id]["noti_rec_ids"][] = $team_user_id;
                     }
                 }
                 $feedback_id = $team_map[$user_id]["team_id"];
                 $noti_rec_ids = $team_map[$user_id]["noti_rec_ids"];
             } else {
                 $feedback_id = $user_id;
                 $noti_rec_ids = array($user_id);
             }
             if ($feedback_id) {
                 $fb_path = $fstorage->getFeedbackPath($feedback_id);
                 $target = $fb_path . "/" . $file_name;
                 if (is_file($target)) {
                     unlink($target);
                 }
                 // rename file
                 rename($file_path, $target);
                 if ($noti_rec_ids) {
                     $exc->sendFeedbackFileNotification($file_name, $noti_rec_ids, (int) $this->getId());
                 }
             }
         }
     }
     $this->clearMultiFeedbackDirectory();
 }