public function getCurrentMode() { if ($this->checkSCORMPreconditions()) { return ilLPObjSettings::LP_MODE_SCORM; } return parent::getCurrentMode(); }
/** * 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" => ...) */ public static function handleEvent($a_component, $a_event, $a_params) { $obj_id = $a_params['obj_id']; switch ($a_component) { case 'Services/Object': switch ($a_event) { case 'toTrash': include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $olp->handleToTrash(); break; case 'delete': include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $olp->handleDelete(); break; } break; case 'Services/Tree': switch ($a_event) { case 'moveTree': if ($a_params['tree'] == 'tree') { include_once './Services/Object/classes/class.ilObjectLP.php'; ilObjectLP::handleMove($a_params['source_id']); } break; } break; } return true; }
function _showWarning($a_ref_id, $a_usr_id) { global $ilObjDataCache; $obj_id = $ilObjDataCache->lookupObjId($a_ref_id); // if completed no warning include_once './Services/Tracking/classes/class.ilLPStatus.php'; if (ilLPStatus::_hasUserCompleted($obj_id, $a_usr_id)) { return false; } // if editing time reached => show warning $timings =& ilTimingCache::_getTimings($a_ref_id); if ($timings['item']['timing_type'] == ilObjectActivation::TIMINGS_PRESETTING) { if ($timings['item']['changeable'] and $timings['user'][$a_usr_id]['end']) { $end = $timings['user'][$a_usr_id]['end']; } else { $end = $timings['item']['suggestion_end']; } if ($end < time()) { return true; } } include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $collection = $olp->getCollectionInstance(); if ($collection instanceof ilLPCollectionOfRepositoryObjects) { foreach ($collection->getItems() as $item) { if (ilTimingCache::_showWarning($item, $a_usr_id)) { return true; } } } // Really ??? 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" => ...) */ public static function handleEvent($a_component, $a_event, $a_params) { $obj_id = $a_params['obj_id']; switch ($a_component) { case 'Services/Object': switch ($a_event) { case 'toTrash': include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $olp->handleToTrash(); break; case 'delete': // ilRepUtil will raise "delete" even if only reference was deleted! $all_ref = ilObject::_getAllReferences($obj_id); if (!sizeof($all_ref)) { include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($obj_id); $olp->handleDelete(); } break; } break; case 'Services/Tree': switch ($a_event) { case 'moveTree': if ($a_params['tree'] == 'tree') { include_once './Services/Object/classes/class.ilObjectLP.php'; ilObjectLP::handleMove($a_params['source_id']); } break; } break; } return true; }
function __construct($a_mode, $a_ref_id) { parent::__construct($a_mode, $a_ref_id); $this->obj_settings = new ilLPObjSettings($this->getObjId()); include_once './Services/Object/classes/class.ilObjectLP.php'; $this->obj_lp = ilObjectLP::getInstance($this->getObjId()); }
public function getCurrentMode() { if ($this->checkObjectives()) { return ilLPObjSettings::LP_MODE_OBJECTIVES; } return parent::getCurrentMode(); }
/** * 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; } } } }
function ilLPObjSettings($a_obj_id) { global $ilObjDataCache, $ilDB; $this->db = $ilDB; $this->obj_id = $a_obj_id; if (!$this->__read()) { $this->obj_type = $ilObjDataCache->lookupType($this->obj_id); include_once "Services/Object/classes/class.ilObjectLP.php"; $olp = ilObjectLP::getInstance($this->obj_id); $this->obj_mode = $olp->getDefaultMode(); } }
function il2sop() { global $ilUser, $ilias; $this->setOfflineMode("il2sop"); header('Content-Type: text/javascript; charset=UTF-8'); include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; $ob = new ilObjSAHSLearningModule($this->id); $module_version = $ob->getModuleVersion(); $sahs_user = $this->il2sopSahsUser(); $support_mail = ""; //TODO $scorm_version = "1.2"; if ($this->type == "scorm2004") { $scorm_version = "2004"; } $tree = ""; $learning_progress_enabled = 1; include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->obj_id); if ($olp->getCurrentMode() == 0) { $learning_progress_enabled = 0; } $certificate_enabled = 0; $adlact_data = null; $ilias_version = $ilias->getSetting("ilias_version"); if ($this->type == 'scorm2004') { include_once "./Modules/Scorm2004/classes/ilSCORM13Player.php"; $ob2004 = new ilSCORM13Player(); $init_data = $ob2004->getConfigForPlayer(); $resources = json_decode($ob2004->getCPDataInit()); $cmi = $ob2004->getCMIData($ilUser->getID(), $this->obj_id); $max_attempt = $ob2004->get_max_attempts(); $adlact_data = json_decode($ob2004->getADLActDataInit()); //$globalobj_data = $ob2004->readGObjectiveInit(); } else { include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMInitData.php"; $slm_obj =& new ilObjSCORMLearningModule($_GET["ref_id"]); $init_data = ilObjSCORMInitData::getIliasScormVars($slm_obj); $resources = json_decode(ilObjSCORMInitData::getIliasScormResources($this->obj_id)); $tree = json_decode(ilObjSCORMInitData::getIliasScormTree($this->obj_id)); $cmi = json_decode(ilObjSCORMInitData::getIliasScormData($this->obj_id)); $max_attempt = ilObjSCORMInitData::get_max_attempts($this->obj_id); } if ($max_attempt == null) { $max_attempt = 0; } $result = array('client_data' => array($support_mail), 'user_data' => $this->il2sopUserData(), 'lm' => array(ilObject::_lookupTitle($this->obj_id), ilObject::_lookupDescription($this->obj_id), $scorm_version, 1, $init_data, $resources, $tree, $module_version, "", $learning_progress_enabled, $certificate_enabled, $max_attempt, $adlact_data, $ilias_version), 'sahs_user' => $sahs_user, 'cmi' => $cmi); print json_encode($result); }
function markedLearningStatusForExportSelected($a_scos) { global $lng; include_once 'Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->getObjId()); $collection = $olp->getCollectionInstance(); foreach ($a_scos as $sco_id => $value) { if ($collection && $collection->isAssignedEntry($sco_id)) { $a_scos[$sco_id] = $lng->txt('yes'); } else { $a_scos[$sco_id] = $lng->txt('no'); } } return $a_scos; }
function _getStatusInfo($a_obj_id, $a_include_tlt_data = false) { global $ilDB; $status_info = array(); include_once "Services/Object/classes/class.ilObjectLP.php"; $olp = ilObjectLP::getInstance($a_obj_id); $collection = $olp->getCollectionInstance(); if ($collection) { $status_info["items"] = $collection->getItems($a_obj_id); include_once './Services/MetaData/classes/class.ilMDEducational.php'; foreach ($status_info["items"] as $item_id) { $status_info["in_progress"][$item_id] = array(); $status_info["completed"][$item_id] = array(); $status_info["tlt"][$item_id] = ilMDEducational::_getTypicalLearningTimeSeconds($a_obj_id, $item_id); } $ref_ids = ilObject::_getAllReferences($a_obj_id); $ref_id = end($ref_ids); $possible_items = $collection->getPossibleItems($ref_id); $chapter_ids = array_intersect(array_keys($possible_items), $status_info["items"]); // fix order (adapt from possible items) $status_info["items"] = $chapter_ids; if ($chapter_ids) { foreach ($chapter_ids as $item_id) { $status_info["item_titles"][$item_id] = $possible_items[$item_id]["title"]; } $set = $ilDB->query("SELECT obj_id,usr_id,spent_seconds" . " FROM lm_read_event" . " WHERE " . $ilDB->in("obj_id", $chapter_ids, "", "integer")); while ($row = $ilDB->fetchAssoc($set)) { if ($row["spent_seconds"] < $status_info["tlt"][$row["obj_id"]]) { $status_info["in_progress"][$row["obj_id"]][] = $row["usr_id"]; } else { $status_info["completed"][$row["obj_id"]][] = $row["usr_id"]; } if ($a_include_tlt_data) { $status_info["tlt_users"][$row["obj_id"]][$row["usr_id"]] = $row["spent_seconds"]; } } } } if (!$a_include_tlt_data) { unset($status_info["tlt"]); } return $status_info; }
protected function gatherCourseLPData() { global $tree, $ilDB; $count = 0; // process all courses $all_courses = array_keys(ilObject::_getObjectsByType("crs")); if ($all_courses) { // gather objects in trash $trashed_objects = $tree->getSavedNodeObjIds($all_courses); include_once 'Services/Object/classes/class.ilObjectLP.php'; include_once "Modules/Course/classes/class.ilCourseParticipants.php"; include_once "Services/Tracking/classes/class.ilLPStatusWrapper.php"; foreach ($all_courses as $crs_id) { // trashed objects will not change if (!in_array($crs_id, $trashed_objects)) { // only if LP is active $olp = ilObjectLP::getInstance($crs_id); if (!$olp->isActive()) { continue; } // only save once per day $ilDB->manipulate("DELETE FROM obj_lp_stat WHERE" . " obj_id = " . $ilDB->quote($crs_id, "integer") . " AND fulldate = " . $ilDB->quote(date("Ymd", $this->date), "integer")); $members = new ilCourseParticipants($crs_id); $members = $members->getMembers(); $in_progress = count(ilLPStatusWrapper::_lookupInProgressForObject($crs_id, $members)); $completed = count(ilLPStatusWrapper::_lookupCompletedForObject($crs_id, $members)); $failed = count(ilLPStatusWrapper::_lookupFailedForObject($crs_id, $members)); // calculate with other values - there is not direct method $not_attempted = count($members) - $in_progress - $completed - $failed; $set = array("type" => array("text", "crs"), "obj_id" => array("integer", $crs_id), "yyyy" => array("integer", date("Y", $this->date)), "mm" => array("integer", date("m", $this->date)), "dd" => array("integer", date("d", $this->date)), "fulldate" => array("integer", date("Ymd", $this->date)), "mem_cnt" => array("integer", count($members)), "in_progress" => array("integer", $in_progress), "completed" => array("integer", $completed), "failed" => array("integer", $failed), "not_attempted" => array("integer", $not_attempted)); $ilDB->insert("obj_lp_stat", $set); $count++; } } } return $count; }
/** * Constructor */ function __construct($a_parent_obj, $a_parent_cmd, $a_ref_id, $a_print_mode = false) { global $ilCtrl, $lng, $ilAccess, $lng; $this->setId("trsmy"); $this->ref_id = $a_ref_id; $this->obj_id = ilObject::_lookupObjId($a_ref_id); $this->is_root = $a_ref_id == ROOT_FOLDER_ID; if (!$this->is_root) { include_once './Services/Object/classes/class.ilObjectLP.php'; $this->olp = ilObjectLP::getInstance($this->obj_id); } parent::__construct($a_parent_obj, $a_parent_cmd); if ($a_print_mode) { $this->setPrintMode(true); } $this->parseTitle($this->obj_id, "trac_summary"); $this->setLimit(9999); $this->setShowTemplates(true); $this->setExportFormats(array(self::EXPORT_CSV, self::EXPORT_EXCEL)); $this->addColumn($this->lng->txt("title"), "title"); $this->setDefaultOrderField("title"); $labels = $this->getSelectableColumns(); foreach ($this->getSelectedColumns() as $c) { $this->addColumn($labels[$c]["txt"], $c); } if ($this->is_root) { $this->addColumn($this->lng->txt("path")); $this->addColumn($this->lng->txt("action")); } $this->initFilter(); // $this->setExternalSorting(true); $this->setEnableHeader(true); $this->setFormAction($ilCtrl->getFormActionByClass(get_class($this))); $this->setRowTemplate("tpl.trac_summary_row.html", "Services/Tracking"); $this->getItems($a_parent_obj->getObjId(), $a_ref_id); }
protected function parseTableGUIItem($a_id, array $a_item) { $table_item = $a_item; $table_item['id'] = $a_id; $table_item['status'] = $this->isAssignedEntry($a_id); $olp = ilObjectLP::getInstance($a_item['obj_id']); $table_item['mode_id'] = $olp->getCurrentMode(); $table_item['mode'] = $olp->getModeText($table_item['mode_id']); $table_item['anonymized'] = $olp->isAnonymized(); return $table_item; }
public function removeTestResults(ilTestParticipantData $participantData) { if (count($participantData->getAnonymousActiveIds())) { $this->removeTestResultsByActiveIds($participantData->getAnonymousActiveIds()); } if (count($participantData->getUserIds())) { /* @var ilTestLP $testLP */ require_once 'Services/Object/classes/class.ilObjectLP.php'; $testLP = ilObjectLP::getInstance($this->getId()); $testLP->resetLPDataForUserIds($participantData->getUserIds(), false); } if (count($participantData->getActiveIds())) { $this->removeTestActives($participantData->getActiveIds()); } }
function getStatus($a_packageId, $a_user_id, $auto_last_visited, $scormType = "1.2") { global $ilDB; include_once './Services/Tracking/classes/class.ilLPStatus.php'; $oldStatus = ilLPStatus::_lookupStatus($a_packageId, $a_user_id); $status['saved_global_status'] = (int) $oldStatus; include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_packageId); $status['lp_mode'] = $olp->getCurrentMode(); $collection = $olp->getCollectionInstance(); if ($collection) { $status['scos'] = $collection->getItems(); } else { $status['scos'] = array(); } $status['hash'] = ilObjSCORMInitData::setHash($a_packageId, $a_user_id); $status['p'] = $a_user_id; $status['last_visited'] = null; $status['total_time_sec'] = 0; $val_set = $ilDB->queryF('SELECT last_visited, sco_total_time_sec, total_time_sec FROM sahs_user WHERE obj_id = %s AND user_id = %s', array('integer', 'integer'), array($a_packageId, $a_user_id)); $val_rec = $ilDB->fetchAssoc($val_set); if ($auto_last_visited) { $status['last_visited'] = $val_rec["last_visited"]; } if ($val_rec["total_time_sec"] == null) { if ($val_rec["sco_total_time_sec"] == null) { //fall back for old ILIAS-Versions if ($scormType == "2004") { include_once './Modules/Scorm2004/classes/class.ilSCORM2004Tracking.php'; $status['total_time_sec'] = (int) ilSCORM2004Tracking::getSumTotalTimeSecondsFromScos($a_packageId, $a_user_id, true); } } else { $status['total_time_sec'] = (int) $val_rec["sco_total_time_sec"]; } } else { $status['total_time_sec'] = (int) $val_rec["total_time_sec"]; } return $status; }
function __initDetails($a_details_id) { global $ilObjDataCache; if (!$a_details_id) { $a_details_id = $this->getRefId(); } if ($a_details_id) { $_GET['details_id'] = $a_details_id; $this->details_id = $a_details_id; $this->details_obj_id = $ilObjDataCache->lookupObjId($this->details_id); $this->details_type = $ilObjDataCache->lookupType($this->details_obj_id); include_once 'Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->details_obj_id); $this->details_mode = $olp->getCurrentMode(); } }
function importSuccess($a_file) { global $ilDB, $ilUser; include_once "./Services/Tracking/classes/class.ilLPStatus.php"; $scos = array(); //get all SCO's of this object ONLY RELEVANT! include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->getId()); $collection = $olp->getCollectionInstance(); if ($collection) { $scos = $collection->getItems(); } $fhandle = fopen($a_file, "r"); $obj_id = $this->getID(); $fields = fgetcsv($fhandle, pow(2, 16), ';'); // $users = array(); while (($csv_rows = fgetcsv($fhandle, pow(2, 16), ";")) !== FALSE) { $data = array_combine($fields, $csv_rows); //no check the format - sufficient to import users if ($data["Login"]) { $user_id = $this->get_user_id($data["Login"]); } if ($data["login"]) { $user_id = $this->get_user_id($data["login"]); } //add mail in future if ($data["user"] && is_int($data["user"])) { $user_id = $data["user"]; } if ($user_id > 0) { $last_access = ilUtil::now(); if ($data['Date']) { $date_ex = explode('.', $data['Date']); $last_access = implode('-', array($date_ex[2], $date_ex[1], $date_ex[0])); } if ($data['LastAccess']) { $last_access = $data['LastAccess']; } $status = ilLPStatus::LP_STATUS_COMPLETED_NUM; // $users[] = $user_id; if ($data["Status"]) { if (is_int($data["Status"])) { $status = $data["Status"]; } else { if ($data["Status"] == ilLPStatus::LP_STATUS_NOT_ATTEMPTED) { $status = ilLPStatus::LP_STATUS_NOT_ATTEMPTED_NUM; } else { if ($data["Status"] == ilLPStatus::LP_STATUS_IN_PROGRESS) { $status = ilLPStatus::LP_STATUS_IN_PROGRESS_NUM; } else { if ($data["Status"] == ilLPStatus::LP_STATUS_FAILED) { $status = ilLPStatus::LP_STATUS_FAILED_NUM; } } } } } $attempts = null; if ($data["Attempts"]) { $attempts = $data["Attempts"]; } $percentage_completed = 0; if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) { $percentage_completed = 100; } if ($data['percentageCompletedSCOs']) { $percentage_completed = $data['percentageCompletedSCOs']; } $sco_total_time_sec = null; if ($data['SumTotal_timeSeconds']) { $sco_total_time_sec = $data['SumTotal_timeSeconds']; } $this->importSuccessForSahsUser($user_id, $last_access, $status, $attempts, $percentage_completed, $sco_total_time_sec); if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) { foreach ($scos as $sco_id) { $statement = $ilDB->queryF(' SELECT * FROM scorm_tracking WHERE user_id = %s AND sco_id = %s AND lvalue = %s AND obj_id = %s', array('integer', 'integer', 'text', 'integer'), array($user_id, $sco_id, 'cmi.core.lesson_status', $obj_id)); if ($ilDB->numRows($statement) > 0) { $ilDB->update('scorm_tracking', array('rvalue' => array('clob', 'completed'), 'c_timestamp' => array('timestamp', $last_access)), array('user_id' => array('integer', $user_id), 'sco_id' => array('integer', $sco_id), 'lvalue' => array('text', 'cmi.core.lesson_status'), 'obj_id' => array('integer', $obj_id))); } else { $ilDB->insert('scorm_tracking', array('obj_id' => array('integer', $obj_id), 'user_id' => array('integer', $user_id), 'sco_id' => array('integer', $sco_id), 'lvalue' => array('text', 'cmi.core.lesson_status'), 'rvalue' => array('clob', 'completed'), 'c_timestamp' => array('timestamp', $last_access))); } } } } else { //echo "Warning! User $csv_rows[0] does not exist in ILIAS. Data for this user was skipped.\n"; } } include_once "./Services/Tracking/classes/class.ilLPStatusWrapper.php"; ilLPStatusWrapper::_refreshStatus($this->getId()); // <4.2.6: foreach ($users as $user_id) {ilLPStatusWrapper::_updateStatus($obj_id, $user_id);} return 0; }
/** * Deletes the selected user data for the test object * * Deletes the selected user data for the test object * * @access public */ function confirmDeleteSelectedUserDataObject() { global $ilDB, $lng; require_once 'Modules/Test/classes/class.ilTestParticipantData.php'; $participantData = new ilTestParticipantData($ilDB, $lng); if ($this->object->getFixedParticipants()) { $participantData->setUserIds($_POST["chbUser"]); } else { $participantData->setActiveIds($_POST["chbUser"]); } $participantData->load($this->object->getTestId()); /* @var ilTestLP $testLP */ require_once 'Services/Object/classes/class.ilObjectLP.php'; $testLP = ilObjectLP::getInstance($this->object->getId()); $testLP->resetLPDataForUserIds($participantData->getUserIds(), false); $this->object->removeTestActives($participantData->getActiveIds()); #$this->object->removeSelectedTestResults($active_ids); // Update lp status #include_once './Services/Tracking/classes/class.ilLPStatusWrapper.php'; #ilLPStatusWrapper::_refreshStatus($this->object->getId()); ilUtil::sendSuccess($this->lng->txt("tst_selected_user_data_deleted"), true); $this->ctrl->redirect($this, "participants"); }
/** * Determine status * * @param integer object id * @param integer user id * @param object object (optional depends on object type) * @return integer status */ function determineStatus($a_obj_id, $a_user_id, $a_obj = null) { global $ilObjDataCache; $status['completed'] = true; $status['failed'] = false; $status['in_progress'] = false; switch ($ilObjDataCache->lookupType($a_obj_id)) { case "crs": case "fold": case "grp": include_once "./Services/Tracking/classes/class.ilChangeEvent.php"; if (ilChangeEvent::hasAccessed($a_obj_id, $a_user_id)) { $status['in_progress'] = true; } include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $collection = $olp->getCollectionInstance(); if ($collection) { $grouped_items = $collection->getGroupedItemsForLPStatus(); } if (!sizeof($grouped_items)) { // #11513 - empty collections cannot be completed $status['completed'] = false; } else { foreach ($grouped_items as $grouping_id => $grouping) { $isGrouping = $grouping_id ? true : false; $status = self::determineGroupingStatus($status, $grouping, $a_user_id, $isGrouping); } } if ($status['completed']) { return self::LP_STATUS_COMPLETED_NUM; } if ($status['failed']) { return self::LP_STATUS_FAILED_NUM; } if ($status['in_progress']) { return self::LP_STATUS_IN_PROGRESS_NUM; } break; } return self::LP_STATUS_NOT_ATTEMPTED_NUM; }
protected function checkLPIcon($a_id) { global $ilUser; // do it once for all chapters if ($this->lp_cache[$this->lm_obj->getId()] === null) { $this->lp_cache[$this->lm_obj->getId()] = false; include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php'; if (ilLearningProgressAccess::checkAccess($this->lm_obj->getRefId())) { $info = null; include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->lm_obj->getId()); if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_MANUAL || $olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_TLT) { include_once "Services/Tracking/classes/class.ilLPStatusFactory.php"; $class = ilLPStatusFactory::_getClassById($this->lm_obj->getId(), $olp->getCurrentMode()); $info = $class::_getStatusInfo($this->lm_obj->getId()); } // parse collection items if (is_array($info["items"])) { foreach ($info["items"] as $item_id) { $status = ilLPStatus::LP_STATUS_NOT_ATTEMPTED_NUM; if (is_array($info["in_progress"][$item_id]) && in_array($ilUser->getId(), $info["in_progress"][$item_id])) { $status = ilLPStatus::LP_STATUS_IN_PROGRESS_NUM; } else { if (is_array($info["completed"][$item_id]) && in_array($ilUser->getId(), $info["completed"][$item_id])) { $status = ilLPStatus::LP_STATUS_COMPLETED_NUM; } } $this->lp_cache[$this->lm_obj->getId()][$item_id] = $status; } } } include_once './Services/Tracking/classes/class.ilLearningProgressBaseGUI.php'; } if (is_array($this->lp_cache[$this->lm_obj->getId()]) && isset($this->lp_cache[$this->lm_obj->getId()][$a_id])) { return ilLearningProgressBaseGUI::_getImagePathForStatus($this->lp_cache[$this->lm_obj->getId()][$a_id]); } }
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; }
function _getInstance($a_obj_id, $a_mode = NULL) { if ($a_mode === NULL) { include_once 'Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $a_mode = $olp->getCurrentMode(); } switch ($a_mode) { case ilLPObjSettings::LP_MODE_VISITS: include_once self::PATH . 'class.ilLPStatusVisits.php'; return new ilLPStatusVisits($a_obj_id); case ilLPObjSettings::LP_MODE_COLLECTION: include_once self::PATH . 'class.ilLPStatusCollection.php'; return new ilLPStatusCollection($a_obj_id); case ilLPObjSettings::LP_MODE_TLT: include_once self::PATH . 'class.ilLPStatusTypicalLearningTime.php'; return new ilLPStatusTypicalLearningTime($a_obj_id); case ilLPObjSettings::LP_MODE_SCORM: include_once self::PATH . 'class.ilLPStatusSCORM.php'; return new ilLPStatusSCORM($a_obj_id); case ilLPObjSettings::LP_MODE_TEST_FINISHED: include_once self::PATH . 'class.ilLPStatusTestFinished.php'; return new ilLPStatusTestFinished($a_obj_id); case ilLPObjSettings::LP_MODE_TEST_PASSED: include_once self::PATH . 'class.ilLPStatusTestPassed.php'; return new ilLPStatusTestPassed($a_obj_id); case ilLPObjSettings::LP_MODE_MANUAL: include_once self::PATH . 'class.ilLPStatusManual.php'; return new ilLPStatusManual($a_obj_id); case ilLPObjSettings::LP_MODE_MANUAL_BY_TUTOR: include_once self::PATH . 'class.ilLPStatusManualByTutor.php'; return new ilLPStatusManualByTutor($a_obj_id); case ilLPObjSettings::LP_MODE_EXERCISE_RETURNED: include_once self::PATH . 'class.ilLPStatusExerciseReturned.php'; return new ilLPStatusExerciseReturned($a_obj_id); case ilLPObjSettings::LP_MODE_OBJECTIVES: include_once self::PATH . 'class.ilLPStatusObjectives.php'; return new ilLPStatusObjectives($a_obj_id); case ilLPObjSettings::LP_MODE_SCORM_PACKAGE: include_once self::PATH . 'class.ilLPStatusSCORMPackage.php'; return new ilLPStatusSCORMPackage($a_obj_id); case ilLPObjSettings::LP_MODE_EVENT: include_once self::PATH . 'class.ilLPStatusEvent.php'; return new ilLPStatusEvent($a_obj_id); case ilLPObjSettings::LP_MODE_PLUGIN: include_once self::PATH . 'class.ilLPStatusPlugin.php'; return new ilLPStatusPlugin($a_obj_id); case ilLPObjSettings::LP_MODE_COLLECTION_TLT: include_once self::PATH . 'class.ilLPStatusCollectionTLT.php'; return new ilLPStatusCollectionTLT($a_obj_id); case ilLPObjSettings::LP_MODE_COLLECTION_MANUAL: include_once self::PATH . 'class.ilLPStatusCollectionManual.php'; return new ilLPStatusCollectionManual($a_obj_id); case ilLPObjSettings::LP_MODE_QUESTIONS: include_once self::PATH . 'class.ilLPStatusQuestions.php'; return new ilLPStatusQuestions($a_obj_id); case ilLPObjSettings::LP_MODE_DEACTIVATED: include_once 'Services/Tracking/classes/class.ilLPStatus.php'; return new ilLPStatus($a_obj_id); // START PATCH RUBRIC CPKN 2015 // START PATCH RUBRIC CPKN 2015 case ilLPObjSettings::LP_MODE_RUBRIC: include_once self::PATH . 'class.ilLPStatusRubric.php'; return new ilLPStatusRubric($a_obj_id); // END PATCH RUBRIC CPKN 2015 // END PATCH RUBRIC CPKN 2015 case ilLPObjSettings::LP_MODE_UNDEFINED: include_once 'Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $mode = $olp->getCurrentMode(); if ($mode != ilLPObjSettings::LP_MODE_UNDEFINED) { return self::_getInstance($a_obj_id, $mode); } // fallthrough // fallthrough default: echo "ilLPStatusFactory: unknown type " . $a_mode; exit; } }
/** * Get ilObjectPlugin for object id * * @param int $a_obj_id * @return ilObjectPlugin */ protected static function initPluginObj($a_obj_id) { include_once "Services/Object/classes/class.ilObjectLP.php"; $olp = ilObjectLP::getInstance($a_obj_id); return $olp->getPluginInstance(); }
/** * Determine percentage * * @param integer object id * @param integer user id * @param object object (optional depends on object type) * @return integer percentage */ function determinePercentage($a_obj_id, $a_user_id, $a_obj = null) { // Which sco's determine the status include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $collection = $olp->getCollectionInstance(); if ($collection) { $scos = $collection->getItems(); $reqscos = count($scos); include_once './Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php'; $subtype = ilObjSAHSLearningModule::_lookupSubType($a_obj_id); if ($subtype != "scorm2004") { include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php"; $compl = ilObjSCORMTracking::_countCompleted($scos, $a_obj_id, $a_user_id); } else { include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Tracking.php"; $compl = ilSCORM2004Tracking::_countCompleted($scos, $a_obj_id, $a_user_id, true); } } if ($reqscos > 0) { $per = min(100, 100 / $reqscos * $compl); } else { $per = 100; } return $per; }
/** * get lm menu html */ function setilLMMenu($a_offline = false, $a_export_format = "", $a_active = "content", $a_use_global_tabs = false, $a_as_subtabs = false, $a_cur_page = 0) { global $ilCtrl, $ilUser, $ilAccess, $ilTabs, $rbacsystem, $ilPluginAdmin; if ($a_as_subtabs) { $addcmd = "addSubTabTarget"; $getcmd = "getSubTabHTML"; } else { $addcmd = "addTarget"; $getcmd = "getHTML"; } $active[$a_active] = true; if (!$this->object->isActiveLMMenu()) { return ""; } if ($a_use_global_tabs) { $tabs_gui = $ilTabs; } else { $tabs_gui = new ilTabsGUI(); } // Determine whether the view of a learning resource should // be shown in the frameset of ilias, or in a separate window. //$showViewInFrameset = $this->ilias->ini->readVariable("layout","view_target") == "frame"; $showViewInFrameset = true; if ($showViewInFrameset && !$a_offline) { $buttonTarget = ilFrameTargetInfo::_getFrame("MainContent"); } else { $buttonTarget = "_top"; } if ($a_export_format == "scorm") { $buttonTarget = ""; } include_once "./Services/Payment/classes/class.ilPaymentObject.php"; $requires_purchase_to_access = ilPaymentObject::_requiresPurchaseToAccess((int) $_GET['ref_id']); // content if (!$a_offline && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) { $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]); $tabs_gui->{$addcmd}("content", $ilCtrl->getLinkTargetByClass("illmpresentationgui", "layout"), "", "", $buttonTarget, $active["content"]); } // table of contents if (!$requires_purchase_to_access && $this->object->isActiveTOC() && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) { if (!$a_offline) { $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]); $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showTableOfContents"); } else { $link = "./table_of_contents.html"; } $tabs_gui->{$addcmd}("cont_toc", $link, "", "", $buttonTarget, $active["toc"]); } // print view if (!$requires_purchase_to_access && $this->object->isActivePrintView() && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) { if (!$a_offline) { $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]); $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showPrintViewSelection"); $tabs_gui->{$addcmd}("cont_print_view", $link, "", "", $buttonTarget, $active["print"]); } } // download if (!$requires_purchase_to_access && $ilUser->getId() == ANONYMOUS_USER_ID) { $is_public = $this->object->isActiveDownloadsPublic(); } else { if (!$requires_purchase_to_access) { $is_public = true; } } if (!$requires_purchase_to_access && $this->object->isActiveDownloads() && !$a_offline && $is_public && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) { $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]); $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showDownloadList"); $tabs_gui->{$addcmd}("download", $link, "", "", $buttonTarget, $active["download"]); } // info button if ($a_export_format != "scorm" && !$a_offline) { if (!$a_offline) { $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]); $link = $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "ilinfoscreengui"), "showSummary"); } else { $link = "./info.html"; } $tabs_gui->{$addcmd}($requires_purchase_to_access ? 'buy' : 'info_short', $link, "", "", $buttonTarget, $active["info"]); } include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php'; if (ilLearningProgressAccess::checkAccess($_GET["ref_id"])) { include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($this->object->getId()); if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_MANUAL) { $tabs_gui->{$addcmd}("learning_progress", $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "illearningprogressgui"), "editmanual"), "", "", $buttonTarget, $active["learning_progress"]); } else { if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_TLT) { $tabs_gui->{$addcmd}("learning_progress", $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "illearningprogressgui"), "showtlt"), "", "", $buttonTarget, $active["learning_progress"]); } } } // edit learning module if (!$a_offline && $a_cur_page > 0) { if ($rbacsystem->checkAccess("write", $_GET["ref_id"])) { //$page_id = $this->getCurrentPageId(); $page_id = $a_cur_page; $tabs_gui->{$addcmd}("edit_page", ILIAS_HTTP_PATH . "/ilias.php?baseClass=ilLMEditorGUI&ref_id=" . $_GET["ref_id"] . "&obj_id=" . $page_id . "&to_page=1", "", "", $buttonTarget, $active["edit_page"]); } } if (!$requires_purchase_to_access) { // get user defined menu entries $this->__initLMMenuEditor(); $entries = $this->lmme_obj->getMenuEntries(true); if (count($entries) > 0 && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) { foreach ($entries as $entry) { // build goto-link for internal resources if ($entry["type"] == "intern") { $entry["link"] = ILIAS_HTTP_PATH . "/goto.php?target=" . $entry["link"]; } // add http:// prefix if not exist if (!strstr($entry["link"], '://') && !strstr($entry["link"], 'mailto:')) { $entry["link"] = "http://" . $entry["link"]; } if (!strstr($entry["link"], 'mailto:')) { $entry["link"] = ilUtil::appendUrlParameterString($entry["link"], "ref_id=" . $this->ref_id . "&structure_id=" . $this->obj_id); } $tabs_gui->{$addcmd}($entry["title"], $entry["link"], "", "", "_blank", "", true); } } } // user interface hook [uihk] $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_SERVICE, "UIComponent", "uihk"); $plugin_html = false; foreach ($pl_names as $pl) { $ui_plugin = ilPluginAdmin::getPluginObject(IL_COMP_SERVICE, "UIComponent", "uihk", $pl); $gui_class = $ui_plugin->getUIClassInstance(); $resp = $gui_class->modifyGUI("Modules/LearningModule", "lm_menu_tabs", array("lm_menu_tabs" => $tabs_gui)); } return $tabs_gui->{$getcmd}(); }
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 initEditUserForm($a_user_id, $a_obj_id, $a_cancel = null) { global $lng, $ilCtrl; include_once 'Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $lp_mode = $olp->getCurrentMode(); include_once './Services/Form/classes/class.ilPropertyFormGUI.php'; $form = new ilPropertyFormGUI(); $form->setFormAction($ilCtrl->getFormAction($this, "updateUser")); $form->setTitle($lng->txt("edit") . ": " . ilObject::_lookupTitle($a_obj_id)); $form->setDescription($lng->txt('trac_mode') . ": " . $olp->getModeText($lp_mode)); include_once "Services/User/classes/class.ilUserUtil.php"; $user = new ilNonEditableValueGUI($lng->txt("user"), null, true); $user->setValue(ilUserUtil::getNamePresentation($a_user_id, true)); $form->addItem($user); include_once 'Services/Tracking/classes/class.ilLPMarks.php'; $marks = new ilLPMarks($a_obj_id, $a_user_id); $type = ilObject::_lookupType($a_obj_id); if ($type != 'lm') { $mark = new ilTextInputGUI($lng->txt("trac_mark"), "mark"); $mark->setValue($marks->getMark()); $mark->setMaxLength(32); $form->addItem($mark); } $comm = new ilTextInputGUI($lng->txt("trac_comment"), "comment"); $comm->setValue($marks->getComment()); $form->addItem($comm); if ($lp_mode == ilLPObjSettings::LP_MODE_MANUAL || $lp_mode == ilLPObjSettings::LP_MODE_MANUAL_BY_TUTOR) { include_once "./Services/Tracking/classes/class.ilLPStatus.php"; $completed = ilLPStatus::_lookupStatus($a_obj_id, $a_user_id); $status = new ilCheckboxInputGUI($lng->txt('trac_completed'), "completed"); $status->setChecked($completed == ilLPStatus::LP_STATUS_COMPLETED_NUM); $form->addItem($status); } $form->addCommandButton("updateUser", $lng->txt('save')); if ($a_cancel) { $form->addCommandButton($a_cancel, $lng->txt('cancel')); } return $form; }
protected function getSelectableUserColumns($a_in_course = false, $a_in_group = false) { global $lng, $ilSetting; $cols = $privacy_fields = array(); include_once "./Services/User/classes/class.ilUserProfile.php"; $up = new ilUserProfile(); $up->skipGroup("preferences"); $up->skipGroup("settings"); $up->skipGroup("interests"); $ufs = $up->getStandardFields(); // default fields $cols["login"] = array("txt" => $lng->txt("login"), "default" => true); if (!$this->anonymized) { $cols["firstname"] = array("txt" => $lng->txt("firstname"), "default" => true); $cols["lastname"] = array("txt" => $lng->txt("lastname"), "default" => true); } // show only if extended data was activated in lp settings include_once 'Services/Tracking/classes/class.ilObjUserTracking.php'; $tracking = new ilObjUserTracking(); if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS)) { $cols["first_access"] = array("txt" => $lng->txt("trac_first_access"), "default" => true); $cols["last_access"] = array("txt" => $lng->txt("trac_last_access"), "default" => true); } if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_READ_COUNT)) { $cols["read_count"] = array("txt" => $lng->txt("trac_read_count"), "default" => true); } if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS)) { $cols["spent_seconds"] = array("txt" => $lng->txt("trac_spent_seconds"), "default" => true); } if ($this->isPercentageAvailable($this->obj_id)) { $cols["percentage"] = array("txt" => $lng->txt("trac_percentage"), "default" => true); } // do not show status if learning progress is deactivated $olp = ilObjectLP::getInstance($this->obj_id); if ($olp->isActive()) { $cols["status"] = array("txt" => $lng->txt("trac_status"), "default" => true); $cols['status_changed'] = array('txt' => $lng->txt('trac_status_changed'), 'default' => false); } if ($this->type != "lm") { $cols["mark"] = array("txt" => $lng->txt("trac_mark"), "default" => true); } $cols["u_comment"] = array("txt" => $lng->txt("trac_comment"), "default" => false); $cols["create_date"] = array("txt" => $lng->txt("create_date"), "default" => false); $cols["language"] = array("txt" => $lng->txt("language"), "default" => false); // add user data only if object is [part of] course if (!$this->anonymized && ($a_in_course || $a_in_group)) { // only show if export permission is granted include_once 'Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; if (ilPrivacySettings::_getInstance()->checkExportAccess($this->ref_id)) { // other user profile fields foreach ($ufs as $f => $fd) { if (!isset($cols[$f]) && $f != "username" && !$fd["lists_hide"]) { if ($a_in_course && !($fd["course_export_fix_value"] || $ilSetting->get("usr_settings_course_export_" . $f))) { continue; } if ($a_in_group && !($fd["group_export_fix_value"] || $ilSetting->get("usr_settings_group_export_" . $f))) { continue; } $cols[$f] = array("txt" => $lng->txt($f), "default" => false); $privacy_fields[] = $f; } } // additional defined user data fields include_once './Services/User/classes/class.ilUserDefinedFields.php'; $user_defined_fields = ilUserDefinedFields::_getInstance(); if ($a_in_course) { $user_defined_fields = $user_defined_fields->getCourseExportableFields(); } else { $user_defined_fields = $user_defined_fields->getGroupExportableFields(); } foreach ($user_defined_fields as $definition) { if ($definition["field_type"] != UDF_TYPE_WYSIWYG) { $f = "udf_" . $definition["field_id"]; $cols[$f] = array("txt" => $definition["field_name"], "default" => false); $privacy_fields[] = $f; } } } } return array($cols, $privacy_fields); }