Пример #1
0
 /**
  * check condition 
  * @param type $a_exc_id
  * @param type $a_operator
  * @param type $a_value
  * @param type $a_usr_id
  * @return boolean
  */
 public static function checkCondition($a_exc_id, $a_operator, $a_value, $a_usr_id)
 {
     include_once './Services/AccessControl/classes/class.ilConditionHandler.php';
     include_once './Modules/Exercise/classes/class.ilExerciseMembers.php';
     switch ($a_operator) {
         case ilConditionHandler::OPERATOR_PASSED:
             if (ilExerciseMembers::_lookupStatus($a_exc_id, $a_usr_id) == "passed") {
                 return true;
             } else {
                 return false;
             }
             break;
         case ilConditionHandler::OPERATOR_FAILED:
             return ilExerciseMembers::_lookupStatus($a_exc_id, $a_usr_id) == 'failed';
         default:
             return true;
     }
     return true;
 }
Пример #2
0
 public function removeTeamMemberObject()
 {
     global $ilUser;
     $ids = $_POST["id"];
     if (!sizeof($ids)) {
         ilUtil::sendFailure($this->lng->txt("select_one"), true);
         $this->ctrl->redirect($this, "submissionScreenTeam");
     }
     $team_id = $this->ass->getTeamId($ilUser->getId());
     $members = $this->ass->getTeamMembers($team_id);
     $team_deleted = false;
     if (sizeof($members) <= sizeof($ids)) {
         if (sizeof($members) == 1 && $members[0] == $ilUser->getId()) {
             $team_deleted = true;
         } else {
             ilUtil::sendFailure($this->lng->txt("exc_team_at_least_one"), true);
             $this->ctrl->redirect($this, "submissionScreenTeam");
         }
     }
     foreach ($ids as $user_id) {
         $this->ass->removeTeamMember($team_id, $user_id, $this->ref_id);
         ilExAssignment::updateStatusReturnedForUser($this->ass->getId(), $user_id, 0);
         ilExerciseMembers::_writeReturned($this->object->getId(), $user_id, 0);
         // :TODO: log, notification
     }
     ilUtil::sendSuccess($this->lng->txt("settings_saved"), true);
     if (!$team_deleted) {
         $this->ctrl->redirect($this, "submissionScreenTeam");
     } else {
         $this->ctrl->redirect($this, "showOverview");
     }
 }
 /**
  * Get members for object
  * @param int $a_obj_id
  * @return array
  */
 protected static function getMembers($a_obj_id)
 {
     include_once './Modules/Exercise/classes/class.ilExerciseMembers.php';
     return ilExerciseMembers::_getMembers($a_obj_id);
 }
 /**
  * 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;
 }
Пример #5
0
 /**
  * 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;
 }
 /**
  * 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")));
     }
 }
 /**
  * Returns an array containing all variables and values which can be exchanged in the certificate
  * The values should be calculated from real data. The $params parameter array should contain all
  * necessary information to calculate the values.
  *
  * @param array $params An array of parameters to calculate the certificate parameter values
  * @return array The certificate variables
  */
 public function getCertificateVariablesForPresentation($params = array())
 {
     global $lng;
     $user_id = $params["user_id"];
     include_once 'Services/Tracking/classes/class.ilLPMarks.php';
     $mark = ilLPMarks::_lookupMark($user_id, $this->object->getId());
     include_once 'Modules/Exercise/classes/class.ilExerciseMembers.php';
     $status = ilExerciseMembers::_lookupStatus($this->object->getId(), $user_id);
     $user_data = ilObjUser::_lookupFields($user_id);
     $completion_date = $this->getUserCompletionDate($user_id);
     $vars = $this->getBaseVariablesForPresentation($user_data, null, $completion_date);
     $vars["RESULT_PASSED"] = ilUtil::prepareFormOutput($lng->txt("exc_" . $status));
     $vars["RESULT_MARK"] = ilUtil::prepareFormOutput($mark);
     $vars["EXERCISE_TITLE"] = ilUtil::prepareFormOutput($this->object->getTitle());
     foreach ($vars as $id => $caption) {
         $insert_tags["[" . $id . "]"] = $caption;
     }
     return $insert_tags;
 }
 /**
  * Check if given user has certificate to show/download
  * 
  * @param int $a_user_id
  * @return bool 
  */
 function hasUserCertificate($a_user_id)
 {
     // show certificate?
     include_once "Services/Certificate/classes/class.ilCertificate.php";
     if (ilCertificate::isActive() && ilCertificate::isObjectActive($this->getId())) {
         $certificate_visible = $this->getCertificateVisibility();
         // if not never
         if ($certificate_visible != 2) {
             // if passed only
             include_once 'Modules/Exercise/classes/class.ilExerciseMembers.php';
             $status = ilExerciseMembers::_lookupStatus($this->getId(), $a_user_id);
             if ($certificate_visible == 1 && $status == "passed") {
                 return true;
             } else {
                 if ($certificate_visible == 0 && $status != "notgraded") {
                     return true;
                 }
             }
         }
     }
     return false;
 }
Пример #9
0
 /**
  * Fill table row
  */
 protected function fillRow($d)
 {
     global $lng, $ilCtrl;
     $user_id = $d["user_id"];
     foreach ($this->ass_data as $ass) {
         // grade
         $this->tpl->setCurrentBlock("grade");
         $status = ilExAssignment::lookupStatusOfUser($ass["id"], $user_id);
         $this->tpl->setVariable("SEL_" . strtoupper($status), ' selected="selected" ');
         $this->tpl->setVariable("TXT_NOTGRADED", $lng->txt("exc_notgraded"));
         $this->tpl->setVariable("TXT_PASSED", $lng->txt("exc_passed"));
         $this->tpl->setVariable("TXT_FAILED", $lng->txt("exc_failed"));
         switch ($status) {
             case "passed":
                 $pic = "scorm/passed.svg";
                 break;
             case "failed":
                 $pic = "scorm/failed.svg";
                 break;
             default:
                 $pic = "scorm/not_attempted.svg";
                 break;
         }
         $this->tpl->setVariable("IMG_STATUS", ilUtil::getImagePath($pic));
         $this->tpl->setVariable("ALT_STATUS", $lng->txt("exc_" . $status));
         // mark
         $mark = ilExAssignment::lookupMarkOfUser($ass["id"], $user_id);
         $this->tpl->setVariable("VAL_ONLY_MARK", $mark);
         $this->tpl->parseCurrentBlock();
     }
     // exercise total
     // mark input
     $this->tpl->setCurrentBlock("mark_input");
     $this->tpl->setVariable("TXT_MARK", $lng->txt("exc_mark"));
     $this->tpl->setVariable("NAME_MARK", "mark[" . $user_id . "]");
     include_once 'Services/Tracking/classes/class.ilLPMarks.php';
     $mark = ilLPMarks::_lookupMark($user_id, $this->exc_id);
     $this->tpl->setVariable("VAL_MARK", ilUtil::prepareFormOutput($mark));
     $this->tpl->parseCurrentBlock();
     $this->tpl->setCurrentBlock("grade");
     $status = ilExerciseMembers::_lookupStatus($this->exc_id, $user_id);
     $this->tpl->setVariable("SEL_" . strtoupper($status), ' selected="selected" ');
     switch ($status) {
         case "passed":
             $pic = "scorm/passed.svg";
             break;
         case "failed":
             $pic = "scorm/failed.svg";
             break;
         default:
             $pic = "scorm/not_attempted.svg";
             break;
     }
     $this->tpl->setVariable("IMG_STATUS", ilUtil::getImagePath($pic));
     $this->tpl->setVariable("ALT_STATUS", $lng->txt("exc_" . $status));
     // mark
     /*$this->tpl->setVariable("TXT_MARK", $lng->txt("exc_mark"));
     		$this->tpl->setVariable("NAME_MARK",
     			"mark[".$d["id"]."]");
     		$mark = ilExAssignment::lookupMarkOfUser($ass["id"], $user_id);
     		$this->tpl->setVariable("VAL_MARK",
     			ilUtil::prepareFormOutput($mark));*/
     $this->tpl->parseCurrentBlock();
     // name
     $this->tpl->setVariable("TXT_NAME", $d["lastname"] . ", " . $d["firstname"] . " [" . $d["login"] . "]");
     $this->tpl->setVariable("VAL_ID", $user_id);
     $ilCtrl->setParameter($this->parent_obj, "part_id", $user_id);
     $this->tpl->setVariable("LINK_NAME", $ilCtrl->getLinkTarget($this->parent_obj, "showParticipant"));
     // comment
     $this->tpl->setVariable("ID_COMMENT", $user_id);
     $c = ilLPMarks::_lookupComment($user_id, $this->exc_id);
     $this->tpl->setVariable("VAL_COMMENT", ilUtil::prepareFormOutput($c));
 }
Пример #10
0
 /**
  * create xml for files per assignment
  * 
  * @param integer $ex_id exercise id
  * @param array $assignments assignment id
  */
 private function handleAssignmentMembers($ex_id, $assignment_id)
 {
     $this->xmlStartTag("Members");
     include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php";
     $members = ilExerciseMembers::_getMembers($ex_id);
     if (count($members)) {
         foreach ($members as $member_id) {
             $this->xmlStartTag("Member", array("usr_id" => "il_" . IL_INST_ID . "_usr_" . $member_id));
             $this->attachMarking($member_id, $assignment_id);
             $this->xmlEndTag("Member");
         }
     }
     $this->xmlEndTag("Members");
 }
 /**
  * create xml for files per assignment
  * 
  * @param integer $ex_id exercise id
  * @param array $assignments assignment id
  */
 private function handleAssignmentMembers($ex_id, $assignments)
 {
     $this->xmlStartTag("Members");
     include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php";
     $members = ilExerciseMembers::_getMembers($ex_id);
     if (count($members)) {
         foreach ($members as $member_id) {
             $this->xmlStartTag("Member", array("usr_id" => "il_" . IL_INST_ID . "_usr_" . $member_id));
             if (count($assignments) > 0) {
                 foreach ($assignments as $assignment) {
                     $this->attachMarking($member_id, $assignment["id"]);
                     //todo: handle only first assignment, must be fixed when for dtd
                     break;
                 }
             }
             $this->xmlEndTag("Member");
         }
     }
     $this->xmlEndTag("Members");
 }
 /**
  * Get members for object
  * @param int $a_obj_id
  * @return array
  */
 protected static function getMembers($a_obj_id)
 {
     global $ilObjDataCache;
     switch ($ilObjDataCache->lookupType($a_obj_id)) {
         case 'crs':
             include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
             $member_obj = ilCourseParticipants::_getInstanceByObjId($a_obj_id);
             return $member_obj->getMembers();
         case 'exc':
             include_once './Modules/Exercise/classes/class.ilExerciseMembers.php';
             return ilExerciseMembers::_getMembers($a_obj_id);
         case 'grp':
             include_once './Modules/Group/classes/class.ilObjGroup.php';
             return ilObjGroup::_getMembers($a_obj_id);
     }
     return array();
 }
Пример #13
0
 /**
  * update member object according to given action
  *
  * @param int $user_id
  * @param string $action can be Attach or Detach
  */
 private function updateMember($user_id, $action)
 {
     if (!is_int($user_id) || $user_id <= 0) {
         return;
     }
     $memberObject = new ilExerciseMembers($this->exercise);
     if ($action == "Attach" && !$memberObject->isAssigned($user_id)) {
         $memberObject->assignMember($user_id);
     }
     if ($action == "Detach" && $memberObject->isAssigned($user_id)) {
         $memberObject->deassignMember($user_id);
     }
 }