ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilPCContentTemplate.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once("./Services/COPage/classes/class.ilPageContent.php");
6 
17 {
21  public function init()
22  {
23  $this->setType("templ");
24  }
25 
29  public function setNode($a_node)
30  {
31  parent::setNode($a_node); // this is the PageContent node
32  }
33 
42  public function create($a_pg_obj, $a_hier_id, $a_pc_id, $a_page_templ)
43  {
44  $source_id = explode(":", $a_page_templ);
45  $source_page = ilPageObjectFactory::getInstance($source_id[1], $source_id[0]);
46  $source_page->buildDom();
47  $source_page->addHierIds();
48  $hier_ids = $source_page->getHierIds();
49 
50  $copy_ids = array();
51  foreach ($hier_ids as $hier_id) {
52  // move top level nodes only
53  if (!is_int(strpos($hier_id, "_"))) {
54  if ($hier_id != "pg" && $hier_id >= $a_hid) {
55  $copy_ids[] = $hier_id;
56  }
57  }
58  }
59  asort($copy_ids);
60 
61  // get the target parent node
62  $pos = explode("_", $a_pos);
63  array_pop($pos);
64  $parent_pos = implode($pos, "_");
65  if ($parent_pos != "") {
66  $target_parent = $a_pg_obj->getContentNode($parent_pos);
67  } else {
68  $target_parent = $a_pg_obj->getNode();
69  }
70 
71  //$source_parent = $source_page->getContentNode("pg");
72 
73  $curr_node = $a_pg_obj->getContentNode($a_hier_id, $a_pcid);
74 
75  foreach ($copy_ids as $copy_id) {
76  $source_node = $source_page->getContentNode($copy_id);
77  $new_node = $source_node->clone_node(true);
78  $new_node->unlink_node($new_node);
79 
80  if ($succ_node = $curr_node->next_sibling()) {
81  $succ_node->insert_before($new_node, $succ_node);
82  } else {
83  //echo "movin doin append_child";
84  $target_parent->append_child($new_node);
85  }
86 
87  //$xpc = xpath_new_context($a_pg_obj->getDomDoc());
88  $xpath = new DOMXpath($a_pg_obj->getDomDoc());
89  //var_dump($new_node->myDOMNode);
90  //echo "-".$new_node->get_attribute("PCID")."-"; exit;
91  if ($new_node->get_attribute("PCID") != "") {
92  $new_node->set_attribute("PCID", "");
93  }
94  $els = $xpath->query(".//*[@PCID]", $new_node->myDOMNode);
95  foreach ($els as $el) {
96  $el->setAttribute("PCID", "");
97  }
98  $curr_node = $new_node;
99  }
100 
101  $a_pg_obj->update();
102 
103  //$this->node = $this->createPageContentNode();
104 
105  /*$a_pg_obj->insertContent($this, $a_hier_id, IL_INSERT_AFTER, $a_pc_id);
106  $this->map_node =& $this->dom->create_element("Map");
107  $this->map_node =& $this->node->append_child($this->map_node);
108  $this->map_node->set_attribute("Latitude", "0");
109  $this->map_node->set_attribute("Longitude", "0");
110  $this->map_node->set_attribute("Zoom", "3");*/
111  }
112 }
init()
Init page content component.
Content templates are not existing in the page.
setType($a_type)
Set Type.
Class ilPageContent.
Create styles array
The data for the language used.
create($a_pg_obj, $a_hier_id, $a_pc_id, $a_page_templ)
Insert content template.
static getInstance($a_parent_type, $a_id=0, $a_old_nr=0, $a_lang="-")
Get page object instance.
setNode($a_node)
Set node (in fact this will never be called, since these types of nodes do not exist.