/** * check access to learning progress * * @param int $a_ref_id reference ifd of object * @param bool $a_allow_only_read read access is sufficient (see courses/groups) * @return * @static */ public static function checkAccess($a_ref_id, $a_allow_only_read = true) { global $ilUser, $ilAccess; if ($ilUser->getId() == ANONYMOUS_USER_ID) { return false; } include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (!ilObjUserTracking::_enabledLearningProgress()) { return false; } if ($ilAccess->checkAccess('edit_learning_progress', '', $a_ref_id)) { return true; } if (!ilObjUserTracking::_hasLearningProgressLearner()) { return false; } include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; if (ilLPObjSettings::_lookupMode(ilObject::_lookupObjId($a_ref_id)) == LP_MODE_DEACTIVATED) { return false; } if (!$ilAccess->checkAccess('read', '', $a_ref_id)) { return false; } if ($a_allow_only_read) { return true; } return false; }
/** * check access to learning progress * * @param int $a_ref_id reference ifd of object * @param bool $a_allow_only_read read access is sufficient (see courses/groups) * @return * @static */ public static function checkAccess($a_ref_id, $a_allow_only_read = true) { global $ilUser, $ilAccess; if ($ilUser->getId() == ANONYMOUS_USER_ID) { return false; } include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (!ilObjUserTracking::_enabledLearningProgress()) { return false; } if ($ilAccess->checkAccess('edit_learning_progress', '', $a_ref_id)) { return true; } if (!ilObjUserTracking::_hasLearningProgressLearner()) { return false; } include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance(ilObject::_lookupObjId($a_ref_id)); if (!$olp->isActive()) { return false; } if (!$ilAccess->checkAccess('read', '', $a_ref_id)) { return false; } if ($a_allow_only_read) { return true; } return false; }
/** * Handle an event in a listener. * * @param string $a_component component, e.g. "Modules/Forum" or "Services/User" * @param string $a_event event e.g. "createUser", "updateUser", "deleteUser", ... * @param array $a_parameter parameter array (assoc), array("name" => ..., "phone_office" => ...) */ static function handleEvent($a_component, $a_event, $a_parameter) { global $ilUser; if ($a_component == "Services/Tracking" && $a_event == "updateStatus") { // #13905 include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (!ilObjUserTracking::_enabledLearningProgress()) { return; } $obj_id = $a_parameter["obj_id"]; $user_id = $a_parameter["usr_id"]; $status = $a_parameter["status"]; if ($obj_id && $user_id) { if (ilObject::_lookupType($obj_id) != "crs") { return; } // determine couse setting only once if (!isset(self::$course_mode[$obj_id])) { include_once "./Modules/Course/classes/class.ilObjCourse.php"; $crs = new ilObjCourse($obj_id, false); if ($crs->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $mode = $olp->getCurrentMode(); } else { $mode = false; } self::$course_mode[$obj_id] = $mode; } $is_completed = $status == ilLPStatus::LP_STATUS_COMPLETED_NUM; // we are NOT using the members object because of performance issues switch (self::$course_mode[$obj_id]) { case ilLPObjSettings::LP_MODE_MANUAL_BY_TUTOR: // #11600 include_once "Modules/Course/classes/class.ilCourseParticipants.php"; ilCourseParticipants::_updatePassed($obj_id, $user_id, $is_completed, true); break; case ilLPObjSettings::LP_MODE_COLLECTION: case ilLPObjSettings::LP_MODE_OBJECTIVES: // overwrites course passed status if it was set automatically (full sync) // or toggle manually set passed status to completed (1-way-sync) $do_update = $is_completed; include_once "Modules/Course/classes/class.ilCourseParticipants.php"; if (!$do_update) { $part = new ilCourseParticipants($obj_id); $passed = $part->getPassedInfo($user_id); if (!is_array($passed) || $passed["user_id"] == -1) { $do_update = true; } } if ($do_update) { ilCourseParticipants::_updatePassed($obj_id, $user_id, $is_completed); } break; } } } }
/** * Get all completed tests */ protected function getItems() { global $ilUser, $tree; $data = array(); include_once "Services/Certificate/classes/class.ilCertificate.php"; if (ilCertificate::isActive()) { $obj_ids = array(); $root = $tree->getNodeData($tree->getRootId()); foreach ($tree->getSubTree($root, true, "sahs") as $node) { $obj_ids[] = $node["obj_id"]; } if ($obj_ids) { include_once "./Services/Tracking/classes/class.ilObjUserTracking.php"; include_once "./Services/Tracking/classes/class.ilLPStatus.php"; include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; include_once "./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php"; include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php"; include_once "./Modules/ScormAicc/classes/class.ilSCORMCertificateAdapter.php"; $lp_active = ilObjUserTracking::_enabledLearningProgress(); foreach (ilCertificate::areObjectsActive($obj_ids) as $obj_id => $active) { if ($active) { $type = ilObjSAHSLearningModule::_lookupSubType($obj_id); if ($type == "scorm") { $lm = new ilObjSCORMLearningModule($obj_id, false); } else { $lm = new ilObjSCORM2004LearningModule($obj_id, false); } $adapter = new ilSCORMCertificateAdapter($lm); if (ilCertificate::_isComplete($adapter)) { $lpdata = $completed = false; if ($lp_active) { $completed = ilLPStatus::_hasUserCompleted($obj_id, $ilUser->getId()); $lpdata = true; } if (!$lpdata) { switch ($type) { case "scorm": $completed = ilObjSCORMLearningModule::_getCourseCompletionForUser($obj_id, $ilUser->getId()); break; case "scorm2004": $completed = ilObjSCORM2004LearningModule::_getCourseCompletionForUser($obj_id, $ilUser->getId()); break; } } $data[] = array("id" => $obj_id, "title" => ilObject::_lookupTitle($obj_id), "passed" => (bool) $completed); } } } } } $this->setData($data); }
function getItems() { $this->determineOffsetAndOrder(); include_once "./Services/User/classes/class.ilUserQuery.php"; $usr_data = ilUserQuery::getUserListData(ilUtil::stripSlashes($this->getOrderField()), ilUtil::stripSlashes($this->getOrderDirection()), ilUtil::stripSlashes($this->getOffset()), ilUtil::stripSlashes($this->getLimit()), null, null, null, null, null, null, null, null, array("online_time"), null, null); if (count($usr_data["set"]) == 0 && $this->getOffset() > 0) { $this->resetOffset(); $usr_data = ilUserQuery::getUserListData(ilUtil::stripSlashes($this->getOrderField()), ilUtil::stripSlashes($this->getOrderDirection()), ilUtil::stripSlashes($this->getOffset()), ilUtil::stripSlashes($this->getLimit()), null, null, null, null, null, null, null, null, array("online_time"), null, null); } $this->setMaxCount($usr_data["cnt"]); $this->setData($usr_data["set"]); include_once 'Services/Tracking/classes/class.ilObjUserTracking.php'; $this->lp_active = ilObjUserTracking::_enabledLearningProgress(); }
/** * set settings for learning progress determination per default at upload */ function setLearningProgressSettingsAtUpload() { global $ilSetting; //condition 1 if ($ilSetting->get('scorm_lp_auto_activate', 0)) { return; } //condition 2 include_once "./Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() == false) { return; } //set Learning Progress to Automatic by Collection of SCORM Items include_once "./Services/Tracking/classes/class.ilLPObjSettings.php"; $lm_set = new ilLPObjSettings($this->getId()); $lm_set->setMode(ilLPObjSettings::LP_MODE_SCORM); $lm_set->insert(); //select all SCOs as relevant for Learning Progress include_once "Services/Tracking/classes/collection/class.ilLPCollectionOfSCOs.php"; $collection = new ilLPCollectionOfSCOs($this->getId(), ilLPObjSettings::LP_MODE_SCORM); $scos = array(); foreach ($collection->getPossibleItems() as $sco_id => $item) { $scos[] = $sco_id; } $collection->activateEntries($scos); }
public static function preloadListGUIData($a_obj_ids) { global $ilDB, $ilUser, $lng; $res = array(); include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if ($ilUser->getId() != ANONYMOUS_USER_ID && ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_hasLearningProgressListGUI()) { include_once "Services/Object/classes/class.ilObjectLP.php"; // validate objects $valid = array(); $existing = ilLPObjSettings::_lookupDBModeForObjects($a_obj_ids); foreach ($existing as $obj_id => $obj_mode) { if ($obj_mode != ilLPObjSettings::LP_MODE_DEACTIVATED) { $valid[$obj_id] = $obj_id; } } if (sizeof($existing) != sizeof($a_obj_ids)) { // missing objects (default mode) foreach (array_diff($a_obj_ids, $existing) as $obj_id) { $olp = ilObjectLP::getInstance($obj_id); $mode = $olp->getCurrentMode(); if ($mode == ilLPObjSettings::LP_MODE_DEACTIVATED) { // #11141 unset($valid[$obj_id]); } else { if ($mode != ilLPObjSettings::LP_MODE_UNDEFINED) { $valid[$obj_id] = $obj_id; } } } unset($existing); } $valid = array_values($valid); // get user lp data $sql = "SELECT status, status_dirty, obj_id FROM ut_lp_marks" . " WHERE " . $ilDB->in("obj_id", $valid, "", "integer") . " AND usr_id = " . $ilDB->quote($ilUser->getId(), "integer"); $set = $ilDB->query($sql); while ($row = $ilDB->fetchAssoc($set)) { if (!$row["status_dirty"]) { $res[$row["obj_id"]] = $row["status"]; } else { $res[$row["obj_id"]] = self::_lookupStatus($row["obj_id"], $ilUser->getId()); } } // process missing user entries (same as dirty entries, see above) foreach ($valid as $obj_id) { if (!isset($res[$obj_id])) { $res[$obj_id] = self::_lookupStatus($obj_id, $ilUser->getId()); if ($res[$obj_id] === null) { $res[$obj_id] = self::LP_STATUS_NOT_ATTEMPTED_NUM; } } } // value to icon $lng->loadLanguageModule("trac"); include_once "./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php"; foreach ($res as $obj_id => $status) { $path = ilLearningProgressBaseGUI::_getImagePathForStatus($status); $text = ilLearningProgressBaseGUI::_getStatusText($status); $res[$obj_id] = ilUtil::img($path, $text); } } self::$list_gui_cache = $res; }
/** * sync course status from lp * * as lp data is not deleted on course exit new members may already have lp completed * * @param int $a_member_id */ public function checkLPStatusSync($a_member_id) { // #11113 include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && $this->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once "Services/Tracking/classes/class.ilLPStatus.php"; $lp_status = ilLPStatus::_lookupStatus($this->getId(), $a_member_id); if ($lp_status == LP_STATUS_COMPLETED_NUM) { $this->getMembersObject()->updatePassed($a_member_id, true, -1); } } }
/** * Set tabs */ function setTabs() { global $ilTabs, $ilCtrl, $lng; if ($this->checkCreationMode()) { return; } $type = new ilExternalContentType($this->object->getTypeId()); // view tab if ($this->object->typedef->getLaunchType() == ilExternalContentType::LAUNCH_TYPE_EMBED) { $ilTabs->addTab("viewEmbed", $this->lng->txt("content"), $ilCtrl->getLinkTarget($this, "viewEmbed")); } // info screen tab $ilTabs->addTab("infoScreen", $this->lng->txt("info_short"), $ilCtrl->getLinkTarget($this, "infoScreen")); // add "edit" tab if ($this->checkPermissionBool("write")) { $ilTabs->addTab("edit", $this->lng->txt("edit"), $ilCtrl->getLinkTarget($this, "edit")); } include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && ($this->checkPermissionBool("edit_learning_progress") || $this->checkPermissionBool("read_learning_progress"))) { if ($this->object->getLPMode() == ilObjExternalContent::LP_ACTIVE && $this->checkPermissionBool("read_learning_progress")) { if (ilObjUserTracking::_enabledUserRelatedData()) { $ilTabs->addTab("learning_progress", $lng->txt('learning_progress'), $ilCtrl->getLinkTargetByClass(array('ilObjExternalContentGUI', 'ilLearningProgressGUI', 'ilLPListOfObjectsGUI'))); } else { $ilTabs->addTab("learning_progress", $lng->txt('learning_progress'), $ilCtrl->getLinkTargetByClass(array('ilObjExternalContentGUI', 'ilLearningProgressGUI', 'ilLPListOfObjectsGUI'), 'showObjectSummary')); } } elseif ($this->checkPermissionBool("edit_learning_progress")) { $ilTabs->addTab('learning_progress', $lng->txt('learning_progress'), $ilCtrl->getLinkTarget($this, 'editLPSettings')); } if (in_array($ilCtrl->getCmdClass(), array('illearningprogressgui', 'illplistofobjectsgui'))) { $ilTabs->addSubTab("lp_settings", $this->txt('settings'), $ilCtrl->getLinkTargetByClass(array('ilObjExternalContentGUI'), 'editLPSettings')); } } // standard permission tab $this->addPermissionTab(); }
protected function getCoursesOfUser($a_user_id, $a_add_path = false) { global $tree; // see ilPDSelectedItemsBlockGUI include_once 'Modules/Course/classes/class.ilObjCourseAccess.php'; include_once 'Services/Membership/classes/class.ilParticipants.php'; $items = ilParticipants::_getMembershipByType($a_user_id, 'crs'); $repo_title = $tree->getNodeData(ROOT_FOLDER_ID); $repo_title = $repo_title["title"]; if ($repo_title == "ILIAS") { $repo_title = $this->lng->txt("repository"); } $references = $lp_obj_refs = array(); foreach ($items as $obj_id) { $ref_id = ilObject::_getAllReferences($obj_id); if (is_array($ref_id) && count($ref_id)) { $ref_id = array_pop($ref_id); if (!$tree->isDeleted($ref_id)) { $visible = false; $active = ilObjCourseAccess::_isActivated($obj_id, $visible, false); if ($active && $visible) { $references[$ref_id] = array('ref_id' => $ref_id, 'obj_id' => $obj_id, 'title' => ilObject::_lookupTitle($obj_id)); if ($a_add_path) { $path = array(); foreach ($tree->getPathFull($ref_id) as $item) { $path[] = $item["title"]; } // top level comes first if (sizeof($path) == 2) { $path[0] = 0; } else { $path[0] = 1; } $references[$ref_id]["path_sort"] = implode("__", $path); array_shift($path); array_pop($path); if (!sizeof($path)) { array_unshift($path, $repo_title); } $references[$ref_id]["path"] = implode(" › ", $path); } $lp_obj_refs[$obj_id] = $ref_id; } } } } // get lp data for valid courses if (sizeof($lp_obj_refs)) { // listing the objectives should NOT depend on any LP status / setting include_once 'Modules/Course/classes/class.ilObjCourse.php'; foreach ($lp_obj_refs as $obj_id => $ref_id) { // only if set in DB (default mode is not relevant if (ilObjCourse::_lookupViewMode($obj_id) == IL_CRS_VIEW_OBJECTIVE) { $references[$ref_id]["objectives"] = $this->parseObjectives($obj_id, $a_user_id); } } // LP must be active, personal and not anonymized include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_enabledUserRelatedData() && ilObjUserTracking::_hasLearningProgressLearner()) { // see ilLPProgressTableGUI include_once "Services/Tracking/classes/class.ilTrQuery.php"; include_once "Services/Tracking/classes/class.ilLPStatusFactory.php"; $lp_data = ilTrQuery::getObjectsStatusForUser($a_user_id, $lp_obj_refs); foreach ($lp_data as $item) { $ref_id = $item["ref_ids"]; $references[$ref_id]["lp_status"] = $item["status"]; } } } return $references; }
function fillRow($set) { global $ilUser, $Access, $lng, $ilAccess; $this->tpl->setVariable("FIRST_NAME", $set["first_name"]); $this->tpl->setVariable("LAST_NAME", $set["last_name"]); if ($this->recursive) { $orgUnitsTitles = array_values(ilObjOrgUnitTree::_getInstance()->getTitles($set['org_units'])); $this->tpl->setVariable("ORG_UNITS", implode(', ', $orgUnitsTitles)); } $this->ctrl->setParameterByClass("illearningprogressgui", "obj_id", $set["user_id"]); $this->ctrl->setParameterByClass("ilobjorgunitgui", "obj_id", $set["user_id"]); $selection = new ilAdvancedSelectionListGUI(); $selection->setListTitle($lng->txt("Actions")); $selection->setId("selection_list_user_lp_" . $set["user_id"]); if ($ilAccess->checkAccess("view_learning_progress", "", $_GET["ref_id"]) and ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData()) { $selection->addItem($lng->txt("show_learning_progress"), "show_learning_progress", $this->ctrl->getLinkTargetByClass(array("ilAdministrationGUI", "ilObjOrgUnitGUI", "ilLearningProgressGUI"), "")); } if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]) && !$this->recursive) { if ($this->staff == "employee") { $this->addEmployeeActions($selection); } if ($this->staff == "superior") { $this->addSuperiorActions($selection); } } $this->tpl->setVariable("ACTIONS", $selection->getHTML()); }
function showLearningProgress($a_tpl) { global $ilUser, $rbacsystem; if (!$rbacsystem->checkAccess('read', $this->gui_object->object->getRefId())) { return false; } if ($ilUser->getId() == ANONYMOUS_USER_ID) { return false; } include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (!ilObjUserTracking::_enabledLearningProgress() and $ilUser->getId() != ANONYMOUS_USER_ID) { return false; } include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->gui_object->object->getId()); if ($olp->getCurrentMode() != ilLPObjSettings::LP_MODE_MANUAL) { return false; } include_once 'Services/Tracking/classes/class.ilLPMarks.php'; $this->lng->loadLanguageModule('trac'); // section header // $a_tpl->setCurrentBlock("header_row"); $a_tpl->setVariable("TXT_SECTION", $this->lng->txt('learning_progress')); $a_tpl->parseCurrentBlock(); // $a_tpl->touchBlock("row"); // status $i_tpl = new ilTemplate("tpl.lp_edit_manual_info_page.html", true, true, "Services/Tracking"); $i_tpl->setVariable("INFO_EDITED", $this->lng->txt("trac_info_edited")); $i_tpl->setVariable("SELECT_STATUS", ilUtil::formSelect((int) ilLPMarks::_hasCompleted($ilUser->getId(), $this->gui_object->object->getId()), 'lp_edit', array(0 => $this->lng->txt('trac_not_completed'), 1 => $this->lng->txt('trac_completed')), false, true)); $i_tpl->setVariable("TXT_SAVE", $this->lng->txt("save")); $a_tpl->setCurrentBlock("pv"); $a_tpl->setVariable("TXT_PROPERTY_VALUE", $i_tpl->get()); $a_tpl->parseCurrentBlock(); $a_tpl->setCurrentBlock("property_row"); $a_tpl->setVariable("TXT_PROPERTY", $this->lng->txt('trac_status')); $a_tpl->parseCurrentBlock(); // $a_tpl->touchBlock("row"); // More infos for lm's if ($this->gui_object->object->getType() == 'lm' || $this->gui_object->object->getType() == 'htlm') { $a_tpl->setCurrentBlock("pv"); include_once 'Services/Tracking/classes/class.ilLearningProgress.php'; $progress = ilLearningProgress::_getProgress($ilUser->getId(), $this->gui_object->object->getId()); if ($progress['access_time']) { $a_tpl->setVariable("TXT_PROPERTY_VALUE", ilDatePresentation::formatDate(new ilDateTime($progress['access_time'], IL_CAL_DATETIME))); } else { $a_tpl->setVariable("TXT_PROPERTY_VALUE", $this->lng->txt('trac_not_accessed')); } $a_tpl->parseCurrentBlock(); $a_tpl->setCurrentBlock("property_row"); $a_tpl->setVariable("TXT_PROPERTY", $this->lng->txt('trac_last_access')); $a_tpl->parseCurrentBlock(); // $a_tpl->touchBlock("row"); // tags of all users $a_tpl->setCurrentBlock("pv"); $a_tpl->setVariable("TXT_PROPERTY_VALUE", (int) $progress['visits']); $a_tpl->parseCurrentBlock(); $a_tpl->setCurrentBlock("property_row"); $a_tpl->setVariable("TXT_PROPERTY", $this->lng->txt('trac_visits')); $a_tpl->parseCurrentBlock(); // $a_tpl->touchBlock("row"); if ($this->gui_object->object->getType() == 'lm') { // tags of all users $a_tpl->setCurrentBlock("pv"); $a_tpl->setVariable("TXT_PROPERTY_VALUE", ilFormat::_secondsToString($progress['spent_seconds'])); $a_tpl->parseCurrentBlock(); $a_tpl->setCurrentBlock("property_row"); $a_tpl->setVariable("TXT_PROPERTY", $this->lng->txt('trac_spent_time')); $a_tpl->parseCurrentBlock(); // $a_tpl->touchBlock("row"); } } // #10493 $a_tpl->touchBlock("row"); }
protected function getCoursesOfUser($a_user_id) { global $tree; // see ilPDSelectedItemsBlockGUI include_once 'Modules/Course/classes/class.ilObjCourseAccess.php'; include_once 'Services/Membership/classes/class.ilParticipants.php'; $items = ilParticipants::_getMembershipByType($a_user_id, 'crs'); $references = $lp_obj_refs = array(); foreach ($items as $obj_id) { $ref_id = ilObject::_getAllReferences($obj_id); if (is_array($ref_id) && count($ref_id)) { $ref_id = array_pop($ref_id); if (!$tree->isDeleted($ref_id)) { $visible = false; $active = ilObjCourseAccess::_isActivated($obj_id, $visible, false); if ($active && $visible) { $references[$ref_id] = array('ref_id' => $ref_id, 'obj_id' => $obj_id, 'title' => ilObject::_lookupTitle($obj_id)); $lp_obj_refs[$obj_id] = $ref_id; } } } } // get lp data for valid courses if (sizeof($lp_obj_refs)) { // lp must be active, personal and not anonymized include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_enabledUserRelatedData() && ilObjUserTracking::_hasLearningProgressLearner()) { // see ilLPProgressTableGUI include_once "Services/Tracking/classes/class.ilTrQuery.php"; include_once "Services/Tracking/classes/class.ilLPStatusFactory.php"; $lp_data = ilTrQuery::getObjectsStatusForUser($a_user_id, $lp_obj_refs); foreach ($lp_data as $item) { $ref_id = $item["ref_ids"]; $references[$ref_id]["lp_status"] = $item["status"]; // add objectives if ($item["u_mode"] == ilLPObjSettings::LP_MODE_OBJECTIVES) { // we need the collection for the correct order include_once "Services/Tracking/classes/collection/class.ilLPCollectionOfObjectives.php"; $coll_objtv = new ilLPCollectionOfObjectives($item["obj_id"], $item["u_mode"]); $coll_objtv = $coll_objtv->getItems(); if ($coll_objtv) { // #13373 $lo_results = $this->parseLOUserResults($item["obj_id"], $a_user_id); $tmp = array(); include_once "Modules/Course/classes/class.ilCourseObjective.php"; foreach ($coll_objtv as $objective_id) { $tmp[$objective_id] = array("id" => $objective_id, "title" => ilCourseObjective::lookupObjectiveTitle($objective_id)); if (array_key_exists($objective_id, $lo_results)) { $lo_result = $lo_results[$objective_id]; $tmp[$objective_id]["result_perc"] = $lo_result["result_perc"]; $tmp[$objective_id]["limit_perc"] = $lo_result["limit_perc"]; $tmp[$objective_id]["status"] = $lo_result["status"]; $tmp[$objective_id]["type"] = $lo_result["type"]; } } // order foreach ($coll_objtv as $objtv_id) { $references[$ref_id]["objectives"][] = $tmp[$objtv_id]; } } } } } } $references = ilUtil::sortArray($references, "title", "ASC"); return $references; }
function getTabs(&$tabs_gui) { global $rbacsystem; $this->ctrl->setParameter($this, "ref_id", $this->ref_id); $tabs_gui->addTarget("settings", $this->ctrl->getLinkTarget($this, "settings"), "settings", get_class($this)); if ($rbacsystem->checkAccess("read", $this->object->getRefId())) { if (ilObjUserTracking::_enabledObjectStatistics()) { $tabs_gui->addTarget("statistics", $this->ctrl->getLinkTargetByClass("illpobjectstatisticsgui", "access"), "", "illpobjectstatisticsgui"); } if (ilObjUserTracking::_enabledLearningProgress()) { $tabs_gui->addTarget("learning_progress", $this->ctrl->getLinkTargetByClass("illearningprogressgui", "show"), "", "illearningprogressgui"); } // session statistics if (ilObjUserTracking::_enabledSessionStatistics()) { $tabs_gui->addTarget("session_statistics", $this->ctrl->getLinkTargetByClass("ilsessionstatisticsgui", ""), "", "ilsessionstatisticsgui"); } } if ($rbacsystem->checkAccess("edit_permission", $this->object->getRefId())) { $tabs_gui->addTarget("perm_settings", $this->ctrl->getLinkTargetByClass(array(get_class($this), 'ilpermissiongui'), "perm"), array("perm", "info", "owner"), 'ilpermissiongui'); } }
/** * Init attendance list object * * @return ilAttendanceList */ protected function initAttendanceList() { include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $members_obj = ilGroupParticipants::_getInstanceByObjId($this->object->getId()); include_once 'Services/Membership/classes/class.ilAttendanceList.php'; $list = new ilAttendanceList($this, $members_obj); $list->setId('grpmemlst'); $list->setTitle($this->lng->txt('grp_members_print_title'), $this->lng->txt('obj_grp') . ': ' . $this->object->getTitle()); include_once './Services/Tracking/classes/class.ilObjUserTracking.php'; include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; $this->show_tracking = (ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData() and ilLPObjSettings::_lookupMode($this->object->getId()) != LP_MODE_DEACTIVATED); if ($this->show_tracking) { $this->lng->loadLanguageModule('trac'); $list->addPreset('progress', $this->lng->txt('learning_progress'), true); } include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; $privacy = ilPrivacySettings::_getInstance(); if ($privacy->enabledGroupAccessTimes()) { $list->addPreset('access', $this->lng->txt('last_access'), true); } return $list; }
/** * get tabs * @access public * @param object tabs gui object */ function getTabs(&$tabs_gui) { include_once 'Services/Tracking/classes/class.ilObjUserTracking.php'; global $rbacsystem; if ($rbacsystem->checkAccess("visible,read", $this->object->getRefId())) { $tabs_gui->addTarget("obj_usrf", $this->ctrl->getLinkTarget($this, "view"), array("view", "delete", "resetFilter", "userAction", ""), "", ""); $tabs_gui->addTarget("search_user_extended", $this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI', ''), array(), "ilrepositorysearchgui", ""); } if ($rbacsystem->checkAccess("write", $this->object->getRefId())) { $tabs_gui->addTarget("settings", $this->ctrl->getLinkTarget($this, "generalSettings"), array('settings', 'generalSettings', 'listUserDefinedField', 'newAccountMail')); $tabs_gui->addTarget("export", $this->ctrl->getLinkTarget($this, "export"), "export", "", ""); if (ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_enabledUserRelatedData()) { $tabs_gui->addTarget("learning_progress", $this->ctrl->getLinkTarget($this, "learningProgress"), "learningProgress", "", ""); } } if ($rbacsystem->checkAccess('edit_permission', $this->object->getRefId())) { $tabs_gui->addTarget("perm_settings", $this->ctrl->getLinkTargetByClass(array(get_class($this), 'ilpermissiongui'), "perm"), array("perm", "info", "owner"), 'ilpermissiongui'); } }
/** * get tabs */ function getTabs(&$tabs_gui) { global $rbacsystem, $ilHelp; $tabs_gui->clearTargets(); $ilHelp->setScreenIdComponent("usr"); if ($_GET["search"]) { $tabs_gui->setBackTarget($this->lng->txt("search_results"), $_SESSION["usr_search_link"]); $tabs_gui->addTarget("properties", $this->ctrl->getLinkTarget($this, "edit"), array("edit", "", "view"), get_class($this), "", true); } else { $tabs_gui->addTarget("properties", $this->ctrl->getLinkTarget($this, "edit"), array("edit", "", "view"), get_class($this)); } $tabs_gui->addTarget("role_assignment", $this->ctrl->getLinkTarget($this, "roleassignment"), array("roleassignment"), get_class($this)); // learning progress include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if ($rbacsystem->checkAccess('read', $this->ref_id) and ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData()) { $tabs_gui->addTarget('learning_progress', $this->ctrl->getLinkTargetByClass('illearningprogressgui', ''), '', array('illplistofobjectsgui', 'illplistofsettingsgui', 'illearningprogressgui', 'illplistofprogressgui')); } $tabs_gui->addTarget('user_ownership', $this->ctrl->getLinkTargetByClass('ilobjectownershipmanagementgui', ''), '', 'ilobjectownershipmanagementgui'); }
public function getSCORMCompletionStatus($sid, $a_usr_id, $a_ref_id) { $this->initAuth($sid); $this->initIlias(); if (!$this->__checkSession($sid)) { return $this->__raiseError($this->__getMessage(), $this->__getMessageCode()); } if (!strlen($a_ref_id)) { return $this->__raiseError('No ref_id given. Aborting!', 'Client'); } include_once 'include/inc.header.php'; // get obj_id if (!($obj_id = ilObject::_lookupObjectId($a_ref_id))) { return $this->__raiseError('No scorm module found for id: ' . $a_ref_id, 'Client'); } include_once 'Services/Tracking/classes/class.ilLPStatus.php'; include_once 'Services/Tracking/classes/class.ilObjUserTracking.php'; if (!ilObjUserTracking::_enabledLearningProgress()) { return $this->__raiseError('Learning progress not enabled in this installation. Aborting!', 'Server'); } $status = ilLPStatus::_lookupStatus($obj_id, $a_usr_id); if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) { return 'completed'; } else { if ($status == ilLPStatus::LP_STATUS_FAILED_NUM) { return 'failed'; } else { if ($status == ilLPStatus::LP_STATUS_IN_PROGRESS_NUM) { return 'in_progress'; } else { return 'not_attempted'; } } } }
/** * Checks whether a certificate exists for the active user or not * @param int obj_id Object ID of the SCORM Learning Module * @param int usr_id Object ID of the user. If not given, the active user will be taken * @return true/false */ public static function _lookupUserCertificate($obj_id, $usr_id = 0) { global $ilUser; $uid = $usr_id ? $usr_id : $ilUser->getId(); $completed = false; // check for certificates include_once "./Services/Certificate/classes/class.ilCertificate.php"; if (ilCertificate::isActive() && ilCertificate::isObjectActive($obj_id)) { $lpdata = false; include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; $type = ilObjSAHSLearningModule::_lookupSubType($obj_id); include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress()) { include_once "./Services/Tracking/classes/class.ilLPStatus.php"; $completed = ilLPStatus::_hasUserCompleted($obj_id, $uid); $lpdata = true; } switch ($type) { case "scorm": if (!$lpdata) { include_once "./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php"; $completed = ilObjSCORMLearningModule::_getCourseCompletionForUser($obj_id, $uid); } break; case "scorm2004": if (!$lpdata) { include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php"; $completed = ilObjSCORM2004LearningModule::_getCourseCompletionForUser($obj_id, $uid); } break; default: break; } } return $completed; }
function __getNextClass() { global $ilAccess, $ilUser; // #9857 if (!ilObjUserTracking::_enabledLearningProgress()) { return; } if (strlen($next_class = $this->ctrl->getNextClass())) { if ($this->getMode() == self::LP_CONTEXT_PERSONAL_DESKTOP) { $_SESSION['il_lp_history'] = $next_class; } return $next_class; } switch ($this->getMode()) { case self::LP_CONTEXT_ADMINISTRATION: return 'illplistofobjectsgui'; case self::LP_CONTEXT_REPOSITORY: $cmd = $this->ctrl->getCmd(); if (in_array($cmd, array("editmanual", "updatemanual", "showtlt"))) { return ""; } // #12771 include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance(ilObject::_lookupObjId($this->getRefId())); if (!$olp->isActive()) { if (!$olp instanceof ilPluginLP && $ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) { return 'illplistofsettingsgui'; } else { return ''; } } if (!$this->anonymized && $ilAccess->checkAccess('read_learning_progress', '', $this->getRefId())) { return 'illplistofobjectsgui'; } if ($ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) { return 'illplistofsettingsgui'; } return 'illplistofprogressgui'; case self::LP_CONTEXT_PERSONAL_DESKTOP: include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; $has_edit = ilObjUserTracking::_hasLearningProgressOtherUsers(); $has_personal = ilObjUserTracking::_hasLearningProgressLearner(); if ($has_edit || $has_personal) { // default (#10928) $tgt = null; if ($has_personal) { $tgt = 'illplistofprogressgui'; } else { if ($has_edit) { $tgt = 'illplistofobjectsgui'; } } // validate session switch ($_SESSION['il_lp_history']) { case 'illplistofobjectsgui': if (!$has_edit) { $_SESSION['il_lp_history'] = null; } break; case 'illplistofprogressgui': if (!$has_personal) { $_SESSION['il_lp_history'] = null; } break; } if ($_SESSION['il_lp_history']) { return $_SESSION['il_lp_history']; } else { if ($tgt) { return $tgt; } } } // should not happen ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI"); case self::LP_CONTEXT_USER_FOLDER: case self::LP_CONTEXT_ORG_UNIT: if (ilObjUserTracking::_enabledUserRelatedData()) { return 'illplistofprogressgui'; } break; } }
/** * Constructor * * @access public * @param * @return */ public function __construct($a_parent_obj, $a_type = 'admin', $show_content = true, $a_show_learning_progress = false, $a_show_timings = false, $a_show_edit_link = true, $a_role_id = 0, $a_show_lp_status_sync = false) { global $lng, $ilCtrl; $this->show_learning_progress = $a_show_learning_progress; $this->show_timings = $a_show_timings; $this->show_edit_link = $a_show_edit_link; $this->show_lp_status_sync = $a_show_lp_status_sync; // #13208 include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (!ilObjUserTracking::_enabledLearningProgress()) { $this->show_lp_status_sync = false; } $this->lng = $lng; $this->lng->loadLanguageModule('crs'); $this->lng->loadLanguageModule('trac'); $this->ctrl = $ilCtrl; $this->type = $a_type; $this->setRoleId($a_role_id); include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; $this->privacy = ilPrivacySettings::_getInstance(); // required before constructor for columns $this->setId('crs_' . $a_type . '_' . $a_role_id . '_' . $a_parent_obj->object->getId()); parent::__construct($a_parent_obj, 'members'); $this->initSettings(); $this->setFormName('participants'); $this->addColumn('', 'f', "1"); $this->addColumn($this->lng->txt('name'), 'lastname', '20%'); $all_cols = $this->getSelectableColumns(); foreach ($this->getSelectedColumns() as $col) { $this->addColumn($all_cols[$col]['txt'], $col); } if ($this->show_learning_progress) { $this->addColumn($this->lng->txt('learning_progress'), 'progress'); } if ($this->privacy->enabledCourseAccessTimes()) { $this->addColumn($this->lng->txt('last_access'), 'access_ut', '16em'); } $this->addColumn($this->lng->txt('crs_member_passed'), 'passed'); if ($this->show_lp_status_sync) { $this->addColumn($this->lng->txt('crs_member_passed_status_changed'), 'passed_info'); } if ($this->type == 'admin') { $this->setSelectAllCheckbox('admins'); $this->addColumn($this->lng->txt('crs_notification_list_title'), 'notification'); $this->addCommandButton('updateAdminStatus', $this->lng->txt('save')); } elseif ($this->type == 'tutor') { $this->setSelectAllCheckbox('tutors'); $this->addColumn($this->lng->txt('crs_notification_list_title'), 'notification'); $this->addCommandButton('updateTutorStatus', $this->lng->txt('save')); } elseif ($this->type == 'member') { $this->setSelectAllCheckbox('members'); $this->addColumn($this->lng->txt('crs_blocked'), 'blocked'); $this->addCommandButton('updateMemberStatus', $this->lng->txt('save')); } else { $this->setSelectAllCheckbox('roles'); $this->addColumn($this->lng->txt('crs_blocked'), 'blocked'); $this->addCommandButton('updateRoleStatus', $this->lng->txt('save')); } $this->addColumn($this->lng->txt(''), 'optional'); $this->setRowTemplate("tpl.show_participants_row.html", "Modules/Course"); if ($show_content) { $this->setDefaultOrderField('lastname'); $this->enable('sort'); $this->enable('header'); $this->enable('numinfo'); $this->enable('select_all'); } else { $this->disable('content'); $this->disable('header'); $this->disable('footer'); $this->disable('numinfo'); $this->disable('select_all'); } $this->setEnableNumInfo(true); $this->setExternalSegmentation(true); $this->getItems(); $this->setTopCommands(true); $this->setEnableHeader(true); $this->setEnableTitle(true); $this->initFilter(); $this->setShowRowsSelector(true); include_once "Services/Certificate/classes/class.ilCertificate.php"; $this->enable_certificates = ilCertificate::isActive(); if ($this->enable_certificates) { $this->enable_certificates = ilCertificate::isObjectActive($a_parent_obj->object->getId()); } if ($this->enable_certificates) { $lng->loadLanguageModule('certificate'); } }
/** * GetDropDownHTML * * @param * @return */ function renderDropDown($a_tpl, $a_id) { global $lng, $ilSetting, $rbacsystem; $id = strtolower($a_id); $id_up = strtoupper($a_id); $a_tpl->setCurrentBlock("entry_" . $id); include_once "./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php"; $selection = new ilAdvancedSelectionListGUI(); if ($this->active == $a_id || $this->active == "" && $a_id == "repository") { $selection->setSelectionHeaderClass("MMActive"); $a_tpl->setVariable("SEL", '<span class="ilAccHidden">(' . $lng->txt("stat_selected") . ')</span>'); } else { $selection->setSelectionHeaderClass("MMInactive"); } $selection->setSelectionHeaderSpanClass("MMSpan"); $selection->setHeaderIcon(ilAdvancedSelectionListGUI::ICON_ARROW); $selection->setItemLinkClass("small"); $selection->setUseImages(false); switch ($id) { // desktop drop down case "desktop": $selection->setListTitle($lng->txt("personal_desktop")); $selection->setId("dd_pd"); // overview $selection->addItem($lng->txt("overview"), "", "ilias.php?baseClass=ilPersonalDesktopGUI", "", "", "_top"); if (!$ilSetting->get("disable_personal_workspace")) { // workspace $selection->addItem($lng->txt("personal_workspace"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToWorkspace", "", "", "_top"); } // profile $selection->addItem($lng->txt("personal_profile"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToProfile", "", "", "_top"); // skills $skmg_set = new ilSetting("skmg"); if ($skmg_set->get("enable_skmg")) { $selection->addItem($lng->txt("skills"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToSkills", "", "", "_top"); } // portfolio if ($ilSetting->get('user_portfolios')) { $selection->addItem($lng->txt("portfolio"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToPortfolio", "", "", "_top"); } // news if ($ilSetting->get("block_activated_news")) { $selection->addItem($lng->txt("news"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToNews", "", "", "_top"); } // Learning Progress include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress()) { //$ilTabs->addTarget("learning_progress", $this->ctrl->getLinkTargetByClass("ilLearningProgressGUI")); $selection->addItem($lng->txt("learning_progress"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToLP", "", "", "_top"); } // calendar include_once './Services/Calendar/classes/class.ilCalendarSettings.php'; $settings = ilCalendarSettings::_getInstance(); if ($settings->isEnabled()) { $selection->addItem($lng->txt("calendar"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToCalendar", "", "", "_top"); } // mail if ($this->mail) { $selection->addItem($lng->txt('mail'), '', 'ilias.php?baseClass=ilMailGUI', '', '', '_top'); } // contacts if (!$this->ilias->getSetting('disable_contacts') && ($this->ilias->getSetting('disable_contacts_require_mail') || $rbacsystem->checkAccess('internal_mail', ilMailGlobalServices::getMailObjectRefId()))) { $selection->addItem($lng->txt('mail_addressbook'), '', 'ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToContacts', '', '', '_top'); } // private notes if (!$this->ilias->getSetting("disable_notes")) { $selection->addItem($lng->txt("notes_and_comments"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToNotes", "", "", "_top"); } // bookmarks if (!$this->ilias->getSetting("disable_bookmarks")) { $selection->addItem($lng->txt("bookmarks"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToBookmarks", "", "", "_top"); } // settings $selection->addItem($lng->txt("personal_settings"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToSettings", "", "", "_top"); break; // shop // shop case 'shop': $selection->setListTitle($lng->txt("shop")); $selection->setId("dd_shp"); $selection->addItem($lng->txt("shop"), "", "ilias.php?baseClass=ilShopController&cmd=firstpage", "", "", "_top"); break; // administration // administration case "administration": $selection->setListTitle($lng->txt("administration")); $selection->setId("dd_adm"); $selection->setAsynch(true); $selection->setAsynchUrl("ilias.php?baseClass=ilAdministrationGUI&cmd=getDropDown&cmdMode=asynch"); //$this->renderEntry($a_tpl, "administration", // $lng->txt("administration"), // $this->getScriptTarget("ilias.php?baseClass=ilAdministrationGUI"), // $this->target); break; } // $selection->setTriggerEvent("mouseover"); // $selection->setAutoHide(true); // bs-patch start global $ilUser; $a_tpl->setVariable("TXT_ADMINISTRATION", $lng->txt("administration")); $a_tpl->parseCurrentBlock(); return; // bs-patch end $html = $selection->getHTML(); $a_tpl->setVariable($id_up . "_DROP_DOWN", $html); $a_tpl->parseCurrentBlock(); }
/** * sync course status from lp * * as lp data is not deleted on course exit new members may already have lp completed * * @param int $a_member_id */ public function checkLPStatusSync($a_member_id) { // #11113 include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && $this->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once "Services/Tracking/classes/class.ilLPStatus.php"; $has_completed = ilLPStatus::_hasUserCompleted($this->getId(), $a_member_id); $this->getMembersObject()->updatePassed($a_member_id, $has_completed, false, true); } }
function __getNextClass() { global $ilAccess, $ilUser; // #9857 if (!ilObjUserTracking::_enabledLearningProgress()) { return; } if (strlen($next_class = $this->ctrl->getNextClass())) { if ($this->getMode() == LP_MODE_PERSONAL_DESKTOP) { $_SESSION['il_lp_history'] = $next_class; } return $next_class; } switch ($this->getMode()) { case LP_MODE_ADMINISTRATION: return 'illplistofobjectsgui'; case LP_MODE_REPOSITORY: if (!$this->anonymized and !$this->isObjectAnonymized() and $ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) { return 'illplistofobjectsgui'; } return 'illplistofprogressgui'; case LP_MODE_PERSONAL_DESKTOP: include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; $has_edit = ilObjUserTracking::_hasLearningProgressOtherUsers(); $has_personal = ilObjUserTracking::_hasLearningProgressLearner(); if ($has_edit || $has_personal) { // default $tgt = null; if ($has_edit) { $tgt = 'illplistofobjectsgui'; } else { if ($has_personal) { $tgt = 'illplistofprogressgui'; } } // validate session switch ($_SESSION['il_lp_history']) { case 'illplistofobjectsgui': if (!$has_edit) { $_SESSION['il_lp_history'] = null; } break; case 'illplistofprogressgui': if (!$has_personal) { $_SESSION['il_lp_history'] = null; } break; } if ($_SESSION['il_lp_history']) { return $_SESSION['il_lp_history']; } else { if ($tgt) { return $tgt; } } } // should not happen ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI"); case LP_MODE_USER_FOLDER: if (ilObjUserTracking::_enabledUserRelatedData()) { return 'illplistofprogressgui'; } } }
function learningProgressObject() { global $rbacsystem, $tpl; // deprecated JF 27 May 2013 exit; if (!$rbacsystem->checkAccess("read", $this->object->getRefId()) || !ilObjUserTracking::_enabledLearningProgress() || !ilObjUserTracking::_enabledUserRelatedData()) { $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE); } include_once "Services/User/classes/class.ilUserLPTableGUI.php"; $tbl = new ilUserLPTableGUI($this, "learningProgress", $this->object->getRefId()); $tpl->setContent($tbl->getHTML()); }
protected function initAttendanceList() { include_once './Modules/Course/classes/class.ilCourseParticipants.php'; $members_obj = ilCourseParticipants::_getInstanceByObjId($this->object->getId()); include_once './Modules/Course/classes/class.ilCourseWaitingList.php'; $waiting_list = new ilCourseWaitingList($this->object->getId()); include_once 'Services/Membership/classes/class.ilAttendanceList.php'; $list = new ilAttendanceList($this, $members_obj, $waiting_list); $list->setId('crsmemlst'); $list->setTitle($this->lng->txt('crs_members_print_title'), $this->lng->txt('obj_crs') . ': ' . $this->object->getTitle()); include_once './Services/Tracking/classes/class.ilObjUserTracking.php'; $this->show_tracking = (ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData()); if ($this->show_tracking) { include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->object->getId()); $this->show_tracking = $olp->isActive(); } if ($this->show_tracking) { $list->addPreset('progress', $this->lng->txt('learning_progress'), true); } include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; $privacy = ilPrivacySettings::_getInstance(); if ($privacy->enabledCourseAccessTimes()) { $list->addPreset('access', $this->lng->txt('last_access'), true); } $list->addPreset('status', $this->lng->txt('crs_status'), true); $list->addPreset('passed', $this->lng->txt('crs_passed'), true); return $list; }
/** * sync course status from lp * * as lp data is not deleted on course exit new members may already have lp completed * * @param int $a_member_id */ public function checkLPStatusSync($a_member_id) { // #11113 include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && $this->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once "Services/Tracking/classes/class.ilLPStatus.php"; // #13811 - we need to suppress creation if status entry $has_completed = ilLPStatus::_lookupStatus($this->getId(), $a_member_id, false) == ilLPStatus::LP_STATUS_COMPLETED_NUM; $this->getMembersObject()->updatePassed($a_member_id, $has_completed, false, true); } }
/** * Get operators by target type * @param string $a_type * @return type */ public function getOperatorsByTargetType($a_type) { global $objDefinition; switch ($a_type) { case 'crsg': return array('not_member'); } $class = $objDefinition->getClassName($a_type); $location = $objDefinition->getLocation($a_type); $full_class = "ilObj" . $class . "Access"; include_once $location . "/class." . $full_class . ".php"; include_once './Services/AccessControl/interfaces/interface.ilConditionHandling.php'; $reflection = new ReflectionClass($full_class); if (!$reflection->implementsInterface('ilConditionHandling')) { return array(); } $operators = call_user_func(array($full_class, 'getConditionOperators'), $a_type); // Add operator lp include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress()) { // only if object type has lp include_once "Services/Object/classes/class.ilObjectLP.php"; if (ilObjectLP::isSupportedObjectType($a_type)) { array_unshift($operators, self::OPERATOR_LP); } } return $operators; }