本文整理汇总了PHP中ilLMObject::_getAllObjectsForImportId方法的典型用法代码示例。如果您正苦于以下问题:PHP ilLMObject::_getAllObjectsForImportId方法的具体用法?PHP ilLMObject::_getAllObjectsForImportId怎么用?PHP ilLMObject::_getAllObjectsForImportId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ilLMObject
的用法示例。
在下文中一共展示了ilLMObject::_getAllObjectsForImportId方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: updateInternalLinks
/**
* Update internal links, after multiple pages have been copied
*/
static function updateInternalLinks($a_copied_nodes, $a_parent_type = "lm")
{
$all_fixes = array();
foreach ($a_copied_nodes as $original_id => $copied_id) {
$copied_type = ilLMObject::_lookupType($copied_id);
$copy_lm = ilLMObject::_lookupContObjID($copied_id);
if ($copied_type == "pg") {
//
// 1. Outgoing links from the copied page.
//
//$targets = ilInternalLink::_getTargetsOfSource($a_parent_type.":pg", $copied_id);
include_once "./Modules/LearningModule/classes/class.ilLMPage.php";
$tpg = new ilLMPage($copied_id);
$tpg->buildDom();
$il = $tpg->getInternalLinks();
$targets = array();
foreach ($il as $l) {
$targets[] = array("type" => ilInternalLink::_extractTypeOfTarget($l["Target"]), "id" => (int) ilInternalLink::_extractObjIdOfTarget($l["Target"]), "inst" => (int) ilInternalLink::_extractInstOfTarget($l["Target"]));
}
$fix = array();
foreach ($targets as $target) {
if (($target["inst"] == 0 || ($target["inst"] = IL_INST_ID)) && ($target["type"] == "pg" || $target["type"] == "st")) {
// first check, whether target is also within the copied set
if ($a_copied_nodes[$target["id"]] > 0) {
$fix[$target["id"]] = $a_copied_nodes[$target["id"]];
} else {
// now check, if a copy if the target is already in the same lm
// only if target is not already in the same lm!
$trg_lm = ilLMObject::_lookupContObjID($target["id"]);
if ($trg_lm != $copy_lm) {
$lm_data = ilLMObject::_getAllObjectsForImportId("il__" . $target["type"] . "_" . $target["id"]);
$found = false;
foreach ($lm_data as $item) {
if (!$found && $item["lm_id"] == $copy_lm) {
$fix[$target["id"]] = $item["obj_id"];
$found = true;
}
}
}
}
}
}
// outgoing links to be fixed
if (count($fix) > 0) {
//echo "<br>--".$copied_id;
//var_dump($fix);
$t = ilObject::_lookupType($copy_lm);
if (is_array($all_fixes[$t . ":" . $copied_id])) {
$all_fixes[$t . ":" . $copied_id] += $fix;
} else {
$all_fixes[$t . ":" . $copied_id] = $fix;
}
}
}
if ($copied_type == "pg" || $copied_type == "st") {
//
// 2. Incoming links to the original pages
//
// A->B A2 (A+B currently copied)
// A->C B2
// B->A
// C->A C2->A (C already copied)
$original_lm = ilLMObject::_lookupContObjID($original_id);
$original_type = ilObject::_lookupType($original_lm);
if ($original_lm != $copy_lm) {
// This gets sources that link to A+B (so we have C here)
// (this also does already the trick when instance map areas are given in C)
// int_link, where target_type, target_id, target_inst -> ok
$sources = ilInternalLink::_getSourcesOfTarget($copied_type, $original_id, 0);
// mobs linking to $original_id
// map_area, where link_type, target -> ok
$mobs = ilMapArea::_getMobsForTarget("int", "il__" . $copied_type . "_" . $original_id);
// pages using these mobs
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
foreach ($mobs as $mob) {
// mob_usage, where id -> ok
// mep_item, where foreign_id, type -> ok
// mep_tree, where child -> already existed
// il_news_item, where mob_id -> ok
// map_area, where link_type, target -> aready existed
// media_item, where id -> already existed
// personal_clipboard, where item_id, type -> ok
$usages = ilObjMediaObject::lookupUsages($mob);
foreach ($usages as $usage) {
if ($usage["type"] == "lm:pg" | $usage["type"] == "lm:st") {
$sources[] = $usage;
}
}
}
$fix = array();
foreach ($sources as $source) {
$stype = explode(":", $source["type"]);
$source_type = $stype[1];
if ($source_type == "pg" || $source_type == "st") {
// first of all: source must be in original lm
$src_lm = ilLMObject::_lookupContObjID($source["id"]);
if ($src_lm == $original_lm) {
//.........这里部分代码省略.........