getID()."
"; if(is_numeric($path)) { //it's me (id == numeric) if($this->getID() == $path) { $this->grant($player); #echo "grant()
"; } } else { //get child with the next level id and dispatch $tmp = explode(";",$path); $c = $this->getChildDataByID($tmp[1]); #echo "...".$tmp[1]; if($c != null) { // check if it's really own child unset($tmp[0]); $c->grantNode(implode(";",$tmp),$player); #echo "grantNode()
"; } } #echo "end
"; } function denyNode($path,$player) { if(is_numeric($path)) { //it's me (id == numeric) if($this->getID() == $path) { $this->deny($player); } } else { //get child with the next level id and dispatch $tmp = explode(";",$path); if($tmp[0] == $this->getID()) { // it's my id! $c = $this->getChildDataByID($tmp[1]); if($c != null) { // check if it's really own child unset($tmp[0]); $c->denyNode(implode(";",$tmp),$player); } } } } function getPath($path = "") { if($path != "") { $path = ";".$path; } $path = $this->getID().$path; if($this->hasParent()) { $path = $this->parent->getPath($path); } return $path; } private function hasParent() { return ($this->parent != null); } ######################### function CSRObjective($data,$parent) { parent::__construct($data,$parent); global $DBc; $res = $DBc->sqlQuery("SELECT atom_id FROM ach_atom WHERE atom_objective='".$this->getID()."'"); $sz = sizeof($res); for($i=0;$i<$sz;$i++) { $this->addChild($this->makeChild($res[$i])); } } protected function makeChild($d) { return new CSRAtom($d,$this); } function grant($pid) { global $DBc; $DBc->sqlQuery("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$this->getID()."','".$pid."','".time()."')"); $this->done = 1; $this->progress = $this->value; $iter = $this->getIterator(); while($iter->hasNext()) { $curr = $iter->getNext(); $curr->grant($pid); } } function deny($pid) { global $DBc; $DBc->sqlQuery("DELETE FROM ach_player_objective WHERE apo_objective='".$this->getID()."' AND apo_player='".$pid."'"); $this->done = 0; $this->progress = 0; $iter = $this->getIterator(); while($iter->hasNext()) { $curr = $iter->getNext(); $curr->deny($pid); } } } ?>