コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * Init property form
  *
  * @return ilPropertyFormGUI $form
  */
 protected function initFormSettings()
 {
     include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
     $form = new ilPropertyFormGUI();
     $form->setTitle($this->lng->txt('tracking_settings'));
     $form->setFormAction($this->ctrl->getFormAction($this));
     // Mode
     $mod = new ilRadioGroupInputGUI($this->lng->txt('trac_mode'), 'modus');
     $mod->setRequired(true);
     $mod->setValue($this->obj_lp->getCurrentMode());
     $form->addItem($mod);
     foreach ($this->obj_lp->getValidModes() as $mode_key) {
         $opt = new ilRadioOption($this->obj_lp->getModeText($mode_key), $mode_key, $this->obj_lp->getModeInfoText($mode_key));
         $opt->setValue($mode_key);
         $mod->addOption($opt);
         // :TODO: Subitem for visits ?!
         if ($mode_key == ilLPObjSettings::LP_MODE_VISITS) {
             $vis = new ilNumberInputGUI($this->lng->txt('trac_visits'), 'visits');
             $vis->setSize(3);
             $vis->setMaxLength(4);
             $vis->setInfo(sprintf($this->lng->txt('trac_visits_info'), ilObjUserTracking::_getValidTimeSpan()));
             $vis->setRequired(true);
             $vis->setValue($this->obj_settings->getVisits());
             $opt->addSubItem($vis);
         }
     }
     $form->addCommandButton('saveSettings', $this->lng->txt('save'));
     return $form;
 }
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
0
 /**
  * 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;
             }
         }
     }
 }
コード例 #5
0
 /**
  * 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);
 }
コード例 #6
0
 /**
  * Init property form
  *
  * @return ilPropertyFormGUI $form
  */
 protected function initFormSettings()
 {
     include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
     $form = new ilPropertyFormGUI();
     $form->setTitle($this->lng->txt('tracking_settings'));
     $form->setFormAction($this->ctrl->getFormAction($this));
     // Mode
     $mod = new ilRadioGroupInputGUI($this->lng->txt('trac_mode'), 'modus');
     $mod->setRequired(true);
     $mod->setValue($this->obj_settings->getMode());
     $form->addItem($mod);
     foreach ($this->obj_settings->getValidModes() as $mode_key => $mode_name) {
         $opt = new ilRadioOption($mode_name, $mode_key, ilLPObjSettings::_mode2InfoText($mode_key));
         $opt->setValue($mode_key);
         $mod->addOption($opt);
         // Subitem for vistits
         if ($mode_key == LP_MODE_VISITS) {
             $vis = new ilNumberInputGUI($this->lng->txt('trac_visits'), 'visits');
             $vis->setSize(3);
             $vis->setMaxLength(4);
             $vis->setInfo(sprintf($this->lng->txt('trac_visits_info'), ilObjUserTracking::_getValidTimeSpan()));
             $vis->setRequired(true);
             $vis->setValue($this->obj_settings->getVisits());
             $opt->addSubItem($vis);
         }
     }
     /*
     // Info Active
     $act = new ilCustomInputGUI($this->lng->txt('trac_activated'), '');
     $img = new ilTemplate('tpl.obj_settings_img_row.html',true,true,'Services/Tracking');
     $img->setVariable("IMG_SRC",
     	$activated = ilObjUserTracking::_enabledLearningProgress()
     		? ilUtil::getImagePath('icon_ok.png')
     		: ilUtil::getImagePath('icon_not_ok.png')
     );
     $act->setHTML($img->get());
     $form->addItem($act);
     
      		// Info Anonymized
      		$ano = new ilCustomInputGUI($this->lng->txt('trac_anonymized'), '');
     $img = new ilTemplate('tpl.obj_settings_img_row.html',true,true,'Services/Tracking');
     $img->setVariable("IMG_SRC",
     	$anonymized = !ilObjUserTracking::_enabledUserRelatedData()
     		? ilUtil::getImagePath('icon_ok.png')
     		: ilUtil::getImagePath('icon_not_ok.png')
     );
     $ano->setHTML($img->get());
     $form->addItem($ano);
     */
     $form->addCommandButton('saveSettings', $this->lng->txt('save'));
     return $form;
 }
 /**
  * Get selectable columns
  *
  * @param
  * @return
  */
 function getSelectableColumns()
 {
     global $lng;
     // default fields
     $cols = array();
     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);
     }
     $cols["percentage"] = array("txt" => $lng->txt("trac_percentage"), "default" => true);
     $cols["status"] = array("txt" => $lng->txt("trac_status"), "default" => true);
     $cols["mark"] = array("txt" => $lng->txt("trac_mark"), "default" => true);
     $cols["u_comment"] = array("txt" => $lng->txt("trac_comment"), "default" => false);
     return $cols;
 }
コード例 #8
0
 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();
 }
コード例 #9
0
 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");
 }
コード例 #10
0
 /**
 Anzeige der Stats-Auswahlm�glichkeiten
 */
 function show()
 {
     global $tpl, $lng, $ilias, $ilDB;
     $q = "SELECT obj_id, type,title FROM object_data WHERE type ='lm' and obj_id=" . $ilDB->quote($this->obj_id, 'integer');
     $result = $ilias->db->query($q);
     while ($row = $result->fetchRow()) {
         $Lehrmodulanz++;
         $LehrmodulID[$Lehrmodulanz] = $row[0];
         $rLehrmodulID[$row[0]] = $Lehrmodulanz;
         $LehrmodulName[$Lehrmodulanz] = $row[2];
     }
     $_SESSION["il_track_rlm_id"] = $rLehrmodulID;
     $_SESSION["il_track_lm_name"] = $LehrmodulName;
     $q = "SELECT obj_id,title,type,lm_id FROM lm_data WHERE type='pg'";
     $result = $ilias->db->query($q);
     while ($row = $result->fetchRow()) {
         $LMSeitenanz[$rLehrmodulID[$row[3]]]++;
     }
     $year = range(2004, date("Y"));
     $month = range(1, 12);
     $day = range(1, 31);
     $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.lm_statistics_settings.html", "Services/Tracking");
     //		$tpl->setVariable("SEARCH_ACTION", ".php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
     $tpl->setVariable("SEARCH_ACTION", $this->ctrl->getLinkTargetByClass('illmstatisticsgui', ''));
     $tpl->setVariable("TXT_TRACKING_DATA", $lng->txt("tracking_data"));
     $tpl->setVariable("TXT_TIME_SEGMENT", $lng->txt("time_segment"));
     $tpl->setVariable("TXT_STATISTIC", $lng->txt("statistic"));
     $tpl->setVariable("TXT_STATISTIC_H", $lng->txt("stats_pages_statisics"));
     $tpl->setVariable("TXT_STATISTIC_D", $lng->txt("stats_chapter_statisics"));
     $tpl->setVariable("TXT_STATISTIC_O", $lng->txt("stats_sessions_statisics"));
     $tpl->setVariable("TXT_STATISTIC_U", $lng->txt("stats_navigation"));
     $tpl->setVariable("TXT_USER_LANGUAGE", $lng->txt("user_language"));
     $tpl->setVariable("TXT_LM", $lng->txt("lm"));
     $tpl->setVariable("TXT_SHOW_TR_DATA", $lng->txt("query_data"));
     $tpl->setVariable("TXT_SHOW_TR_DATA2", $lng->txt("stats_new_selection"));
     $tpl->setVariable("TXT_TRACKED_OBJECTS", $lng->txt("tracked_objects"));
     $tpl->setVariable("TXT_TRACKED_USER", $lng->txt("stats_tracked_user"));
     $tpl->setVariable("TXT_ALLE", $lng->txt("stats_all"));
     $tpl->setVariable("TXT_AUSWAHL", $lng->txt("stats_choice"));
     if ($_SESSION["il_track_yearf"] == "") {
         $_SESSION["il_track_yearf"] = Date("Y");
         $_SESSION["il_track_yeart"] = Date("Y");
         $_SESSION["il_track_monthf"] = "1";
         $_SESSION["il_track_montht"] = Date("n");
         $_SESSION["il_track_dayf"] = "1";
         $_SESSION["il_track_dayt"] = Date("j");
     }
     if ($_SESSION["il_track_stat"] == "") {
         $_SESSION["il_track_stat"] = 'h';
     }
     $languages = $lng->getInstalledLanguages();
     $tpl->setCurrentBlock("lm_selection");
     $_SESSION["il_track_lm"] = $this->obj_id;
     $tpl->setVariable("LM_ID", $LehrmodulID[1]);
     $tpl->setVariable("LM_DESC", substr($LehrmodulName[1], 0, 40) . " (S:" . $LMSeitenanz[1] . ")");
     $tpl->parseCurrentBlock();
     if ($_SESSION["il_track_stat2"] == "choice") {
         $tpl->setVariable("CHC_CHK", " checked=\"1\" ");
     } else {
         $tpl->setVariable("ALL_CHK", " checked=\"1\" ");
     }
     $user_IDs = $_SESSION["userSelected_stat"];
     $tpl->setCurrentBlock("user_selection");
     if (count($user_IDs) > 0) {
         foreach ($_SESSION["userSelected_stat"] as $result_id) {
             $tpl->setVariable("USER1", $result_id);
             $tpl->setVariable("USER2", $result_id);
         }
     } else {
         $tpl->setCurrentBlock("user_selection");
         $tpl->setVariable("USER1", "Alle");
         $tpl->setVariable("USER2", "Alle");
     }
     include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
     if (!ilObjUserTracking::_enabledUserRelatedData()) {
         $tpl->setVariable("DISABLED", "disabled");
         $tpl->setVariable("ALL_CHK", " checked=\"1\" ");
         $tpl->setVariable("CHC_CHK", "");
     } else {
         $tpl->setVariable("INFO1", $lng->txt(stats_current) . ": " . count($_SESSION["userSelected_stat"]) . " " . $lng->txt("stats_user_selected"));
     }
     $tpl->parseCurrentBlock();
     //Datum von:
     foreach ($year as $key) {
         $tpl->setCurrentBlock("fromyear_selection");
         $tpl->setVariable("YEARFR", $key);
         $tpl->setVariable("YEARF", $key);
         if ($_SESSION["il_track_yearf"] == $key) {
             $tpl->setVariable("YEARF_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     foreach ($month as $key) {
         $tpl->setCurrentBlock("frommonth_selection");
         $tpl->setVariable("MONTHFR", $key);
         $tpl->setVariable("MONTHF", $key);
         if ($_SESSION["il_track_monthf"] == $key) {
             $tpl->setVariable("MONTHF_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     foreach ($day as $key) {
         $tpl->setCurrentBlock("fromday_selection");
         $tpl->setVariable("DAYFR", $key);
         $tpl->setVariable("DAYF", $key);
         if ($_SESSION["il_track_dayf"] == $key) {
             $tpl->setVariable("DAYF_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     //Datum nach:
     foreach ($day as $key) {
         $tpl->setCurrentBlock("today_selection");
         $tpl->setVariable("DAYTO", $key);
         $tpl->setVariable("DAYT", $key);
         if ($_SESSION["il_track_dayt"] == $key) {
             $tpl->setVariable("DAYT_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     foreach ($month as $key) {
         $tpl->setCurrentBlock("tomonth_selection");
         $tpl->setVariable("MONTHTO", $key);
         $tpl->setVariable("MONTHT", $key);
         if ($_SESSION["il_track_montht"] == $key) {
             $tpl->setVariable("MONTHT_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     foreach ($year as $key) {
         $tpl->setCurrentBlock("toyear_selection");
         $tpl->setVariable("YEARTO", $key);
         $tpl->setVariable("YEART", $key);
         if ($_SESSION["il_track_yeart"] == $key) {
             $tpl->setVariable("YEART_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     // language selection
     $tpl->setCurrentBlock("language_selection");
     $tpl->setVariable("LANG", $lng->txt("any_language"));
     $tpl->setVariable("LANGSHORT", "0");
     $tpl->parseCurrentBlock();
     $lng->loadLanguageModule("meta");
     foreach ($languages as $lang_key) {
         $tpl->setCurrentBlock("language_selection");
         $tpl->setVariable("LANG", $lng->txt("meta_l_" . $lang_key));
         $tpl->setVariable("LANGSHORT", $lang_key);
         if ($_SESSION["il_track_language"] == $lang_key) {
             $tpl->setVariable("LANG_SEL", " selected=\"1\" ");
         }
         $tpl->parseCurrentBlock();
     }
     // statistic type
     if ($_SESSION["il_track_stat"] == "d") {
         $tpl->setVariable("D_CHK", " checked=\"1\" ");
     } elseif ($_SESSION["il_track_stat"] == "h") {
         $tpl->setVariable("H_CHK", " checked=\"1\" ");
     } elseif ($_SESSION["il_track_stat"] == "o") {
         $tpl->setVariable("O_CHK", " checked=\"1\" ");
     } elseif ($_SESSION["il_track_stat"] == "u") {
         $tpl->setVariable("U_CHK", " checked=\"1\" ");
     }
 }
コード例 #11
0
 /**
  * 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;
 }
コード例 #12
0
 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';
             }
         }
     }
 }
コード例 #13
0
 function __setSubTabs($a_active)
 {
     global $rbacsystem, $ilObjDataCache;
     switch ($this->getMode()) {
         case self::LP_CONTEXT_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             if (ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_enabledUserRelatedData()) {
                 $this->tabs_gui->addTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == self::LP_ACTIVE_PROGRESS);
             }
             if (ilObjUserTracking::_hasLearningProgressOtherUsers()) {
                 $this->tabs_gui->addTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
             }
             break;
         case self::LP_CONTEXT_REPOSITORY:
             // #12771 - do not show status if learning progress is deactivated
             include_once './Services/Object/classes/class.ilObjectLP.php';
             $olp = ilObjectLP::getInstance($this->obj_id);
             if ($olp->isActive()) {
                 $has_read = $rbacsystem->checkAccess('read_learning_progress', $this->getRefId());
                 if ($this->isAnonymized() || !$has_read) {
                     $this->ctrl->setParameterByClass('illplistofprogressgui', 'user_id', $this->getUserId());
                     $this->tabs_gui->addSubTabTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == self::LP_ACTIVE_PROGRESS);
                 } else {
                     // Check if it is a course
                     $sub_tab = $ilObjDataCache->lookupType($ilObjDataCache->lookupObjId($this->getRefId())) == 'crs' ? 'trac_crs_objects' : 'trac_objects';
                     $this->tabs_gui->addSubTabTarget($sub_tab, $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
                 }
                 if ($has_read) {
                     if (!$this->isAnonymized() && !in_array($this->obj_type, array('tst', 'htlm', 'exc', 'sess')) && !$olp instanceof ilPluginLP) {
                         $this->tabs_gui->addSubTabTarget("trac_matrix", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showUserObjectMatrix'), "", "", "", $a_active == self::LP_ACTIVE_MATRIX);
                     }
                     $this->tabs_gui->addSubTabTarget("trac_summary", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showObjectSummary'), "", "", "", $a_active == self::LP_ACTIVE_SUMMARY);
                 }
             }
             if (!$olp instanceof ilPluginLP && $rbacsystem->checkAccess('edit_learning_progress', $this->getRefId())) {
                 $this->tabs_gui->addSubTabTarget('trac_settings', $this->ctrl->getLinkTargetByClass('illplistofsettingsgui', ''), "", "", "", $a_active == self::LP_ACTIVE_SETTINGS);
             }
             break;
         case self::LP_CONTEXT_ADMINISTRATION:
             /*
             $this->tabs_gui->addSubTabTarget('trac_progress',
             					 $this->ctrl->getLinkTargetByClass('illplistofprogressgui',''),
             					 "","","",$a_active == self::LP_ACTIVE_PROGRESS);
             */
             $this->tabs_gui->addSubTabTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
             break;
         case self::LP_CONTEXT_USER_FOLDER:
         case self::LP_CONTEXT_ORG_UNIT:
             // No tabs default class is lpprogressgui
             break;
         default:
             die('No valid mode given');
             break;
     }
     return true;
 }
コード例 #14
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;
 }
コード例 #15
0
 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;
     }
 }
コード例 #16
0
 /**
  * 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();
 }
コード例 #17
0
 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;
 }
コード例 #18
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";
         $lp_status = ilLPStatus::_lookupStatus($this->getId(), $a_member_id);
         if ($lp_status == LP_STATUS_COMPLETED_NUM) {
             $this->getMembersObject()->updatePassed($a_member_id, true, -1);
         }
     }
 }
コード例 #19
0
 /**
  * Init filter
  */
 function initFilter()
 {
     global $lng, $ilSetting;
     if ($this->is_root) {
         return parent::initFilter(true, false);
     }
     // show only if extended data was activated in lp settings
     include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
     $tracking = new ilObjUserTracking();
     $item = $this->addFilterItemByMetaType("user_total", ilTable2GUI::FILTER_NUMBER_RANGE, true, "&#8721; " . $lng->txt("users"));
     $this->filter["user_total"] = $item->getValue();
     if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_READ_COUNT)) {
         $item = $this->addFilterItemByMetaType("read_count", ilTable2GUI::FILTER_NUMBER_RANGE, true, "&#8721; " . $lng->txt("trac_read_count"));
         $this->filter["read_count"] = $item->getValue();
     }
     if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS)) {
         $item = $this->addFilterItemByMetaType("spent_seconds", ilTable2GUI::FILTER_DURATION_RANGE, true, "&#216; " . $lng->txt("trac_spent_seconds") . " / " . $lng->txt("user"));
         $this->filter["spent_seconds"]["from"] = $item->getCombinationItem("from")->getValueInSeconds();
         $this->filter["spent_seconds"]["to"] = $item->getCombinationItem("to")->getValueInSeconds();
     }
     $item = $this->addFilterItemByMetaType("percentage", ilTable2GUI::FILTER_NUMBER_RANGE, true, "&#216; " . $lng->txt("trac_percentage") . " / " . $lng->txt("user"));
     $this->filter["percentage"] = $item->getValue();
     // do not show status if learning progress is deactivated
     if ($this->olp->isActive()) {
         include_once "Services/Tracking/classes/class.ilLPStatus.php";
         $item = $this->addFilterItemByMetaType("status", ilTable2GUI::FILTER_SELECT, true);
         $item->setOptions(array("" => $lng->txt("trac_all"), ilLPStatus::LP_STATUS_NOT_ATTEMPTED_NUM + 1 => $lng->txt(ilLPStatus::LP_STATUS_NOT_ATTEMPTED), ilLPStatus::LP_STATUS_IN_PROGRESS_NUM + 1 => $lng->txt(ilLPStatus::LP_STATUS_IN_PROGRESS), ilLPStatus::LP_STATUS_COMPLETED_NUM + 1 => $lng->txt(ilLPStatus::LP_STATUS_COMPLETED), ilLPStatus::LP_STATUS_FAILED_NUM + 1 => $lng->txt(ilLPStatus::LP_STATUS_FAILED)));
         $this->filter["status"] = $item->getValue();
         if ($this->filter["status"]) {
             $this->filter["status"]--;
         }
         $item = $this->addFilterItemByMetaType("trac_status_changed", ilTable2GUI::FILTER_DATE_RANGE, true);
         $this->filter["status_changed"] = $item->getDate();
     }
     if (ilObject::_lookupType($this->obj_id) != "lm") {
         $item = $this->addFilterItemByMetaType("mark", ilTable2GUI::FILTER_TEXT, true, $lng->txt("trac_mark"));
         $this->filter["mark"] = $item->getValue();
     }
     if ($ilSetting->get("usr_settings_course_export_gender")) {
         $item = $this->addFilterItemByMetaType("gender", ilTable2GUI::FILTER_SELECT, true);
         $item->setOptions(array("" => $lng->txt("trac_all"), "m" => $lng->txt("gender_m"), "f" => $lng->txt("gender_f")));
         $this->filter["gender"] = $item->getValue();
     }
     if ($ilSetting->get("usr_settings_course_export_city")) {
         $item = $this->addFilterItemByMetaType("city", ilTable2GUI::FILTER_TEXT, true);
         $this->filter["city"] = $item->getValue();
     }
     if ($ilSetting->get("usr_settings_course_export_country")) {
         $item = $this->addFilterItemByMetaType("country", ilTable2GUI::FILTER_TEXT, true);
         $this->filter["country"] = $item->getValue();
     }
     if ($ilSetting->get("usr_settings_course_export_sel_country")) {
         $item = $this->addFilterItemByMetaType("sel_country", ilTable2GUI::FILTER_SELECT, true);
         $item->setOptions(array("" => $lng->txt("trac_all")) + $this->getSelCountryCodes());
         $this->filter["sel_country"] = $item->getValue();
     }
     $item = $this->addFilterItemByMetaType("language", ilTable2GUI::FILTER_LANGUAGE, true);
     $this->filter["language"] = $item->getValue();
     if ($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS)) {
         $item = $this->addFilterItemByMetaType("trac_first_access", ilTable2GUI::FILTER_DATETIME_RANGE, true);
         $this->filter["first_access"] = $item->getDate();
         $item = $this->addFilterItemByMetaType("trac_last_access", ilTable2GUI::FILTER_DATETIME_RANGE, true);
         $this->filter["last_access"] = $item->getDate();
     }
     $item = $this->addFilterItemByMetaType("registration_filter", ilTable2GUI::FILTER_DATE_RANGE, true);
     $this->filter["registration"] = $item->getDate();
 }
コード例 #20
0
 function __setSubTabs($a_active)
 {
     global $rbacsystem, $ilObjDataCache, $lng, $ilUser;
     switch ($this->getMode()) {
         case LP_MODE_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             if (ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_enabledUserRelatedData()) {
                 $this->tabs_gui->addTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == LP_ACTIVE_PROGRESS);
             }
             if (ilObjUserTracking::_hasLearningProgressOtherUsers()) {
                 $this->tabs_gui->addTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
             }
             break;
         case LP_MODE_REPOSITORY:
             if ($rbacsystem->checkAccess('edit_learning_progress', $this->getRefId())) {
                 if ($this->isAnonymized() || $this->isObjectAnonymized()) {
                     $this->ctrl->setParameterByClass('illplistofprogressgui', 'user_id', $this->getUserId());
                     $this->tabs_gui->addSubTabTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == LP_ACTIVE_PROGRESS);
                 } else {
                     // Check if it is a course
                     $sub_tab = $ilObjDataCache->lookupType($ilObjDataCache->lookupObjId($this->getRefId())) == 'crs' ? 'trac_crs_objects' : 'trac_objects';
                     $this->tabs_gui->addSubTabTarget($sub_tab, $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
                 }
                 if ($this->statistics_activated) {
                     $this->tabs_gui->addSubTabTarget('trac_lm_statistics', $this->ctrl->getLinkTargetByClass('illmstatisticsgui', ''), "", "", "", $a_active == LP_ACTIVE_LM_STATISTICS);
                 }
                 if (!$this->isAnonymized() && !in_array($this->obj_type, array('tst', 'lm', 'htlm', 'exc'))) {
                     // do not show status if learning progress is deactivated
                     // matrix only consists of status...
                     $mode = ilLPObjSettings::_lookupMode($this->obj_id);
                     if ($mode != LP_MODE_DEACTIVATED && $mode != LP_MODE_LP_MODE_UNDEFINED) {
                         $this->tabs_gui->addSubTabTarget("trac_matrix", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showUserObjectMatrix'), "", "", "", $a_active == LP_ACTIVE_MATRIX);
                     }
                 }
                 $this->tabs_gui->addSubTabTarget("trac_summary", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showObjectSummary'), "", "", "", $a_active == LP_ACTIVE_SUMMARY);
                 $this->tabs_gui->addSubTabTarget('trac_settings', $this->ctrl->getLinkTargetByClass('illplistofsettingsgui', ''), "", "", "", $a_active == LP_ACTIVE_SETTINGS);
             }
             break;
         case LP_MODE_ADMINISTRATION:
             /*
             $this->tabs_gui->addSubTabTarget('trac_progress',
             					 $this->ctrl->getLinkTargetByClass('illplistofprogressgui',''),
             					 "","","",$a_active == LP_ACTIVE_PROGRESS);
             */
             $this->tabs_gui->addSubTabTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
             break;
         case LP_MODE_USER_FOLDER:
             // No tabs default class is lpprogressgui
             break;
         default:
             die('No valid mode given');
             break;
     }
     return true;
 }
コード例 #21
0
 /**
  * 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');
     }
 }
コード例 #22
0
 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;
 }
コード例 #23
0
 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());
 }
コード例 #24
0
 /**
  * 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);
 }
コード例 #25
0
 /**
  * deletes a user
  * @access	public
  * @param	integer		user_id
  */
 function delete()
 {
     global $rbacadmin, $ilDB;
     // deassign from ldap groups
     include_once 'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php';
     $mapping = ilLDAPRoleGroupMapping::_getInstance();
     $mapping->deleteUser($this->getId());
     // remove mailbox / update sent mails
     include_once "Services/Mail/classes/class.ilMailbox.php";
     $mailbox = new ilMailbox($this->getId());
     $mailbox->delete();
     $mailbox->updateMailsOfDeletedUser($this->getLogin());
     // delete feed blocks on personal desktop
     include_once "./Services/Block/classes/class.ilCustomBlock.php";
     $costum_block = new ilCustomBlock();
     $costum_block->setContextObjId($this->getId());
     $costum_block->setContextObjType("user");
     $c_blocks = $costum_block->queryBlocksForContext();
     include_once "./Services/Feeds/classes/class.ilPDExternalFeedBlock.php";
     foreach ($c_blocks as $c_block) {
         if ($c_block["type"] == "pdfeed") {
             $fb = new ilPDExternalFeedBlock($c_block["id"]);
             $fb->delete();
         }
     }
     // delete block settings
     include_once "./Services/Block/classes/class.ilBlockSetting.php";
     ilBlockSetting::_deleteSettingsOfUser($this->getId());
     // delete user_account
     $ilDB->manipulateF("DELETE FROM usr_data WHERE usr_id = %s", array("integer"), array($this->getId()));
     // delete user_prefs
     ilObjUser::_deleteAllPref($this->getId());
     // delete user_session
     include_once "./Services/Authentication/classes/class.ilSession.php";
     ilSession::_destroyByUserId($this->getId());
     // remove user from rbac
     $rbacadmin->removeUser($this->getId());
     // remove bookmarks
     // TODO: move this to class.ilBookmarkFolder
     $q = "DELETE FROM bookmark_tree WHERE tree = " . $ilDB->quote($this->getId(), "integer");
     $ilDB->manipulate($q);
     $q = "DELETE FROM bookmark_data WHERE user_id = " . $ilDB->quote($this->getId(), "integer");
     $ilDB->manipulate($q);
     // DELETE FORUM ENTRIES (not complete in the moment)
     include_once './Modules/Forum/classes/class.ilObjForum.php';
     ilObjForum::_deleteUser($this->getId());
     // Delete link check notify entries
     include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
     ilLinkCheckNotify::_deleteUser($this->getId());
     // Delete crs entries
     include_once './Modules/Course/classes/class.ilObjCourse.php';
     ilObjCourse::_deleteUser($this->getId());
     // Delete user tracking
     include_once './Services/Tracking/classes/class.ilObjUserTracking.php';
     ilObjUserTracking::_deleteUser($this->getId());
     include_once 'Modules/Session/classes/class.ilEventParticipants.php';
     ilEventParticipants::_deleteByUser($this->getId());
     // Delete Tracking data SCORM 2004 RTE
     include_once 'Modules/Scorm2004/classes/ilSCORM13Package.php';
     ilSCORM13Package::_removeTrackingDataForUser($this->getId());
     // Delete Tracking data SCORM 1.2 RTE
     include_once 'Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php';
     ilObjSCORMLearningModule::_removeTrackingDataForUser($this->getId());
     // remove all notifications
     include_once "./Services/Notification/classes/class.ilNotification.php";
     ilNotification::removeForUser($this->getId());
     // remove portfolios
     include_once "./Modules/Portfolio/classes/class.ilObjPortfolio.php";
     ilObjPortfolio::deleteUserPortfolios($this->getId());
     // remove workspace
     include_once "./Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php";
     $tree = new ilWorkspaceTree($this->getId());
     $tree->cascadingDelete();
     // remove disk quota entries
     include_once "./Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
     ilDiskQuotaHandler::deleteByOwner($this->getId());
     // Delete user defined field entries
     $this->deleteUserDefinedFieldEntries();
     // Delete clipboard entries
     $this->clipboardDeleteAll();
     // Reset owner
     $this->resetOwner();
     // Trigger deleteUser Event
     global $ilAppEventHandler;
     $ilAppEventHandler->raise('Services/User', 'deleteUser', array('usr_id' => $this->getId()));
     // delete object data
     parent::delete();
     return true;
 }
コード例 #26
0
 /**
  * get mode info text
  *
  * @access public
  * @static
  *
  * @param int $mode
  */
 public static function _mode2InfoText($a_mode)
 {
     global $lng;
     switch ($a_mode) {
         case LP_MODE_DEACTIVATED:
             return $lng->txt('trac_mode_deactivated_info_new');
         case LP_MODE_TLT:
             return sprintf($lng->txt('trac_mode_tlt_info'), ilObjUserTracking::_getValidTimeSpan());
         case LP_MODE_VISITS:
             return $lng->txt('trac_mode_visits_info');
         case LP_MODE_MANUAL:
             return $lng->txt('trac_mode_manual_info');
         case LP_MODE_MANUAL_BY_TUTOR:
             return $lng->txt('trac_mode_manual_by_tutor_info');
         case LP_MODE_OBJECTIVES:
             return $lng->txt('trac_mode_objectives_info');
         case LP_MODE_COLLECTION:
             return $lng->txt('trac_mode_collection_info');
         case LP_MODE_SCORM:
             return $lng->txt('trac_mode_scorm_info');
         case LP_MODE_TEST_FINISHED:
             return $lng->txt('trac_mode_test_finished_info');
         case LP_MODE_TEST_PASSED:
             return $lng->txt('trac_mode_test_passed_info');
         case LP_MODE_EXERCISE_RETURNED:
             return $lng->txt('trac_mode_exercise_returned_info');
         case LP_MODE_SCORM_PACKAGE:
             return $lng->txt('trac_mode_scorm_package_info');
         case LP_MODE_EVENT:
             return $lng->txt('trac_mode_event_info');
     }
 }
コード例 #27
0
 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());
 }
コード例 #28
0
 protected function trackChapterAccess()
 {
     global $ilDB, $ilUser;
     // get last accessed page
     $set = $ilDB->query("SELECT * FROM lo_access WHERE " . "usr_id = " . $ilDB->quote($ilUser->getId(), "integer") . " AND " . "lm_id = " . $ilDB->quote($this->lm->getRefId(), "integer"));
     $res = $ilDB->fetchAssoc($set);
     if ($res["obj_id"]) {
         include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
         $valid_timespan = ilObjUserTracking::_getValidTimeSpan();
         $pg_ts = new ilDateTime($res["timestamp"], IL_CAL_DATETIME);
         $pg_ts = $pg_ts->get(IL_CAL_UNIX);
         $pg_id = $res["obj_id"];
         if (!$this->lm_tree->isInTree($pg_id)) {
             return;
         }
         $now = time();
         $time_diff = $read_diff = 0;
         // spent_seconds or read_count ?
         if ($now - $pg_ts <= $valid_timespan) {
             $time_diff = $now - $pg_ts;
         } else {
             $read_diff = 1;
         }
         // find parent chapter(s) for that page
         $parent_st_ids = array();
         foreach ($this->lm_tree->getPathFull($pg_id) as $item) {
             if ($item["type"] == "st") {
                 $parent_st_ids[] = $item["obj_id"];
             }
         }
         if ($parent_st_ids && ($time_diff || $read_diff)) {
             // get existing chapter entries
             $ex_st = array();
             $set = $ilDB->query("SELECT obj_id FROM lm_read_event" . " WHERE " . $ilDB->in("obj_id", $parent_st_ids, "", "integer") . " AND usr_id = " . $ilDB->quote($ilUser->getId(), "integer"));
             while ($row = $ilDB->fetchAssoc($set)) {
                 $ex_st[] = $row["obj_id"];
             }
             // add missing chapter entries
             $missing_st = array_diff($parent_st_ids, $ex_st);
             if (sizeof($missing_st)) {
                 foreach ($missing_st as $st_id) {
                     $fields = array("obj_id" => array("integer", $st_id), "usr_id" => array("integer", $ilUser->getId()));
                     $ilDB->insert("lm_read_event", $fields);
                 }
             }
             // update all parent chapters
             $ilDB->manipulate("UPDATE lm_read_event SET" . " read_count = read_count + " . $ilDB->quote($read_diff, "integer") . " , spent_seconds = spent_seconds + " . $ilDB->quote($time_diff, "integer") . " , last_access = " . $ilDB->quote($now, "integer") . " WHERE " . $ilDB->in("obj_id", $parent_st_ids, "", "integer") . " AND usr_id = " . $ilDB->quote($ilUser->getId(), "integer"));
         }
     }
 }
コード例 #29
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);
     }
 }
コード例 #30
0
 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);
 }