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; }
public function getPossibleItems($a_ref_id) { if (!isset(self::$possible_items[$a_ref_id])) { $obj_id = ilObject::_lookupObjectId($a_ref_id); $items = array(); // only top-level chapters include_once "Services/MetaData/classes/class.ilMDEducational.php"; $tree = new ilTree($obj_id); $tree->setTableNames('lm_tree', 'lm_data'); $tree->setTreeTablePK("lm_id"); foreach ($tree->getChilds($tree->readRootId()) as $child) { if ($child["type"] == "st") { $child["tlt"] = ilMDEducational::_getTypicalLearningTimeSeconds($obj_id, $child["obj_id"]); $items[$child["obj_id"]] = $child; } } self::$possible_items[$a_ref_id] = $items; } return self::$possible_items[$a_ref_id]; }
function __renderItem($item, $level) { global $ilUser, $ilAccess; include_once 'Modules/Course/classes/Timings/class.ilTimingPlaned.php'; include_once './Services/Link/classes/class.ilLink.php'; include_once './Services/MetaData/classes/class.ilMDEducational.php'; if (!$ilAccess->checkAccess('visible', '', $item['ref_id'])) { return false; } $this->lng->loadLanguageModule('meta'); $usr_planed = new ilTimingPlaned($item['ref_id'], $ilUser->getId()); for ($i = 0; $i < $level; $i++) { $this->tpl->touchBlock('start_indent'); $this->tpl->touchBlock('end_indent'); } if (strlen($item['description'])) { $this->tpl->setCurrentBlock("item_description"); $this->tpl->setVariable("DESC", $item['description']); $this->tpl->parseCurrentBlock(); } if ($tlt = ilMDEducational::_getTypicalLearningTimeSeconds($item['obj_id'])) { $this->tpl->setCurrentBlock("tlt"); $this->tpl->setVariable("TXT_TLT", $this->lng->txt('meta_typical_learning_time')); $this->tpl->setVariable("TLT_VAL", ilFormat::_secondsToString($tlt)); $this->tpl->parseCurrentBlock(); } if ($ilAccess->checkAccess('read', '', $item['ref_id'])) { $this->tpl->setCurrentBlock("title_as_link"); $this->tpl->setVariable("TITLE_LINK", ilLink::_getLink($item['ref_id'], $item['type'])); $this->tpl->setVariable("TITLE_NAME", $item['title']); $this->tpl->parseCurrentBlock(); } else { $this->tpl->setCurrentBlock("title_plain"); $this->tpl->setVariable("TITLE", $item['title']); $this->tpl->parseCurrentBlock(); } $this->tpl->setCurrentBlock("container_standard_row"); if (isset($this->invalid["{$item['ref_id']}"])) { $this->tpl->setVariable("ROWCLASS", 'tblrowmarked'); } else { $this->tpl->setVariable("ROWCLASS", ilUtil::switchColor($this->counter++, 'tblrow1', 'tblrow2')); } #$this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath('icon_'.$item['type'].'.png')); $this->tpl->setVariable('TYPE_IMG', ilUtil::getTypeIconPath($item['type'], $item['obj_id'], 'small')); $this->tpl->setVariable("TYPE_ALT_IMG", $this->lng->txt('obj_' . $item['type'])); if ($item['timing_type'] == ilObjectActivation::TIMINGS_PRESETTING) { $this->tpl->setVariable('SUG_START', ilDatePresentation::formatDate(new ilDate($item['suggestion_start'], IL_CAL_UNIX))); $this->tpl->setVariable('SUG_END', ilDatePresentation::formatDate(new ilDate($item['suggestion_end'], IL_CAL_UNIX))); } if ($item['changeable']) { $item_prefix = "item[" . $item['ref_id'] . ']'; if (is_array($_POST['item']["{$item['ref_id']}"]['own_start'])) { #echo "Start post<br>"; $start = $this->__toUnix($_POST['item']["{$item['ref_id']}"]['own_start']); } elseif ($usr_planed->getPlanedStartingTime()) { #echo "Own start<br>"; $start = $usr_planed->getPlanedStartingTime(); } else { #echo "Empfehlung start<br>"; $start = $item['suggestion_start']; } $date = $this->__prepareDateSelect($start); $this->tpl->setVariable("OWN_START", ilUtil::makeDateSelect($item_prefix . "[own_start]", $date['y'], $date['m'], $date['d'], date('Y', time()), false)); if ($usr_planed->getPlanedEndingTime()) { #echo "Own End<br>"; $end = $usr_planed->getPlanedEndingTime(); } else { #echo "Empfehlung end<br>"; $end = $item['suggestion_end']; } $this->tpl->setVariable('OWN_END', ilDatePresentation::formatDate(new ilDate($end, IL_CAL_UNIX))); $this->tpl->setVariable("NAME_DURATION", $item_prefix . "[duration]"); // Duration if (isset($_POST['item']["{$item['ref_id']}"]['duration'])) { $this->tpl->setVariable("VAL_DURATION", $_POST['item']["{$item['ref_id']}"]['duration']); } else { $this->tpl->setVariable("VAL_DURATION", intval(($end - $start) / (60 * 60 * 24))); } $this->tpl->setVariable('LIM_START', ilDatePresentation::formatDate(new ilDate($item['earliest_start'], IL_CAL_UNIX))); $this->tpl->setVariable('LIM_END', ilDatePresentation::formatDate(new ilDate($item['latest_end'], IL_CAL_UNIX))); } $this->tpl->parseCurrentBlock(); if (!$_SESSION['crs_timings_user_hidden']) { return true; } foreach (ilObjectActivation::getTimingsItems($item['ref_id']) as $item_data) { $this->__renderItem($item_data, $level + 1); } }
/** * test Educational * @group IL_Init * @return */ public function testEducational() { include_once './Services/MetaData/classes/class.ilMDEducational.php'; include_once 'Services/MetaData/classes/class.ilMDLanguageItem.php'; $con = new ilMDEducational(1, 2, 'xxx'); $con->setDifficulty('Easy'); $ret = $con->save(); $this->assertGreaterThan(0, $ret); $con->setDifficulty('Medium'); $con->update(); $con->read(); $desc = $con->getDifficulty(); $this->assertEquals('Medium', $desc); $con->delete(); }
function &getEducational() { include_once 'Services/Migration/DBUpdate_426/classes/class.ilMDEducational.php'; if ($id = ilMDEducational::_getId($this->getRBACId(), $this->getObjId())) { $edu =& new ilMDEducational(); $edu->setMetaId($id); return $edu; } return false; }
/** * 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) { $tlt = (int) ilMDEducational::_getTypicalLearningTimeSeconds($a_obj_id); $re = ilChangeEvent::_lookupReadEvents($a_obj_id, $a_user_id); $spent = (int) $re[0]["spent_seconds"]; if ($tlt > 0) { $per = min(100, 100 / $tlt * $spent); } else { $per = 100; } return $per; }
function __readItemStatusInfo($a_items) { global $ilObjDataCache; include_once 'Services/Object/classes/class.ilObjectLP.php'; foreach ($a_items as $item_id) { $olp = ilObjectLP::getInstance($item_id); $this->obj_data[$item_id]['type'] = $ilObjDataCache->lookupType($item_id); $this->obj_data[$item_id]['mode'] = $olp->getCurrentMode(); if ($this->obj_data[$item_id]['mode'] == ilLPObjSettings::LP_MODE_TLT) { include_once './Services/MetaData/classes/class.ilMDEducational.php'; $this->obj_data[$item_id]['tlt'] = ilMDEducational::_getTypicalLearningTimeSeconds($item_id); } if ($this->obj_data[$item_id]['mode'] == ilLPObjSettings::LP_MODE_VISITS) { $this->obj_data[$item_id]['visits'] = ilLPObjSettings::_lookupVisits($item_id); } if ($this->obj_data[$item_id]['mode'] == ilLPObjSettings::LP_MODE_SCORM) { $collection = $olp->getCollectionInstance(); if ($collection) { $this->obj_data[$item_id]['scos'] = count($collection->getItems()); } } } }
function _getTypicalLearningTime($a_obj_id) { include_once 'Services/MetaData/classes/class.ilMDEducational.php'; return ilMDEducational::_getTypicalLearningTimeSeconds($a_obj_id); }
function __readItemStatusInfo($a_items) { global $ilObjDataCache; foreach ($a_items as $item_id) { $this->obj_data[$item_id]['mode'] = ilLPObjSettings::_lookupMode($item_id); $this->obj_data[$item_id]['type'] = $ilObjDataCache->lookupType($item_id); if ($this->obj_data[$item_id]['mode'] == LP_MODE_TLT) { include_once './Services/MetaData/classes/class.ilMDEducational.php'; $this->obj_data[$item_id]['tlt'] = ilMDEducational::_getTypicalLearningTimeSeconds($item_id); } if ($this->obj_data[$item_id]['mode'] == LP_MODE_VISITS) { include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; $this->obj_data[$item_id]['visits'] = ilLPObjSettings::_lookupVisits($item_id); } if ($this->obj_data[$item_id]['mode'] == LP_MODE_SCORM) { include_once './Services/Tracking/classes/class.ilLPCollectionCache.php'; $this->obj_data[$item_id]['scos'] = count(ilLPCollectionCache::_getItems($item_id)); } } }