2012-06-25 13:04:51 +00:00
|
|
|
<?php
|
|
|
|
class CSRPerk extends AchPerk implements CSR {
|
2012-08-07 15:41:50 +00:00
|
|
|
function grantNode($path,$player) {
|
|
|
|
#echo "start: ".$path." id: ".$this->getID()."<br>";
|
|
|
|
if(is_numeric($path)) {
|
|
|
|
//it's me (id == numeric)
|
|
|
|
if($this->getID() == $path) {
|
|
|
|
$this->grant($player);
|
|
|
|
#echo "grant()<br>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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()<br>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#echo "end<br>";
|
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
2012-06-25 13:04:51 +00:00
|
|
|
|
2012-07-02 16:56:13 +00:00
|
|
|
function CSRPerk($data,$parent) {
|
|
|
|
parent::__construct($data,$parent);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function makeChild($d) {
|
|
|
|
return new CSRObjective($d,$this);
|
2012-06-25 13:04:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function grant($pid) {
|
|
|
|
global $DBc;
|
|
|
|
|
|
|
|
$DBc->sqlQuery("INSERT INTO ach_player_perk (app_perk,app_player,app_date) VALUES ('".$this->getID()."','".$pid."','".time()."')");
|
2012-07-02 16:56:13 +00:00
|
|
|
$this->done = time();
|
|
|
|
#echo $this->idx."<br>";
|
2012-07-08 16:11:25 +00:00
|
|
|
$this->parent->setPerkDone($this->id);
|
2012-06-25 13:04:51 +00:00
|
|
|
|
2012-07-02 16:56:13 +00:00
|
|
|
$iter = $this->getIterator();
|
|
|
|
while($iter->hasNext()) {
|
|
|
|
$curr = $iter->getNext();
|
|
|
|
$curr->grant($pid);
|
2012-06-25 13:04:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function deny($pid) {
|
|
|
|
global $DBc;
|
|
|
|
|
|
|
|
$DBc->sqlQuery("DELETE FROM ach_player_perk WHERE app_perk='".$this->getID()."' AND app_player='".$pid."'");
|
2012-07-02 16:56:13 +00:00
|
|
|
$this->done = 0;
|
2012-07-08 16:11:25 +00:00
|
|
|
$this->parent->setPerkOpen($this->id);
|
2012-06-25 13:04:51 +00:00
|
|
|
|
2012-07-02 16:56:13 +00:00
|
|
|
$iter = $this->getIterator();
|
|
|
|
while($iter->hasNext()) {
|
|
|
|
$curr = $iter->getNext();
|
|
|
|
$curr->deny($pid);
|
2012-06-25 13:04:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|