/** * Get child title * * @param * @return */ function getChildTitle($a_child) { if ($this->lang != "-") { $lmobjtrans = new ilLMObjTranslation($a_child["node_id"], $this->lang); return $lmobjtrans->getTitle(); } return $a_child["title"]; }
/** * Save titles for lm objects * * @param array titles (key is ID, value is title) */ static function saveTitles($a_lm, $a_titles, $a_lang = "-") { include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php"; if ($a_lang == "") { $a_lang = "-"; } if (is_array($a_titles)) { include_once "./Services/MetaData/classes/class.ilMD.php"; foreach ($a_titles as $id => $title) { if ($a_lang == "-") { $lmobj = ilLMObjectFactory::getInstance($a_lm, $id, false); if (is_object($lmobj)) { // Update Title and description $md = new ilMD($a_lm->getId(), $id, $lmobj->getType()); $md_gen = $md->getGeneral(); if (is_object($md_gen)) { $md_gen->setTitle($title); $md_gen->update(); $md->update(); } ilLMObject::_writeTitle($id, $title); } } else { $lmobjtrans = new ilLMObjTranslation($id, $a_lang); $lmobjtrans->setTitle($title); $lmobjtrans->save(); } } } }
/** * get presentation title * */ function _getPresentationTitle($a_st_id, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_lm_id = 0, $a_lang = "-") { global $ilDB; if ($a_lm_id == 0) { $a_lm_id = ilLMObject::_lookupContObjID($a_st_id); } // @todo: optimize include_once "./Services/COPage/classes/class.ilPageMultiLang.php"; $ml = new ilPageMultiLang("lm", $a_lm_id); // get chapter data $query = "SELECT * FROM lm_data WHERE obj_id = " . $ilDB->quote($a_st_id, "integer"); $st_set = $ilDB->query($query); $st_rec = $ilDB->fetchAssoc($st_set); if ($a_lang != "-" && $ml->getActivated() && in_array($a_lang, $ml->getLanguages())) { include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php"; $lmobjtrans = new ilLMObjTranslation($a_st_id, $a_lang); if ($lmobjtrans->getTitle() != "") { $st_rec["title"] = $lmobjtrans->getTitle(); } } $tree = new ilTree($st_rec["lm_id"]); $tree->setTableNames('lm_tree', 'lm_data'); $tree->setTreeTablePK("lm_id"); if ($a_include_numbers) { if ($tree->isInTree($st_rec["obj_id"])) { // get chapter tree node $query = "SELECT * FROM lm_tree WHERE child = " . $ilDB->quote($a_st_id, "integer") . " AND lm_id = " . $ilDB->quote($st_rec["lm_id"], "integer"); $tree_set = $ilDB->query($query); $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC); $depth = $tree_node["depth"]; $nr = $tree->getChildSequenceNumber($tree_node, "st") . " "; for ($i = $depth - 1; $i > 1; $i--) { // get next parent tree node $query = "SELECT * FROM lm_tree WHERE child = " . $ilDB->quote($tree_node["parent"], "integer") . " AND lm_id = " . $ilDB->quote($st_rec["lm_id"], "integer"); $tree_set = $ilDB->query($query); $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC); $seq = $tree->getChildSequenceNumber($tree_node, "st"); $nr = $seq . "." . $nr; } } } return $nr . $st_rec["title"]; }
/** * presentation title doesn't have to be page title, it may be * chapter title + page title or chapter title only, depending on settings * * @param string $a_mode IL_CHAPTER_TITLE | IL_PAGE_TITLE | IL_NO_HEADER */ static function _getPresentationTitle($a_pg_id, $a_mode = IL_CHAPTER_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false, $a_lm_id = 0, $a_lang = "-") { if ($a_mode == IL_NO_HEADER && !$a_force_content) { return ""; } if ($a_lm_id == 0) { $a_lm_id = ilLMObject::_lookupContObjID($a_pg_id); } if ($a_lm_id == 0) { return ""; } // this is optimized when ilLMObject::preloadDataByLM is invoked (e.g. done in ilLMExplorerGUI) $title = ilLMObject::_lookupTitle($a_pg_id); // this is also optimized since ilObjectTranslation re-uses instances for one lm include_once "./Services/Object/classes/class.ilObjectTranslation.php"; $ot = ilObjectTranslation::getInstance($a_lm_id); $languages = $ot->getLanguages(); if ($a_lang != "-" && $ot->getContentActivated() && isset($languages[$a_lang])) { include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php"; $lmobjtrans = new ilLMObjTranslation($a_pg_id, $a_lang); if ($lmobjtrans->getTitle() != "") { $title = $lmobjtrans->getTitle(); } } if ($a_mode == IL_PAGE_TITLE) { return $title; } include_once "./Modules/LearningModule/classes/class.ilLMTree.php"; $tree = ilLMTree::getInstance($a_lm_id); if ($tree->isInTree($a_pg_id)) { $pred_node = $tree->fetchPredecessorNode($a_pg_id, "st"); $childs = $tree->getChildsByType($pred_node["obj_id"], "pg"); $cnt_str = ""; if (count($childs) > 1) { $cnt = 0; foreach ($childs as $child) { include_once "./Modules/LearningModule/classes/class.ilLMPage.php"; $active = ilLMPage::_lookupActive($child["obj_id"], ilObject::_lookupType($a_lm_id), $a_time_scheduled_activation); if (!$active) { $act_data = ilLMPage::_lookupActivationData((int) $child["obj_id"], ilObject::_lookupType($a_lm_id)); if ($act_data["show_activation_info"] && ilUtil::now() < $act_data["activation_start"]) { $active = true; } } if ($child["type"] != "pg" || $active) { $cnt++; } if ($child["obj_id"] == $a_pg_id) { $cur_cnt = $cnt; } } if ($cnt > 1) { $cnt_str = " (" . $cur_cnt . "/" . $cnt . ")"; } } require_once "./Modules/LearningModule/classes/class.ilStructureObject.php"; //$struct_obj =& new ilStructureObject($pred_node["obj_id"]); //return $struct_obj->getTitle(); return ilStructureObject::_getPresentationTitle($pred_node["obj_id"], $a_include_numbers, false, 0, $a_lang) . $cnt_str; //return $pred_node["title"].$cnt_str; } else { return $title; } }
/** * presentation title doesn't have to be page title, it may be * chapter title + page title or chapter title only, depending on settings * * @param string $a_mode IL_CHAPTER_TITLE | IL_PAGE_TITLE | IL_NO_HEADER */ function _getPresentationTitle($a_pg_id, $a_mode = IL_CHAPTER_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false, $a_lm_id = 0, $a_lang = "-") { global $ilDB, $ilUser; if ($a_lm_id == 0) { $a_lm_id = ilLMObject::_lookupContObjID($a_pg_id); } // @todo: optimize include_once "./Services/COPage/classes/class.ilPageMultiLang.php"; $ml = new ilPageMultiLang("lm", $a_lm_id); // select $query = "SELECT * FROM lm_data WHERE obj_id = " . $ilDB->quote($a_pg_id, "integer"); $pg_set = $ilDB->query($query); $pg_rec = $ilDB->fetchAssoc($pg_set); if ($a_lang != "-" && $ml->getActivated() && in_array($a_lang, $ml->getLanguages())) { include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php"; $lmobjtrans = new ilLMObjTranslation($a_pg_id, $a_lang); if ($lmobjtrans->getTitle() != "") { $pg_rec["title"] = $lmobjtrans->getTitle(); } } if ($a_mode == IL_NO_HEADER && !$a_force_content) { return ""; } $tree = new ilTree($pg_rec["lm_id"]); $tree->setTableNames('lm_tree', 'lm_data'); $tree->setTreeTablePK("lm_id"); if ($a_mode == IL_PAGE_TITLE) { $nr = ""; return $nr . $pg_rec["title"]; } if ($tree->isInTree($pg_rec["obj_id"])) { $pred_node = $tree->fetchPredecessorNode($pg_rec["obj_id"], "st"); $childs = $tree->getChildsByType($pred_node["obj_id"], "pg"); $cnt_str = ""; if (count($childs) > 1) { $cnt = 0; foreach ($childs as $child) { include_once "./Modules/LearningModule/classes/class.ilLMPage.php"; $active = ilLMPage::_lookupActive($child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"]), $a_time_scheduled_activation); if (!$active) { $act_data = ilLMPage::_lookupActivationData((int) $child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"])); if ($act_data["show_activation_info"] && ilUtil::now() < $act_data["activation_start"]) { $active = true; } } if ($child["type"] != "pg" || $active) { $cnt++; } if ($child["obj_id"] == $pg_rec["obj_id"]) { $cur_cnt = $cnt; } } if ($cnt > 1) { $cnt_str = " (" . $cur_cnt . "/" . $cnt . ")"; } } require_once "./Modules/LearningModule/classes/class.ilStructureObject.php"; //$struct_obj =& new ilStructureObject($pred_node["obj_id"]); //return $struct_obj->getTitle(); return ilStructureObject::_getPresentationTitle($pred_node["obj_id"], $a_include_numbers) . $cnt_str; //return $pred_node["title"].$cnt_str; } else { return $pg_rec["title"]; } }
/** * get presentation title * */ static function _getPresentationTitle($a_st_id, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_lm_id = 0, $a_lang = "-") { global $ilDB; if ($a_lm_id == 0) { $a_lm_id = ilLMObject::_lookupContObjID($a_st_id); } if ($a_lm_id == 0) { return ""; } // this is optimized when ilLMObject::preloadDataByLM is invoked (e.g. done in ilLMExplorerGUI) $title = ilLMObject::_lookupTitle($a_st_id); // this is also optimized since ilObjectTranslation re-uses instances for one lm include_once "./Services/Object/classes/class.ilObjectTranslation.php"; $ot = ilObjectTranslation::getInstance($a_lm_id); $languages = $ot->getLanguages(); if ($a_lang != "-" && $ot->getContentActivated() && isset($languages[$a_lang])) { include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php"; $lmobjtrans = new ilLMObjTranslation($a_st_id, $a_lang); if ($lmobjtrans->getTitle() != "") { $title = $lmobjtrans->getTitle(); } } include_once "./Modules/LearningModule/classes/class.ilLMTree.php"; $tree = ilLMTree::getInstance($a_lm_id); if ($a_include_numbers) { // this is optimized, since isInTree is cached if ($tree->isInTree($a_st_id)) { // optimization needed from here // get chapter tree node $query = "SELECT * FROM lm_tree WHERE child = " . $ilDB->quote($a_st_id, "integer") . " AND lm_id = " . $ilDB->quote($a_lm_id, "integer"); $tree_set = $ilDB->query($query); $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC); $depth = $tree_node["depth"]; $nr = $tree->getChildSequenceNumber($tree_node, "st") . " "; for ($i = $depth - 1; $i > 1; $i--) { // get next parent tree node $query = "SELECT * FROM lm_tree WHERE child = " . $ilDB->quote($tree_node["parent"], "integer") . " AND lm_id = " . $ilDB->quote($a_lm_id, "integer"); $tree_set = $ilDB->query($query); $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC); $seq = $tree->getChildSequenceNumber($tree_node, "st"); $nr = $seq . "." . $nr; } } } return $nr . $title; }
/** * Copy all translations of an object * * @param int $a_source_id source id * @param int $a_target_id target */ static function copy($a_source_id, $a_target_id) { global $ilDB; $set = $ilDB->query("SELECT * FROM lm_data_transl " . " WHERE id = " . $ilDB->quote($a_source_id, "integer")); while ($rec = $ilDB->fetchAssoc($set)) { $lmobjtrans = new ilLMObjTranslation($a_target_id, $rec["lang"]); $lmobjtrans->setTitle($rec["title"]); $lmobjtrans->save(); } }