ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilPageContent.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 
17 abstract class ilPageContent
18 {
19  //var $type; // type
20  var $hier_id; // hierarchical editing id
21  var $node; // node in page xml
22  var $dom; // dom object
23 
30  final function __construct($a_dom)
31  {
32  $this->dom = $a_dom;
33  $this->init();
34  if ($this->getType() == "")
35  {
36  die ("Error: ilPageContent::init() did not set type");
37  }
38  }
39 
44  abstract function init();
45 
51  final protected function setType($a_type)
52  {
53  $this->type = $a_type;
54  }
55 
61  function getType()
62  {
63  return $this->type;
64  }
65 
71  function setNode(&$a_node)
72  {
73  $this->node =& $a_node;
74  }
75 
76 
82  function &getNode()
83  {
84  return $this->node;
85  }
86 
87 
93  function setHierId($a_hier_id)
94  {
95  $this->hier_id = $a_hier_id;
96  }
97 
101  function getHierId()
102  {
103  return $this->hier_id;
104  }
105 
106 
110  function lookupHierId()
111  {
112  return $this->node->get_attribute("HierId");
113  }
114 
120  function readHierId()
121  {
122  if (is_object($this->node))
123  {
124  return $this->node->get_attribute("HierId");
125  }
126  }
127 
133  function setPcId($a_pcid)
134  {
135  $this->pcid = $a_pcid;
136  }
137 
143  function getPCId()
144  {
145  return $this->pcid;
146  }
147 
148 
154  function readPCId()
155  {
156  if (is_object($this->node))
157  {
158  return $this->node->get_attribute("PCID");
159  }
160  }
161 
165  function writePCId($a_pc_id)
166  {
167  if (is_object($this->node))
168  {
169  $this->node->set_attribute("PCID", $a_pc_id);
170  }
171  }
172 
180  final static function incEdId($ed_id)
181  {
182  $id = explode("_", $ed_id);
183  $id[count($id) - 1]++;
184 
185  return implode($id, "_");
186  }
187 
195  final static function decEdId($ed_id)
196  {
197  $id = explode("_", $ed_id);
198  $id[count($id) - 1]--;
199 
200  return implode($id, "_");
201  }
202 
211  final static function haveSameContainer($ed_id1, $ed_id2)
212  {
213  $id1 = explode("_", $ed_id1);
214  $id2 = explode("_", $ed_id1);
215  if(count($id1) == count($id2))
216  {
217  array_pop($id1);
218  array_pop($id2);
219  foreach ($id1 as $key => $id)
220  {
221  if($id != $id2[$key])
222  {
223  return false;
224  }
225  }
226  return true;
227  }
228  return false;
229  }
230 
234  static function sortHierIds($a_array)
235  {
236  uasort($a_array, array("ilPageContent", "isGreaterHierId"));
237 
238  return $a_array;
239  }
240 
244  function isGreaterHierId($a, $b)
245  {
246  $a_arr = explode("_", $a);
247  $b_arr = explode("_", $b);
248  for ($i = 0; $i < count($a_arr); $i++)
249  {
250  if ((int) $a_arr[$i] > (int) $b_arr[$i])
251  {
252  return true;
253  }
254  else if ((int) $a_arr[$i] < (int) $b_arr[$i])
255  {
256  return false;
257  }
258  }
259  return false;
260  }
261 
268  function setEnabled($value)
269  {
270  if (is_object($this->node))
271  {
272  $this->node->set_attribute("Enabled", $value);
273  }
274  }
275 
279  function enable()
280  {
281  $this->setEnabled("True");
282  }
283 
287  function disable()
288  {
289  $this->setEnabled("False");
290  }
291 
297  final function isEnabled()
298  {
299  if (is_object($this->node) && $this->node->has_attribute("Enabled"))
300  {
301  $compare = $this->node->get_attribute("Enabled");
302  }
303  else
304  {
305  $compare = "True";
306  }
307 
308  return strcasecmp($compare,"true") == 0;
309  }
310 
314  function createPageContentNode($a_set_this_node = true)
315  {
316  $node = $this->dom->create_element("PageContent");
317  if ($a_set_this_node)
318  {
319  $this->node = $node;
320  }
321  return $node;
322  }
323 
327 /*
328  function setAnchor($a_name)
329  {
330  $node = $this->getNode();
331 
332  ilDOMUtil::setFirstOptionalElement($this->dom, $node, "Anchor",
333  array("BibItemIdentifier"), $a_name, array());
334  }*/
335 
339 /*
340  function getAnchor()
341  {
342  $node = $this->getNode();
343  $childs = $node->child_nodes();
344 
345  for ($i=0; $i<count($childs); $i++)
346  {
347  if ($childs[$i]->node_name() == "Anchor")
348  {
349  return $childs[$i]->get_content();
350  }
351  }
352 
353  return "";
354  }
355 */
356 }
357 ?>