/** * Constructor */ function __construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_ass_id) { global $ilCtrl, $lng, $ilAccess, $lng; $this->exc = $a_exc; $this->exc_id = $this->exc->getId(); $this->setId("exc_mem_" . $a_ass_id); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $this->storage = new ilFSStorageExercise($this->exc_id, $a_ass_id); include_once "./Modules/Exercise/classes/class.ilExAssignment.php"; $this->ass_id = $a_ass_id; parent::__construct($a_parent_obj, $a_parent_cmd); $this->setTitle($lng->txt("exc_assignment") . ": " . ilExAssignment::lookupTitle($a_ass_id)); $this->setTopCommands(true); //$this->setLimit(9999); $this->type = ilExAssignment::lookupType($this->ass_id); $data = ilExAssignment::getMemberListData($this->exc_id, $this->ass_id); // team upload? (1 row == 1 team) if ($this->type == ilExAssignment::TYPE_UPLOAD_TEAM) { $ass_obj = new ilExAssignment($this->ass_id); $team_map = ilExAssignment::getAssignmentTeamMap($this->ass_id); $tmp = array(); foreach ($data as $item) { $team_id = $team_map[$item["usr_id"]]; // #11058 if (!$team_id) { $team_id = $ass_obj->getTeamId($item["usr_id"], true); } if (!isset($tmp[$team_id])) { $tmp[$team_id] = $item; } $tmp[$team_id]["team"][$item["usr_id"]] = $item["name"]; $tmp[$team_id]["team_id"] = $team_id; } $data = $tmp; unset($tmp); } $this->setData($data); $this->addColumn("", "", "1", true); if ($this->type != ilExAssignment::TYPE_UPLOAD_TEAM) { $this->addColumn($this->lng->txt("image"), "", "1"); $this->addColumn($this->lng->txt("name"), "name"); $this->addColumn($this->lng->txt("login"), "login"); } else { $this->addColumn($this->lng->txt("exc_team")); } $this->sent_col = ilExAssignment::lookupAnyExerciseSent($this->exc->getId(), $this->ass_id); if ($this->sent_col) { $this->addColumn($this->lng->txt("exc_exercise_sent"), "sent_time"); } $this->addColumn($this->lng->txt("exc_submission"), "submission"); $this->addColumn($this->lng->txt("exc_grading"), "solved_time"); $this->addColumn($this->lng->txt("feedback"), "feedback_time"); $this->setDefaultOrderField("name"); $this->setDefaultOrderDirection("asc"); $this->setEnableHeader(true); $this->setFormAction($ilCtrl->getFormAction($a_parent_obj)); $this->setRowTemplate("tpl.exc_members_row.html", "Modules/Exercise"); //$this->disable("footer"); $this->setEnableTitle(true); $this->setSelectAllCheckbox("member"); $this->addMultiCommand("saveStatus", $lng->txt("exc_save_changes")); $this->addMultiCommand("redirectFeedbackMail", $lng->txt("exc_send_mail")); $this->addMultiCommand("sendMembers", $lng->txt("exc_send_assignment")); $this->addMultiCommand("confirmDeassignMembers", $lng->txt("exc_deassign_members")); //if(count($this->exc->members_obj->getAllDeliveredFiles())) if (count(ilExAssignment::getAllDeliveredFiles($this->exc_id, $this->ass_id))) { $this->addCommandButton("downloadAll", $lng->txt("download_all_returned_files")); } }
/** * Add new partipant */ function addMembersObject($a_user_ids = array()) { global $ilAccess, $ilErr; $this->checkPermission("write"); if (!count($a_user_ids)) { ilUtil::sendFailure($this->lng->txt("no_checkbox")); return false; } if (!$this->object->members_obj->assignMembers($a_user_ids)) { ilUtil::sendFailure($this->lng->txt("exc_members_already_assigned")); return false; } else { // #9946 - create team for new user(s) for each team upload assignment foreach (ilExAssignment::getAssignmentDataOfExercise($this->object->getId()) as $ass) { if ($ass["type"] == ilExAssignment::TYPE_UPLOAD_TEAM) { $ass_obj = new ilExAssignment($ass["id"]); foreach ($a_user_ids as $user_id) { $ass_obj->getTeamId($user_id, true); } } } ilUtil::sendSuccess($this->lng->txt("exc_members_assigned"), true); } //exit; $this->ctrl->redirect($this, "members"); return true; }
/** * Download feedback file */ function downloadFeedbackFileObject() { global $rbacsystem, $ilUser; $file = $_REQUEST["file"]; // check read permission $this->checkPermission("read"); if (!isset($file)) { ilUtil::sendFailure($this->lng->txt("exc_select_one_file"), true); $this->ctrl->redirect($this, "view"); } $ass = new ilExAssignment((int) $_GET["ass_id"]); if ($ass->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) { $feedback_id = "t" . $ass->getTeamId($ilUser->getId()); } else { $feedback_id = $ilUser->getId(); } // check, whether file belongs to assignment include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $storage = new ilFSStorageExercise($this->object->getId(), (int) $_GET["ass_id"]); $files = $storage->getFeedbackFiles($feedback_id); $file_exist = false; foreach ($files as $fb_file) { if ($fb_file == $file) { $file_exist = true; break; } } if (!$file_exist) { echo "FILE DOES NOT EXIST"; exit; } // check whether assignment as already started $not_started_yet = false; if ($ass->getStartTime() > 0 && time() - $ass->getStartTime() <= 0) { $not_started_yet = true; } // deliver file if (!$not_started_yet) { $p = $storage->getFeedbackFilePath($feedback_id, $file); ilUtil::deliverFile($p, $file); } return true; }