/** * Show grades overview */ function showGradesOverviewObject() { global $rbacsystem, $tree, $tpl, $ilToolbar, $ilCtrl, $ilTabs, $lng; $this->checkPermission("write"); $ilTabs->activateTab("grades"); $this->addSubmissionSubTabs("grades"); include_once "./Modules/Exercise/classes/class.ilExAssignment.php"; $mem_obj = new ilExerciseMembers($this->object); $mems = $mem_obj->getMembers(); if (count($mems) > 0) { $ilToolbar->addButton($lng->txt("exc_export_excel"), $ilCtrl->getLinkTarget($this, "exportExcel")); } include_once "./Modules/Exercise/classes/class.ilExGradesTableGUI.php"; $grades_tab = new ilExGradesTableGUI($this, "showGradesOverview", $this->object, $mem_obj); $tpl->setContent($grades_tab->getHTML()); }
/** * Get multi feedback files (of uploader) * * @param int $a_user_id user id of uploader * @return array array of user files (keys: lastname, firstname, user_id, login, file) */ function getMultiFeedbackFiles($a_user_id = 0) { global $ilUser; if ($a_user_id == 0) { $a_user_id = $ilUser->getId(); } $mf_files = array(); // get members $exc = new ilObjExercise($this->getExerciseId(), false); include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php"; $exmem = new ilExerciseMembers($exc); $mems = $exmem->getMembers(); // read mf directory include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $storage = new ilFSStorageExercise($this->getExerciseId(), $this->getId()); $mfu = $storage->getMultiFeedbackUploadPath($ilUser->getId()); // get subdir that starts with multi_feedback $subdirs = ilUtil::getDir($mfu); $subdir = "notfound"; foreach ($subdirs as $s => $j) { if ($j["type"] == "dir" && substr($s, 0, 14) == "multi_feedback") { $subdir = $s; } } $items = ilUtil::getDir($mfu . "/" . $subdir); foreach ($items as $k => $i) { // check directory if ($i["type"] == "dir" && !in_array($k, array(".", ".."))) { // check if valid member id is given $parts = explode("_", $i["entry"]); $user_id = (int) $parts[count($parts) - 1]; if (in_array($user_id, $mems)) { // read dir of user $name = ilObjUser::_lookupName($user_id); $files = ilUtil::getDir($mfu . "/" . $subdir . "/" . $k); foreach ($files as $k2 => $f) { // append files to array if ($f["type"] == "file" && substr($k2, 0, 1) != ".") { $mf_files[] = array("lastname" => $name["lastname"], "firstname" => $name["firstname"], "login" => $name["login"], "user_id" => $name["user_id"], "full_path" => $mfu . "/" . $subdir . "/" . $k . "/" . $k2, "file" => $k2); } } } } } return $mf_files; }
/** * Get participant ids for given object * * @param int $a_ref_id * @return array */ public static function getParticipantsForObject($a_ref_id) { global $tree; $obj_id = ilObject::_lookupObjectId($a_ref_id); $obj_type = ilObject::_lookupType($obj_id); // try to get participants from (parent) course/group switch ($obj_type) { case "crs": include_once "Modules/Course/classes/class.ilCourseParticipants.php"; $member_obj = ilCourseParticipants::_getInstanceByObjId($obj_id); return $member_obj->getMembers(); case "grp": include_once "Modules/Group/classes/class.ilGroupParticipants.php"; $member_obj = ilGroupParticipants::_getInstanceByObjId($obj_id); return $member_obj->getMembers(); default: // walk path to find course or group object and use members of that object $path = $tree->getPathId($a_ref_id); array_pop($path); foreach (array_reverse($path) as $path_ref_id) { $type = ilObject::_lookupType($path_ref_id, true); if ($type == "crs" || $type == "grp") { return self::getParticipantsForObject($path_ref_id); } } break; } $a_users = null; // no participants possible: use tracking/object data where possible switch ($obj_type) { case "sahs": include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; $subtype = ilObjSAHSLearningModule::_lookupSubType($obj_id); if ($subtype == "scorm2004") { // based on cmi_node/cp_node, used for scorm tracking data views include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php"; $mod = new ilObjSCORM2004LearningModule($obj_id, false); $all = $mod->getTrackedUsers(""); if ($all) { $a_users = array(); foreach ($all as $item) { $a_users[] = $item["user_id"]; } } } else { include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php"; $a_users = ilObjSCORMTracking::_getTrackedUsers($obj_id); } break; case "exc": include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php"; include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; $exc = new ilObjExercise($obj_id, false); $members = new ilExerciseMembers($exc); $a_users = $members->getMembers(); break; case "tst": include_once "./Services/Tracking/classes/class.ilLPStatusTestFinished.php"; $a_users = ilLPStatusTestFinished::getParticipants($obj_id); break; default: // no sensible data: return null break; } return $a_users; }
/** * Create member status record for a new assignment for all participants */ static function createNewAssignmentRecords($a_ass_id, $a_exc) { global $ilDB; include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php"; $exmem = new ilExerciseMembers($a_exc); $mems = $exmem->getMembers(); foreach ($mems as $mem) { $ilDB->replace("exc_mem_ass_status", array("ass_id" => array("integer", $a_ass_id), "usr_id" => array("integer", $mem)), array("status" => array("text", "notgraded"))); } }