示例#1
0
 /**
  * split page at hierarchical id
  *
  * the main reason for this method being static is that a lm page
  * object is not available within ilPageContentGUI where this method
  * is called
  */
 function _splitPage($a_page_id, $a_pg_parent_type, $a_hier_id)
 {
     // get content object (learning module / digilib book)
     $lm_id = ilLMObject::_lookupContObjID($a_page_id);
     $type = ilObject::_lookupType($lm_id, false);
     switch ($type) {
         case "lm":
             include_once "./Modules/LearningModule/classes/class.ilObjLearningModule.php";
             $cont_obj = new ilObjLearningModule($lm_id, false);
             break;
         case "dbk":
             include_once "./Modules/LearningModule/classes/class.ilObjDlBook.php";
             $cont_obj = new ilObjDlBook($lm_id, false);
             break;
     }
     $source_lm_page = new ilLMPageObject($cont_obj, $a_page_id);
     // create new page
     $lm_page = new ilLMPageObject($cont_obj);
     $lm_page->setTitle($source_lm_page->getTitle());
     $lm_page->setLMId($source_lm_page->getLMId());
     $lm_page->setType($source_lm_page->getType());
     $lm_page->setDescription($source_lm_page->getDescription());
     $lm_page->create(true);
     // copy complete content of source page to new page
     $source_page = $source_lm_page->getPageObject();
     $page = $lm_page->getPageObject();
     $page->setXMLContent($source_page->copyXMLContent());
     //echo htmlentities($source_page->copyXMLContent());
     $page->buildDom(true);
     $page->update();
     //		echo "-".$page->getId()."-".$page->getParentType()."-";
     // copy meta data
     include_once "Services/MetaData/classes/class.ilMD.php";
     $md = new ilMD($source_lm_page->getLMId(), $a_page_id, $source_lm_page->getType());
     $md->cloneMD($source_lm_page->getLMId(), $lm_page->getId(), $source_lm_page->getType());
     // insert new page in tree (after original page)
     $tree = new ilTree($cont_obj->getId());
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     if ($tree->isInTree($source_lm_page->getId())) {
         $parent_node = $tree->getParentNodeData($source_lm_page->getId());
         $tree->insertNode($lm_page->getId(), $parent_node["child"], $source_lm_page->getId());
     }
     // remove all nodes < hierarchical id from new page (incl. update)
     $page->addHierIds();
     $page->deleteContentBeforeHierId($a_hier_id);
     //		$page->update();
     // remove all nodes >= hierarchical id from source page
     $source_page->buildDom();
     $source_page->addHierIds();
     $source_page->deleteContentFromHierId($a_hier_id);
     return $lm_page;
 }
 /**
  * copy page
  */
 function copy($a_target_lm)
 {
     // copy page
     $lm_page = new ilLMPageObject($a_target_lm);
     $lm_page->setTitle($this->getTitle());
     $lm_page->setLayout($this->getLayout());
     $lm_page->setLMId($a_target_lm->getId());
     $lm_page->setType($this->getType());
     $lm_page->setDescription($this->getDescription());
     $lm_page->setImportId("il__pg_" . $this->getId());
     $lm_page->create(true);
     // setting "upload" flag to true prevents creating of meta data
     // check whether export id already exists in the target lm
     $del_exp_id = false;
     $exp_id = ilLMPageObject::getExportId($this->getLMId(), $this->getId());
     if (trim($exp_id) != "") {
         if (ilLMPageObject::existsExportID($a_target_lm->getId(), $exp_id)) {
             $del_exp_id = true;
         }
     }
     // copy meta data
     include_once "Services/MetaData/classes/class.ilMD.php";
     $md = new ilMD($this->getLMId(), $this->getId(), $this->getType());
     $new_md = $md->cloneMD($a_target_lm->getId(), $lm_page->getId(), $this->getType());
     // check whether export id already exists in the target lm
     if ($del_exp_id) {
         ilLMPageObject::saveExportId($a_target_lm->getId(), $lm_page->getId(), "");
     } else {
         ilLMPageObject::saveExportId($a_target_lm->getId(), $lm_page->getId(), trim($exp_id));
     }
     // copy page content and activation
     $page = $lm_page->getPageObject();
     $page->setXMLContent($this->page_object->copyXMLContent());
     $page->setActive($this->page_object->getActive());
     $page->setActivationStart($this->page_object->getActivationStart());
     $page->setActivationEnd($this->page_object->getActivationEnd());
     $page->buildDom();
     $page->update();
     return $lm_page;
 }