/**
  * 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');
     }
 }
Beispiel #17
0
 /**
  * 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&amp;cmd=jumpToWorkspace", "", "", "_top");
             }
             // profile
             $selection->addItem($lng->txt("personal_profile"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;cmd=jumpToProfile", "", "", "_top");
             // skills
             $skmg_set = new ilSetting("skmg");
             if ($skmg_set->get("enable_skmg")) {
                 $selection->addItem($lng->txt("skills"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;cmd=jumpToSkills", "", "", "_top");
             }
             // portfolio
             if ($ilSetting->get('user_portfolios')) {
                 $selection->addItem($lng->txt("portfolio"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;cmd=jumpToPortfolio", "", "", "_top");
             }
             // news
             if ($ilSetting->get("block_activated_news")) {
                 $selection->addItem($lng->txt("news"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;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&amp;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&amp;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&amp;cmd=jumpToContacts', '', '', '_top');
             }
             // private notes
             if (!$this->ilias->getSetting("disable_notes")) {
                 $selection->addItem($lng->txt("notes_and_comments"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;cmd=jumpToNotes", "", "", "_top");
             }
             // bookmarks
             if (!$this->ilias->getSetting("disable_bookmarks")) {
                 $selection->addItem($lng->txt("bookmarks"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;cmd=jumpToBookmarks", "", "", "_top");
             }
             // settings
             $selection->addItem($lng->txt("personal_settings"), "", "ilias.php?baseClass=ilPersonalDesktopGUI&amp;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());
 }
Beispiel #26
0
 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;
 }
Beispiel #27
0
 /**
  * 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;
 }