khanat-opennel-code/code/web/app/app_achievements_admin/class/AdmDispatcher_trait.php

70 lines
1.6 KiB
PHP
Raw Normal View History

2013-11-13 19:31:08 +00:00
<?php
trait AdmDispatcher {
/*---------------------------
The AdminDispatcher trait provides functions to pass
manipulation requests on to child nodes.
Classes using this trait must be inherited from Parentum!
The "path" is definded a an enumeration of id numbers along
the structural path, seperated by ";",
eg.: 1;2;5;18
This will try to return the node with the id "18" that is a child
of "5", which is child of "2", which is child of "1". "1" in this
case is the first instance that calls getElementByPath() without
arguments.
---------------------------*/
function insertNode($n) {
$n->setParent($this);
$n->insert();
$this->addChild($n);
}
function removeNode($id) {
$res = $this->getChildDataByID($id);
if($res != null) {
$res->delete_me();
$this->removeChild($id);
}
}
function updateNode($id) { // PROBABLY USELESS!
$res = $this->getChildDataByID($id);
if($res != null) {
$res->update();
}
}
function getPathID($path = "") {
if($path != "") {
$path = ";".$path;
}
$path = $this->getID().$path;
if($this->parent != null) {
return $this->parent->getPathID($path);
}
return $path;
}
function getElementByPath($pid) {
$tmp = explode(";",$pid);
if($tmp[0] == $this->getID()) {
if(sizeof($tmp) > 1) {
$c = $this->getChildDataByID($tmp[1]);
if($c != null) {
unset($tmp[0]);
return $c->getElementByPath(implode(";",$tmp));
}
return null;
}
else {
return $this;
}
}
return null;
}
}
?>