/** * Copy chapter */ function copy($a_target_slm) { $chap = new ilSCORM2004Chapter($a_target_slm); $chap->setTitle($this->getTitle()); if ($this->getSLMId() != $a_target_slm->getId()) { $chap->setImportId("il__chap_" . $this->getId()); } $chap->setSLMId($a_target_slm->getId()); $chap->setType($this->getType()); $chap->setDescription($this->getDescription()); $chap->create(true); $a_copied_nodes[$this->getId()] = $chap->getId(); // copy meta data include_once "Services/MetaData/classes/class.ilMD.php"; $md = new ilMD($this->getSLMId(), $this->getId(), $this->getType()); $new_md =& $md->cloneMD($a_target_slm->getId(), $chap->getId(), $this->getType()); return $chap; }
/** * Insert (multiple) chapters at node */ function insertChapter($a_redirect = true) { global $ilCtrl, $lng; include_once "./Modules/Scorm2004/classes/class.ilSCORM2004OrganizationHFormGUI.php"; $slm_tree =& new ilTree($this->object->getId()); $slm_tree->setTreeTablePK("slm_id"); $slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node'); $num = ilSCORM2004OrganizationHFormGUI::getPostMulti(); $node_id = ilSCORM2004OrganizationHFormGUI::getPostNodeId(); if (!ilSCORM2004OrganizationHFormGUI::getPostFirstChild()) { $parent_id = $slm_tree->getParentId($node_id); $target = $node_id; } else { $parent_id = $node_id; $target = IL_FIRST_NODE; } include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Chapter.php"; include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Node.php"; $chap_ids = array(); for ($i = 1; $i <= $num; $i++) { $chap = new ilSCORM2004Chapter($this->object); $chap->setTitle($lng->txt("sahs_new_chapter")); $chap->setSLMId($this->object->getId()); $chap->create(); ilSCORM2004Node::putInTree($chap, $parent_id, $target); $chap_ids[] = $chap->getId(); } $chap_ids = array_reverse($chap_ids); $chap_ids = implode($chap_ids, ":"); if ($a_redirect) { $ilCtrl->setParameter($this, "highlight", $chap_ids); $ilCtrl->redirect($this, "showOrganization", "node_" . $node_id); } return array("node_id" => $node_id, "items" => $chap_ids); }
/** * function import Template * * @return success of import * @author Hendrik Holtmann */ public function importTemplate($a_target, $a_object, $a_parent, $node) { global $ilDB; switch ($node->getAttribute('type')) { case "lesson": if ($this->parentchapter == true) { $chap = new ilSCORM2004SeqChapter($a_object); } else { $chap = new ilSCORM2004Chapter($a_object); } $chap->setTitle($node->getElementsByTagName("title")->item(0)->nodeValue); $chap->setSLMId($a_object->getId()); $chap->create(); $this->sahs_sc13_treeId = $chap->getId(); ilSCORM2004Node::putInTree($chap, $a_parent, $a_target); $a_parent = $this->sahs_sc13_treeId; if ($this->parentchapter == true) { $ilDB->manipulate("INSERT INTO sahs_sc13_seq_assign (identifier, sahs_sc13_tree_node_id) VALUES " . "(" . $ilDB->quote($this->getIdentifier(), "text") . "," . $ilDB->quote($this->sahs_sc13_treeId, "integer") . ")"); $this->parentchapter = false; } $new_id = $chap->getId(); break; case "sco": $sco = new ilSCORM2004Sco($a_object); $sco->setTitle($node->getElementsByTagName("title")->item(0)->nodeValue); $sco->setSLMId($a_object->getId()); $sco->create(false, true); $this->sahs_sc13_treeId = $sco->getId(); ilSCORM2004Node::putInTree($sco, $a_parent, $target); $new_id = $sco->getId(); break; } $seq_node = $node->getElementsByTagName("sequencing")->item(0); $obj_node = $seq_node->getElementsByTagName("objectives")->item(0); //addtitle if ($obj_node) { foreach ($obj_node->childNodes as $objchild) { if ($objchild->nodeName === "objective" || $objchild->nodeName === "primaryObjective") { $title = $objchild->getAttribute('objectiveID'); $objchild->setAttribute("title", $title); $i++; } } } $seq_item = new ilSCORM2004Item(); $seq_item->setTreeNodeId($this->sahs_sc13_treeId); $seq_item->setImportid($this->importId); $seq_item->setNocopy($seq_node->getAttribute('nocopy')); $seq_item->setNodelete($seq_node->getAttribute('nodelete')); $seq_item->setNomove($seq_node->getAttribute('nomove')); $seq_doc = new DOMDocument(); $toadd = $seq_doc->importNode($seq_node, true); $seq_doc->appendChild($toadd); //generate Unique ObjectiveIDs for context //@targetObjectiveID $xpath_obj = new DOMXPath($seq_doc); $found_nodes = $xpath_obj->query('//@objectiveID | //@referencedObjective | //@targetObjectiveID'); for ($i = 0; $i < $found_nodes->length; $i++) { $element = null; $val = $found_nodes->item($i)->value; $uid = $this->sahs_sc13_treeId; if ($found_nodes->item($i)->name == "targetObjectiveID") { $uid = $this->importId; } $val = strtolower(preg_replace('/ +/', '_', $val) . "_" . $uid); $element = $found_nodes->item($i)->ownerElement; $element->setAttribute($found_nodes->item($i)->name, $val); } $seq_item->setDom($seq_doc); $seq_item->insert(); foreach ($node->childNodes as $child) { if ($child->nodeName === "item") { $this->importTemplate($a_target, $a_object, $a_parent, $child); } } return $new_id; }