/** * Check if internal link refers to a valid target * * @param string $a_type target type ("PageObject" | "StructureObject" | * "GlossaryItem" | "MediaObject") * @param string $a_target target id, e.g. "il__pg_244") * * @return boolean true/false */ function _exists($a_type, $a_target) { global $tree; switch ($a_type) { case "PageObject": case "StructureObject": return ilLMObject::_exists($a_target); break; case "GlossaryItem": return ilGlossaryTerm::_exists($a_target); break; case "MediaObject": return ilObjMediaObject::_exists($a_target); break; case "RepositoryItem": if (is_int(strpos($a_target, "_"))) { $ref_id = ilInternalLink::_extractObjIdOfTarget($a_target); return $tree->isInTree($ref_id); } break; } return false; }
/** * Check if internal link refers to a valid target * * @param string $a_type target type ("PageObject" | "StructureObject" | * "GlossaryItem" | "MediaObject") * @param string $a_target target id, e.g. "il__pg_244") * * @return boolean true/false */ function _exists($a_type, $a_target) { global $tree; switch ($a_type) { case "PageObject": case "StructureObject": return ilLMObject::_exists($a_target); break; case "GlossaryItem": return ilGlossaryTerm::_exists($a_target); break; case "MediaObject": return ilObjMediaObject::_exists($a_target); break; case "WikiPage": include_once "./Modules/Wiki/classes/class.ilWikiPage.php"; return ilWikiPage::_exists("wiki", (int) $a_target); break; case "RepositoryItem": if (is_int(strpos($a_target, "_"))) { $ref_id = ilInternalLink::_extractObjIdOfTarget($a_target); return $tree->isInTree($ref_id); } break; } return false; }
/** * Standard Version of Fill Row. Most likely to * be overwritten by derived class. */ protected function fillRow($a_set) { global $lng, $ilCtrl; $this->tpl->setVariable("TXT_PAGE_TITLE", $a_set["title"]); $ilCtrl->setParameterByClass("illmpageobjectgui", "obj_id", $a_set["obj_id"]); $this->tpl->setVariable("HREF_PAGE", $ilCtrl->getLinkTargetByClass("illmpageobjectgui", "edit")); include_once "./Modules/LearningModule/classes/class.ilLMPage.php"; $page_object = new ilLMPage($a_set["obj_id"]); $page_object->buildDom(); $int_links = $page_object->getInternalLinks(); foreach ($int_links as $link) { $target = $link["Target"]; if (substr($target, 0, 4) == "il__") { $target_arr = explode("_", $target); $target_id = $target_arr[count($target_arr) - 1]; $type = $link["Type"]; switch ($type) { case "PageObject": $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("pg")); if (ilLMObject::_exists($target_id)) { $lm_id = ilLMObject::_lookupContObjID($target_id); $add_str = $lm_id != $this->lm_id ? " (" . ilObject::_lookupTitle($lm_id) . ")" : ""; $this->tpl->setVariable("TXT_LINK_TITLE", ilLMObject::_lookupTitle($target_id) . $add_str); } else { $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target_id . "]" . "</b>"); } $this->tpl->parseCurrentBlock(); break; case "StructureObject": $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("st")); if (ilLMObject::_exists($target_id)) { $lm_id = ilLMObject::_lookupContObjID($target_id); $add_str = $lm_id != $this->lm_id ? " (" . ilObject::_lookupTitle($lm_id) . ")" : ""; $this->tpl->setVariable("TXT_LINK_TITLE", ilLMObject::_lookupTitle($target_id) . $add_str); } else { $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target_id . "]" . "</b>"); } $this->tpl->parseCurrentBlock(); break; case "GlossaryItem": $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("cont_term")); include_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php"; if (ilGlossaryTerm::_exists($target_id)) { $this->tpl->setVariable("TXT_LINK_TITLE", ilGlossaryTerm::_lookGlossaryTerm($target_id)); } else { $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target_id . "]" . "</b>"); } $this->tpl->parseCurrentBlock(); break; case "MediaObject": $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("mob")); if (ilObject::_exists($target_id)) { $this->tpl->setVariable("TXT_LINK_TITLE", ilObject::_lookupTitle($target_id)); } else { $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target_id . "]" . "</b>"); } $this->tpl->parseCurrentBlock(); break; case "RepositoryItem": $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("cont_repository_item")); $obj_type = ilObject::_lookupType($target_id, true); $obj_id = ilObject::_lookupObjId($target_id); if (ilObject::_exists($obj_id)) { $this->tpl->setVariable("TXT_LINK_TITLE", ilObject::_lookupTitle($obj_id) . " (" . $lng->txt("obj_" . $obj_type) . ")"); } else { $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target_id . "]" . "</b>"); } $this->tpl->parseCurrentBlock(); break; } } else { $type = $link["Type"]; switch ($type) { case "PageObject": $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("pg")); break; case "StructureObject": $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("st")); break; case "GlossaryItem": $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("cont_term")); break; case "MediaObject": $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("mob")); break; case "RepositoryItem": $this->tpl->setVariable("TXT_LINK_TYPE", $lng->txt("cont_repository_item")); break; } $this->tpl->setCurrentBlock("link"); $this->tpl->setVariable("TXT_MISSING", "<b>" . $lng->txt("cont_target_missing") . " [" . $target . "]" . "</b>"); $this->tpl->parseCurrentBlock(); } } }