/**
  * 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"));
     }
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * 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;
 }