diff --git a/code/web/app/app_achievements/class/AVLTree_class.php b/code/web/app/app_achievements/class/AVLTree_class.php
index cf2270c3c..61944bde5 100644
--- a/code/web/app/app_achievements/class/AVLTree_class.php
+++ b/code/web/app/app_achievements/class/AVLTree_class.php
@@ -193,7 +193,7 @@
return $r;
}
- $p = $r->getLeft();
+ $p = $r;
while($p->getLeft() != null) {
$p = $p->getLeft();
}
diff --git a/code/web/app/app_achievements/class/AchAchievement_class.php b/code/web/app/app_achievements/class/AchAchievement_class.php
index 7a1164e9e..e64a11c35 100644
--- a/code/web/app/app_achievements/class/AchAchievement_class.php
+++ b/code/web/app/app_achievements/class/AchAchievement_class.php
@@ -1,6 +1,6 @@
setParent($parent);
$this->setID($data['aa_id']);
@@ -27,7 +29,7 @@
$this->dev = $data['aa_dev'];
$res = $DBc->sqlQuery("SELECT * FROM ach_perk LEFT JOIN (ach_perk_lang) ON (apl_lang='".$_USER->getLang()."' AND apl_perk=ap_id) LEFT JOIN (ach_player_perk) ON (app_perk=ap_id AND app_player='".$_USER->getID()."') WHERE ap_achievement='".$this->id."' AND ap_parent IS NULL");
- #MISSING: or parent is done
+
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
$tmp = $this->makeChild($res[$i]);
@@ -45,6 +47,15 @@
return new AchPerk($a,$this);
}
+ function unlockedByParent() {
+ if($this->parent_id != null) {
+ $tmp = $this->parent->getChildByID($this->parent_id);
+ return ($tmp->hasOpen() == false);
+ }
+
+ return true;
+ }
+
function getParentID() {
return $this->parent_id;
}
@@ -73,7 +84,7 @@
$val = 0;
$iter = $this->getDone();
while($iter->hasNext()) {
- $curr = $this->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
$val += $curr->getValue();
}
return $val;
@@ -82,7 +93,7 @@
function getValueOpen() {
$iter = $this->getOpen();
if($iter->hasNext()) {
- $curr = $this->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
return $curr->getValue();
}
return 0;
diff --git a/code/web/app/app_achievements/class/AchCategory_class.php b/code/web/app/app_achievements/class/AchCategory_class.php
index 7df1c8898..dd05b55d4 100644
--- a/code/web/app/app_achievements/class/AchCategory_class.php
+++ b/code/web/app/app_achievements/class/AchCategory_class.php
@@ -1,18 +1,27 @@
getRace();
+ }
if($cult == null) {
$cult = $_USER->getCult();
@@ -27,41 +36,48 @@
$this->id = mysql_real_escape_string($id);
- $res = $DBc->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$_USER->getLang()."' AND aal_achievement=aa_id) WHERE aa_category='".$this->id."' AND (aa_parent IS NULL OR NOT EXISTS (SELECT * FROM ach_perk WHERE ap_achievement=aa_id AND NOT EXISTS (SELECT * FROM ach_player_perk WHERE app_player='".$_USER->getID()."' AND app_perk=ap_id))) AND (aa_tie_race IS NULL OR aa_tie_race LIKE '".$_USER->getRace()."') AND (aa_tie_cult IS NULL OR aa_tie_cult LIKE '".$cult."') AND (aa_tie_civ IS NULL OR aa_tie_civ LIKE '".$civ."') ORDER by aal_name ASC");
- #parent!!!!
+ $res = $DBc->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$_USER->getLang()."' AND aal_achievement=aa_id) WHERE aa_category='".$this->id."' AND (aa_parent IS NULL OR NOT EXISTS (SELECT * FROM ach_perk WHERE ap_achievement=aa_id AND NOT EXISTS (SELECT * FROM ach_player_perk WHERE app_player='".$_USER->getID()."' AND app_perk=ap_id))) AND (aa_tie_race IS NULL OR aa_tie_race LIKE '".$race."') AND (aa_tie_cult IS NULL OR aa_tie_cult LIKE '".$cult."') AND (aa_tie_civ IS NULL OR aa_tie_civ LIKE '".$civ."') ORDER by aal_name ASC");
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
$tmp = $this->makeChild($res[$i]);
if($tmp->hasOpen()) {
- $this->addOpen($tmp);
+ $this->addOpen($tmp); #AchList::addOpen()
}
if($tmp->hasDone()) {
- $this->addDone($tmp);
+ $this->addDone($tmp); #AchList::addDone()
}
}
-
+
+ //load counts for tie determination
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_cult IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
$this->ties_cult = $res[0]['anz'];
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_civ IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
$this->ties_civ = $res[0]['anz'];
+ $res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_race IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
+ $this->ties_race = $res[0]['anz'];
+
+ $res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_race IS NOT NULL AND aa_category='".$this->id."'");
+ $this->ties_race_dev = $res[0]['anz'];
+
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_cult IS NOT NULL AND aa_category='".$this->id."'");
$this->ties_cult_dev = $res[0]['anz'];
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_civ IS NOT NULL AND aa_category='".$this->id."'");
$this->ties_civ_dev = $res[0]['anz'];
}
-
+
+ #@override Parentum::makeChild()
protected function makeChild($a) {
return new AchAchievement($a,$this);
}
- function getID() {
- return $this->id;
- }
+ #function getID() {
+ # return $this->id;
+ #}
function isTiedCult() {
return ($this->ties_cult > 0);
diff --git a/code/web/app/app_achievements/class/AchList_abstract.php b/code/web/app/app_achievements/class/AchList_abstract.php
index 4338173cb..eae3c3329 100644
--- a/code/web/app/app_achievements/class/AchList_abstract.php
+++ b/code/web/app/app_achievements/class/AchList_abstract.php
@@ -6,95 +6,78 @@
child_open and child_done refer to the index set in Parentum::nodes[]
---------------------------*/
- protected $child_done = array();
- protected $child_open = array();
+ protected $child_done;
+ protected $child_open;
+
+ function AchList() {
+ parent::__construct();
+
+ $this->child_done = new DLL();
+ $this->child_open = new DLL();
+ }
final function getDone() {
- return new NodeIterator($this->child_done);
+ return $this->child_done->getIterator();
}
final function getOpen() {
- return new NodeIterator($this->child_open);
+ return $this->child_open->getIterator();
}
final function hasOpen() {
- return (sizeof($this->child_open) != 0);
+ #echo "hasOpen: ".$this->child_open->getSize()."
";
+ return ($this->child_open->getSize() != 0);
}
final function hasDone() {
- return (sizeof($this->child_done) != 0);
+ #echo "hasDone: ".$this->child_done->getSize()."
";
+ return ($this->child_done->getSize() != 0);
}
- final function addOpen($n) {
- $this->child_open[] = $this->addChild($n);
+ final function addOpen($data) {
+ $this->child_open->addNode($data);
+ $this->addChild($data); #Parentum::addChild()
}
- final function addDone($n) {
- $this->child_done[] = $this->addChild($n);
+ final function addDone($data) {
+ $this->child_done->addNode($data);
+ $this->addChild($data); #Parentum::addChild()
}
- final function setChildDone($idx) {
- $this->addChildDone($idx);
- $this->removeChildOpen($idx);
+ final function setChildDone($id) {
+ $this->addChildDone($id);
+ $this->removeChildOpen($id);
}
- final function addChildDone($idx) {
- echo "try adding done child: ".$idx;
- if(!in_array($idx,$this->child_done)) {
- $this->child_done[] = $idx;
- echo " ... done
";
- }
- echo var_export($this->child_done,true);
+ final function setChildOpen($id) {
+ $this->addChildOpen($id);
+ $this->removeChildDone($id);
}
- final function removeChildDone($idx) {
- echo "try removing done child: ".$idx;
-
- foreach($this->child_done as $key=>$elem) {
- if($elem == $idx) {
- unset($this->child_done[$key]);
- echo " ... done
";
- break;
- }
- }
- echo var_export($this->child_done,true);
+ final function addChildDone($id) {
+ $data = $this->getChildDataByID($id);
+ $this->child_done->addNode($data);
}
- final function setChildOpen($idx) {
- $this->addChildOpen($idx);
- $this->removeChildDone($idx);
+ final function addChildOpen($id) {
+ $data = $this->getChildDataByID($id);
+ $this->child_open->addNode($data);
}
- final function addChildOpen($idx) {
- echo "try adding open child: ".$idx;
- if(!in_array($idx,$this->child_open)) {
- $this->child_open[] = $idx;
- echo " ... done
";
- }
- echo var_export($this->child_open,true);
+ final function removeChildDone($id) {
+ $this->child_done->removeNode($id);
}
- final function removeChildOpen($idx) {
- echo "try removing open child: ".$idx;
-
- foreach($this->child_open as $key=>$elem) {
- if($elem == $idx) {
- unset($this->child_open[$key]);
- echo " ... done
";
- break;
- }
- }
- echo var_export($this->child_open,true);
+ final function removeChildOpen($id) {
+ $this->child_open->removeNode($id);
}
#@OVERRIDE Parentum::removeChild()
function removeChild($id) {
- $n = parent::removeChild($id);
- if($n != false && $n != null) {
- unset($this->child_open[$n->getIdx()]);
- unset($this->child_done[$n->getIdx()]);
- }
- return $n;
+ parent::removeChild($id);
+
+ $this->child_open->removeNode($id);
+ $this->child_done->removeNode($id);
}
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/class/AchMenuNode_class.php b/code/web/app/app_achievements/class/AchMenuNode_class.php
index a9112b855..2a47afbef 100644
--- a/code/web/app/app_achievements/class/AchMenuNode_class.php
+++ b/code/web/app/app_achievements/class/AchMenuNode_class.php
@@ -1,17 +1,18 @@
setParent($parent);
$this->setID($data['ac_id']);
$this->parent_id = $data['ac_parent'];
@@ -26,10 +27,11 @@
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
$res[$i]['open'] = $data['open'];
- $this->nodes[] = $this->makeChild($res[$i]);
+ $this->addChild($this->makeChild($res[$i]));
}
}
-
+
+ #@override Parentum::makeChild()
protected function makeChild($a) {
return new AchMenuNode($a,$this);
}
@@ -47,8 +49,10 @@
return $this->id;
}
- foreach($this->nodes as $elem) {
- $res = $elem->hasOpenCat();
+ $iter = $this->getIterator();
+ while($iter->hasNext()) {
+ $curr = $iter->getNext();
+ $res = $curr->hasOpenCat();
if($res != 0) {
return $res;
}
@@ -67,13 +71,5 @@
function getOrder() {
return $this->order;
}
-
- function inDev() { // check if dev flag is set
- return ($this->dev == 1);
- }
-
- function getDev() {
- return $this->dev;
- }
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/class/AchMenu_class.php b/code/web/app/app_achievements/class/AchMenu_class.php
index dba0d18a8..60f21f17b 100644
--- a/code/web/app/app_achievements/class/AchMenu_class.php
+++ b/code/web/app/app_achievements/class/AchMenu_class.php
@@ -10,6 +10,8 @@
function AchMenu($open = false) {
global $DBc,$_USER;
+ parent::__construct();
+
$this->open = $open;
// the summary page is autogenerated and has no database entry. We add it manually here.
@@ -29,6 +31,8 @@
$res[$i]['open'] = $open;
$this->addChild($this->makeChild($res[$i]));
}
+
+ #echo var_export($this->nodes->findNode(1),true);
}
function getOpen() { // just returns the previously set ID of the currently open MenuNode
@@ -36,8 +40,10 @@
}
function getOpenCat() { // finds the currently open MenuNode and returns it's ID. If not found the result will be 0 instead.
- foreach($this->nodes as $elem) {
- $res = $elem->hasOpenCat();
+ $iter = $this->getIterator();
+ while($iter->hasNext()) {
+ $curr = $iter->getNext();
+ $res = $curr->hasOpenCat();
if($res != 0) {
return $res;
}
@@ -45,6 +51,7 @@
return 0;
}
+ #@override Parentum::makeChild()
protected function makeChild($a) {
return new AchMenuNode($a,$this);
}
diff --git a/code/web/app/app_achievements/class/AchObjective_class.php b/code/web/app/app_achievements/class/AchObjective_class.php
index 90eebb865..2f5a38543 100644
--- a/code/web/app/app_achievements/class/AchObjective_class.php
+++ b/code/web/app/app_achievements/class/AchObjective_class.php
@@ -1,7 +1,5 @@
setParent($parent);
$this->setID($data['ao_id']);
@@ -31,7 +31,8 @@
$this->progress = $res[0]['anz'];
}
}
-
+
+ #@override: Parentum::makeChild()
protected function makeChild($a) {
return null;
}
diff --git a/code/web/app/app_achievements/class/AchPerk_class.php b/code/web/app/app_achievements/class/AchPerk_class.php
index ccd16b51a..91d45e5b2 100644
--- a/code/web/app/app_achievements/class/AchPerk_class.php
+++ b/code/web/app/app_achievements/class/AchPerk_class.php
@@ -1,6 +1,6 @@
setParent($parent);
$this->setID($data['ap_id']);
@@ -28,7 +30,8 @@
$this->addChild($this->makeChild($res[$i]));
}
}
-
+
+ #@override Parentum::makeChild()
protected function makeChild($a) {
return new AchObjective($a,$this);
}
diff --git a/code/web/app/app_achievements/class/AchSummary_class.php b/code/web/app/app_achievements/class/AchSummary_class.php
index cc6ac89f6..85ca43b37 100644
--- a/code/web/app/app_achievements/class/AchSummary_class.php
+++ b/code/web/app/app_achievements/class/AchSummary_class.php
@@ -6,6 +6,8 @@
function AchSummary(&$menu,$size = 10) {
global $DBc,$_USER;
+ parent::__construct();
+
$this->menu = $menu;
//read all recent perks of user
@@ -20,7 +22,8 @@
#echo var_export($this->child_done,true);
}
-
+
+ #@override: Parentum::makeChild()
protected function makeChild($a) {
return new AchAchievement($a,$this);
}
diff --git a/code/web/app/app_achievements/class/DLL_class.php b/code/web/app/app_achievements/class/DLL_class.php
new file mode 100644
index 000000000..c52ccd4d9
--- /dev/null
+++ b/code/web/app/app_achievements/class/DLL_class.php
@@ -0,0 +1,174 @@
+avl = new AVLTree();
+
+ $this->first = null;
+ $this->last = null;
+
+ $this->size = 0;
+ }
+
+ function getIterator() {
+ return new NodeIterator($this->first);
+ }
+
+ final function getSize() {
+ return $this->size;
+ }
+
+ final function isEmpty() {
+ return ($this->size == 0);
+ }
+
+ function getFirst() {
+ return $this->first;
+ }
+
+ function getLast() {
+ return $this->last;
+ }
+
+ function addNode($data,$before = null) {
+ if($this->findNode($data->getID()) != null) {
+ return false;
+ }
+ $n = new DLLnode($data);
+ if($before == null) {
+ //insert as last
+ if($this->last != null) {
+ $this->last->setChild($n);
+ }
+ $n->setParent($this->last);
+ $this->last = $n;
+ }
+ else {
+ //insert before
+ $b = $this->findNode($before);
+ if($b != null) {
+ if($b == $this->first) {
+ $this->first = $n;
+ }
+ $tmp = $b->getParent();
+ $b->setParent($n);
+ $n->setChild($b);
+ if($tmp != null) {
+ $tmp->setChild($n);
+ }
+ }
+ }
+
+ if($this->first == null) {
+ $this->first = $n;
+ }
+
+ $this->avl->insert($n);
+ $this->size++;
+
+ #$this->avl->inorder();
+ #echo "
";
+ }
+
+ function removeNode($id) {
+ echo "rid: ".$id."
";
+ $this->avl->inorder();
+ echo "
";
+
+ $n = $this->findNode($id);
+ if($n != null) {
+ echo "removed; ";
+ $p = $n->getParent();
+ $c = $n->getChild();
+
+ if($c != null) {
+ $c->setParent($p);
+ if($p != null) {
+ $p->setChild($c);
+ }
+ }
+ else {
+ if($p != null) {
+ $p->setChild(null);
+ }
+ $this->last = $p;
+ }
+
+ if($p == null) {
+ if($c != null) {
+ $c->setParent(null);
+ $this->first = $c;
+ }
+ else {
+ $this->first = null;
+ }
+ }
+
+ $this->avl->remove($id);
+ $this->size--;
+ }
+
+ $this->avl->inorder();
+ echo "
";
+ }
+
+ function findNode($id) {
+ return $this->avl->find($id);
+ }
+
+ /*function storeOrder() {
+ $iter = $this->getIterator();
+ $i = 0;
+ while($iter->hasNext()) {
+ $curr = $iter->getNext();
+ $curr->StoreOrder($i);
+ $i++;
+ }
+ }*/
+ }
+
+ class DLLnode {
+ private $parent;
+ private $child;
+ public $data;
+
+ function DLLNode($d) {
+ $this->parent = null;
+ $this->child = null;
+ $this->data = $d;
+ }
+
+ final function getParent() {
+ return $this->parent;
+ }
+
+ final function setParent($p) {
+ $this->parent = $p;
+ }
+
+ final function getChild() {
+ return $this->child;
+ }
+
+ final function setChild($c) {
+ $this->child = $c;
+ }
+
+ final function getIterator() {
+ return new NodeIterator($this);
+ }
+
+ #function ListStoreOrder($i) {
+ # $this->data->setListOrder($i);
+ # $this->data->update();
+ #}
+
+ function getID() {
+ return $this->data->getID();
+ }
+ }
+?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/class/NodeIterator_class.php b/code/web/app/app_achievements/class/NodeIterator_class.php
index 1d939e5c4..fe71b44b0 100644
--- a/code/web/app/app_achievements/class/NodeIterator_class.php
+++ b/code/web/app/app_achievements/class/NodeIterator_class.php
@@ -11,26 +11,37 @@
// ...
}
---------------------------*/
- private $nodes;
- private $curr;
+ private $node;
+ #private $curr;
- function NodeIterator(&$nodes) {
- $this->nodes = $nodes;
- $this->curr = 0;
+ function NodeIterator($node) {
+ $this->node = $node;
+ #$this->curr = 0;
}
function hasNext() {
- $tmp = array_keys($this->nodes);
- return isset($this->nodes[$tmp[$this->curr]]);
+ #$tmp = array_keys($this->nodes);
+ #return isset($this->nodes[$tmp[$this->curr]]);
+ if($this->node == null) {
+ #echo "empty";
+ return false;
+ }
+
+ #if($this->node->getChild() == null) {
+ # return false;
+ #}
+
+ #echo "true";
+
+ return true;
}
function getNext() {
- $tmp = array_keys($this->nodes);
- return $this->nodes[$tmp[$this->curr++]];
- }
-
- function first() {
- $this->curr = 0;
+ #$tmp = array_keys($this->nodes);
+ #return $this->nodes[$tmp[$this->curr++]];
+ $n = $this->node;
+ $this->node = $this->node->getChild();
+ return $n->data;
}
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/class/Node_trait.php b/code/web/app/app_achievements/class/Node_abstract.php
similarity index 55%
rename from code/web/app/app_achievements/class/Node_trait.php
rename to code/web/app/app_achievements/class/Node_abstract.php
index d9bf1a42a..091e5b10d 100644
--- a/code/web/app/app_achievements/class/Node_trait.php
+++ b/code/web/app/app_achievements/class/Node_abstract.php
@@ -1,31 +1,26 @@
id;
}
- final function getIdx() {
- return $this->idx;
- }
-
final function getParent() {
return $this->parent;
}
- final function setIdx($i) {
- $this->idx = $i;
- }
-
final function setID($id) {
$this->id = $id;
}
diff --git a/code/web/app/app_achievements/class/Parentum_abstract.php b/code/web/app/app_achievements/class/Parentum_abstract.php
index 88c147cb4..09cb7b380 100644
--- a/code/web/app/app_achievements/class/Parentum_abstract.php
+++ b/code/web/app/app_achievements/class/Parentum_abstract.php
@@ -1,5 +1,5 @@
nodes = array();
- $this->avl = new AVLTree();
+ function Parentum() {
+ parent::__construct();
+ $this->nodes = new DLL(); // Doubly Linked List
}
abstract protected function makeChild($args); // overwriteable child generator; allows to define child type (eg.: admin classes that inherit from base class)
- final function getSize() {
- return sizeof($this->nodes);
+ function isEmpty() {
+ return $this->nodes->isEmpty();
}
- final function isEmpty() {
- return (sizeof($this->nodes) == 0);
- }
-
- final function getIterator() {
- return new NodeIterator($this->nodes);
- }
-
- final function addChild($n) {
- $tmp = sizeof($this->nodes);
- $n->setIdx($tmp);
- $this->nodes[] = $n;
- if($this->avl != null) {
- $this->avl->insert($n);
- }
- return $tmp;
+ function addChild($data) {
+ $this->nodes->addNode($data);
}
function removeChild($id) {
- if($this->isEmpty()) {
- return null;
+ $this->nodes->removeNode($id);
+ }
+
+ function getChildByID($id) {
+ return $this->nodes->findNode($id);
+ }
+
+ function getChildDataByID($id) {
+ $tmp = $this->getChildByID($id);
+ if($tmp != null) {
+ return $tmp->data;
}
-
- if($this->avl == null) {
- return false;
- }
- $n = $this->avl->remove($id);
-
- #echo var_export($n,true);
- if($n != null) {
- if($n->getIdx() != null) {
- unset($this->nodes[$n->getIdx()]);
- }
-
- return $n;
- }
-
return null;
}
- final function getChildByID($id) {
- if($this->isEmpty()) {
- return null;
- }
-
- if($this->avl == null) {
- return false;
- }
-
- #$this->avl->inorder();
-
- return $this->avl->find($id);
- }
-
- final function getChildByIdx($idx) {
- if($this->isEmpty()) {
- return null;
- }
- return $this->nodes[$idx];
+ function getIterator() {
+ return $this->nodes->getIterator();
}
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/include/ach_render_web.php b/code/web/app/app_achievements/include/ach_render_web.php
index 7101b2d64..0bac0107f 100644
--- a/code/web/app/app_achievements/include/ach_render_web.php
+++ b/code/web/app/app_achievements/include/ach_render_web.php
@@ -24,7 +24,7 @@
$open = $menu->getOpenCat();
if($open != 0) {
- $cat = new AchCategory($open,$_REQUEST['cult'],$_REQUEST['civ']);
+ $cat = new AchCategory($open,'matis',$_REQUEST['cult'],$_REQUEST['civ']);
}
else {
$cat = new AchSummary($menu,8);
@@ -160,6 +160,7 @@
$iter = $menu->getIterator();
while($iter->hasNext()) {
$curr = $iter->getNext();
+ #$curr = $curr->data;
#$sz = $menu->getSize();
#for($i=0;$i<$sz;$i++) {
# $curr = $menu->getChild($i);
@@ -195,7 +196,7 @@
$iter = $cat->getDone();
while($iter->hasNext()) {
- $curr = $cat->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
#$sz = sizeof($tmp);
#for($i=0;$i<$sz;$i++) {
#echo "A";
@@ -207,7 +208,7 @@
$iter = $cat->getOpen();
while($iter->hasNext()) {
- $curr = $cat->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
#$sz = sizeof($tmp);
#for($i=0;$i<$sz;$i++) {
#echo "B";
@@ -295,7 +296,7 @@
$html = "";
$perk_list = $ach->getOpen();
- $perk = $ach->getChildByIdx($perk_list->getNext());
+ $perk = $perk_list->getNext();
#$perk = $ach->getChild($perk_list[0]);
@@ -319,7 +320,7 @@
$perk_list = $ach->getDone();
while($perk_list->hasNext()) {
- $perk = $ach->getChildByIdx($perk_list->getNext());
+ $perk = $perk_list->getNext();
#foreach($perk_list as $elem) {
#$perk = $ach->getChild($elem);
if($perk->inDev()) {
diff --git a/code/web/app/app_achievements/index.php b/code/web/app/app_achievements/index.php
index af1e03b9c..726b8d047 100644
--- a/code/web/app/app_achievements/index.php
+++ b/code/web/app/app_achievements/index.php
@@ -34,12 +34,15 @@ else {
}
require_once("include/ach_render_common.php");
+require_once("class/DLL_class.php");
+require_once("class/InDev_trait.php");
+require_once("class/Node_abstract.php");
require_once("class/AVLTree_class.php");
require_once("class/Parentum_abstract.php");
require_once("class/AchList_abstract.php");
require_once("class/Tieable_inter.php");
require_once("class/NodeIterator_class.php");
-require_once("class/Node_trait.php");
+
require_once("class/AchMenu_class.php");
require_once("class/AchMenuNode_class.php");
diff --git a/code/web/app/app_achievements_admin/class/AdmAchievement_class.php b/code/web/app/app_achievements_admin/class/AdmAchievement_class.php
index 61898ae5a..3092a58b4 100644
--- a/code/web/app/app_achievements_admin/class/AdmAchievement_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmAchievement_class.php
@@ -3,7 +3,6 @@
use AdmDispatcher;
function AdmAchievement($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
}
diff --git a/code/web/app/app_achievements_admin/class/AdmAtom_class.php b/code/web/app/app_achievements_admin/class/AdmAtom_class.php
index 86ddf3ec2..b75dbd6aa 100644
--- a/code/web/app/app_achievements_admin/class/AdmAtom_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmAtom_class.php
@@ -1,7 +1,5 @@
init();
- parent::__construct($id,$cult,$civ);
+ function AdmCategory($id,$race,$cult = null,$civ = null) {
+ parent::__construct($id,$race,$cult,$civ);
}
protected function makeChild($d) {
diff --git a/code/web/app/app_achievements_admin/class/AdmDispatcher_trait.php b/code/web/app/app_achievements_admin/class/AdmDispatcher_trait.php
index 12f9bdc4d..65fd13663 100644
--- a/code/web/app/app_achievements_admin/class/AdmDispatcher_trait.php
+++ b/code/web/app/app_achievements_admin/class/AdmDispatcher_trait.php
@@ -23,7 +23,7 @@
}
function removeNode($id) {
- $res = $this->getChildByID($id);
+ $res = $this->getChildDataByID($id);
if($res != null) {
$res->delete_me();
$this->removeChild($id);
@@ -31,7 +31,7 @@
}
function updateNode($id) { // PROBABLY USELESS!
- $res = $this->getChildByID($id);
+ $res = $this->getChildDataByID($id);
if($res != null) {
$res->update();
}
@@ -53,7 +53,7 @@
$tmp = explode(";",$pid);
if($tmp[0] == $this->getID()) {
if(sizeof($tmp) > 1) {
- $c = $this->getChildByID($tmp[1]);
+ $c = $this->getChildDataByID($tmp[1]);
if($c != null) {
unset($tmp[0]);
return $c->getElementByPath(implode(";",$tmp));
diff --git a/code/web/app/app_achievements_admin/class/AdmMenuNode_class.php b/code/web/app/app_achievements_admin/class/AdmMenuNode_class.php
index dad7c8a38..05064d28c 100644
--- a/code/web/app/app_achievements_admin/class/AdmMenuNode_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmMenuNode_class.php
@@ -3,7 +3,6 @@
private $ach_count;
function AdmMenuNode($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
global $DBc;
@@ -33,7 +32,7 @@
}
function getNode($id) { // try to find the child node that has the given ID. Return null on failure.
- $res = $this->getChildByID($id);
+ $res = $this->getChildDataByID($id);
if($res != null) {
return $res;
}
@@ -65,15 +64,6 @@
}
}
- /*function unsetChild($id) { // remove child with given ID from nodes list; unset should destruct.
- foreach($this->nodes as $key=>$elem) {
- if($elem->getID() == $id) {
- unset($this->nodes[$key]);
- return null;
- }
- }
- }*/
-
function insertChild(&$n) { // insert a new child
// insert command to create database entry
$n->insert();
@@ -105,21 +95,6 @@
}
- function setInDev($tf) {
- if($tf == true) {
- $this->setDev(1);
- }
- else {
- $this->setDev(0);
- }
-
- $this->update();
- }
-
- private function setDev($d) {
- $this->dev = $d;
- }
-
private function setOrder($o) {
$this->order = $o;
$this->update();
diff --git a/code/web/app/app_achievements_admin/class/AdmMenu_class.php b/code/web/app/app_achievements_admin/class/AdmMenu_class.php
index d6debda0b..f646d0d3f 100644
--- a/code/web/app/app_achievements_admin/class/AdmMenu_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmMenu_class.php
@@ -3,7 +3,6 @@
use AdmDispatcher;
function AdmMenu($open) {
- $this->init();
parent::__construct($open);
#$this->drawTree();
@@ -65,7 +64,7 @@
function getNode($id) { // try to find the MenuNode that has the given ID. Return null on failure.
#echo "
getNode(".$id.")";
- $res = $this->getChildByID($id);
+ $res = $this->getChildDataByID($id);
if($res != null) {
return $res;
}
diff --git a/code/web/app/app_achievements_admin/class/AdmObjective_class.php b/code/web/app/app_achievements_admin/class/AdmObjective_class.php
index 4a40b9685..e75147fa9 100644
--- a/code/web/app/app_achievements_admin/class/AdmObjective_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmObjective_class.php
@@ -3,7 +3,6 @@
use AdmDispatcher;
function AdmObjective($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
global $DBc;
@@ -11,7 +10,7 @@
$res = $DBc->sqlQuery("SELECT atom_id FROM ach_atom WHERE atom_objective='".$this->getID()."'");
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
- $this->nodes[] = $this->makeChild($res[$i]);
+ $this->addChild($this->makeChild($res[$i]));
}
}
diff --git a/code/web/app/app_achievements_admin/class/AdmPerk_class.php b/code/web/app/app_achievements_admin/class/AdmPerk_class.php
index 3a66585e0..21fbc0ca2 100644
--- a/code/web/app/app_achievements_admin/class/AdmPerk_class.php
+++ b/code/web/app/app_achievements_admin/class/AdmPerk_class.php
@@ -6,7 +6,6 @@
protected $condition_value;
function AdmPerk($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
$this->condition = $data["ap_condition"];
diff --git a/code/web/app/app_achievements_admin/class/CSRAchievement_class.php b/code/web/app/app_achievements_admin/class/CSRAchievement_class.php
index e3f49b40c..2bcd2ad56 100644
--- a/code/web/app/app_achievements_admin/class/CSRAchievement_class.php
+++ b/code/web/app/app_achievements_admin/class/CSRAchievement_class.php
@@ -3,7 +3,6 @@
use CSRDispatcher;
function CSRAchievement($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
}
@@ -16,10 +15,10 @@
while($iter->hasNext()) {
$curr = $iter->getNext();
$curr->grant($pid);
- $this->setChildDone($curr->getIdx());
+ $this->setChildDone($curr->getID());
}
- $this->parent->setChildDone($this->idx);
+ $this->parent->setChildDone($this->id);
}
function deny($pid) {
@@ -27,34 +26,34 @@
while($iter->hasNext()) {
$curr = $iter->getNext();
$curr->deny($pid);
- $this->setChildOpen($curr->getIdx());
+ $this->setChildOpen($curr->getID());
}
- $this->parent->setChildOpen($this->idx);
+ $this->parent->setChildOpen($this->id);
}
- function setPerkDone($idx) {
+ function setPerkDone($id) {
echo "perk
";
- $this->setChildDone($idx);
+ $this->setChildDone($id);
echo "ach
";
- $this->parent->addChildDone($this->idx);
+ $this->parent->addChildDone($this->id);
if(!$this->hasOpen()) {
- $this->parent->removeChildOpen($this->idx);
+ $this->parent->removeChildOpen($this->id);
}
}
- function setPerkOpen($idx) {
+ function setPerkOpen($id) {
echo "perk
";
- $this->setChildOpen($idx);
+ $this->setChildOpen($id);
echo "ach
";
- $this->parent->addChildOpen($this->idx);
+ $this->parent->addChildOpen($this->id);
if(!$this->hasDone()) {
- $this->parent->removeChildDone($this->idx);
+ $this->parent->removeChildDone($this->id);
}
}
}
diff --git a/code/web/app/app_achievements_admin/class/CSRAtom_class.php b/code/web/app/app_achievements_admin/class/CSRAtom_class.php
index 51a651c4b..398b7f283 100644
--- a/code/web/app/app_achievements_admin/class/CSRAtom_class.php
+++ b/code/web/app/app_achievements_admin/class/CSRAtom_class.php
@@ -1,6 +1,5 @@
id = $data['atom_id'];
diff --git a/code/web/app/app_achievements_admin/class/CSRCategory_class.php b/code/web/app/app_achievements_admin/class/CSRCategory_class.php
index 26a774803..6a118c6e3 100644
--- a/code/web/app/app_achievements_admin/class/CSRCategory_class.php
+++ b/code/web/app/app_achievements_admin/class/CSRCategory_class.php
@@ -2,9 +2,8 @@
class CSRCategory extends AchCategory implements CSR {
use CSRDispatcher;
- function CSRCategory($id,$cult = null,$civ = null) {
- $this->init();
- parent::__construct($id,$cult,$civ);
+ function CSRCategory($id,$race,$cult = null,$civ = null) {
+ parent::__construct($id,$race,$cult,$civ);
}
protected function makeChild($d) {
@@ -16,7 +15,7 @@
}
function deny($id) {
- return false; // category can't grant!
+ return false; // category can't deny!
}
/*function setAchOpen($idx,$state) {
diff --git a/code/web/app/app_achievements_admin/class/CSRDispatcher_trait.php b/code/web/app/app_achievements_admin/class/CSRDispatcher_trait.php
index b7618ae3e..6b373f177 100644
--- a/code/web/app/app_achievements_admin/class/CSRDispatcher_trait.php
+++ b/code/web/app/app_achievements_admin/class/CSRDispatcher_trait.php
@@ -13,7 +13,7 @@
//get child with the next level id and dispatch
$tmp = explode(";",$path);
- $c = $this->getChildByID($tmp[1]);
+ $c = $this->getChildDataByID($tmp[1]);
#echo "...".$tmp[1];
if($c != null) { // check if it's really own child
unset($tmp[0]);
@@ -37,7 +37,7 @@
if($tmp[0] == $this->getID()) { // it's my id!
- $c = $this->getChildByID($tmp[1]);
+ $c = $this->getChildDataByID($tmp[1]);
if($c != null) { // check if it's really own child
unset($tmp[0]);
$c->denyNode(implode(";",$tmp),$player);
diff --git a/code/web/app/app_achievements_admin/class/CSRObjective_class.php b/code/web/app/app_achievements_admin/class/CSRObjective_class.php
index 0a9421d34..d336a2ade 100644
--- a/code/web/app/app_achievements_admin/class/CSRObjective_class.php
+++ b/code/web/app/app_achievements_admin/class/CSRObjective_class.php
@@ -5,7 +5,6 @@
#private $nodes;
function CSRObjective($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
global $DBc;
diff --git a/code/web/app/app_achievements_admin/class/CSRPerk_class.php b/code/web/app/app_achievements_admin/class/CSRPerk_class.php
index 3b68bd5ce..fcd8bd668 100644
--- a/code/web/app/app_achievements_admin/class/CSRPerk_class.php
+++ b/code/web/app/app_achievements_admin/class/CSRPerk_class.php
@@ -3,7 +3,6 @@
use CSRDispatcher;
function CSRPerk($data,$parent) {
- $this->init();
parent::__construct($data,$parent);
}
@@ -17,7 +16,7 @@
$DBc->sqlQuery("INSERT INTO ach_player_perk (app_perk,app_player,app_date) VALUES ('".$this->getID()."','".$pid."','".time()."')");
$this->done = time();
#echo $this->idx."
";
- $this->parent->setPerkDone($this->idx);
+ $this->parent->setPerkDone($this->id);
$iter = $this->getIterator();
while($iter->hasNext()) {
@@ -31,7 +30,7 @@
$DBc->sqlQuery("DELETE FROM ach_player_perk WHERE app_perk='".$this->getID()."' AND app_player='".$pid."'");
$this->done = 0;
- $this->parent->setPerkOpen($this->idx);
+ $this->parent->setPerkOpen($this->id);
$iter = $this->getIterator();
while($iter->hasNext()) {
diff --git a/code/web/app/app_achievements_admin/include/adm_render_ach.php b/code/web/app/app_achievements_admin/include/adm_render_ach.php
index 50fc3b1b0..7b9f52d2a 100644
--- a/code/web/app/app_achievements_admin/include/adm_render_ach.php
+++ b/code/web/app/app_achievements_admin/include/adm_render_ach.php
@@ -174,7 +174,7 @@
$iter = $cat->getOpen();
while($iter->hasNext()) {
- $curr = $cat->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
#$sz = sizeof($tmp);
#for($i=0;$i<$sz;$i++) {
#echo "B";
@@ -333,7 +333,7 @@
";
$iter = $ach->getOpen();
while($iter->hasNext()) {
- $curr = $ach->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
$html .= "";
}
@@ -416,7 +416,7 @@
$perk_list = $ach->getOpen();
while($perk_list->hasNext()) {
- $perk = $ach->getChildByIdx($perk_list->getNext());
+ $perk = $perk_list->getNext();
#$perk = $ach->getChild($perk_list[0]);
@@ -466,7 +466,7 @@
$par = $perk->getParent();
$iter = $par->getOpen();
while($iter->hasNext()) {
- $curr = $par->getChildByIdx($iter->getNext());
+ $curr = $iter->getNext();
$html .= "";
}
@@ -555,7 +555,7 @@
$perk_list = $ach->getDone();
while($perk_list->hasNext()) {
- $perk = $ach->getChildByIdx($perk_list->getNext());
+ $perk = $perk_list->getNext();
#foreach($perk_list as $elem) {
#$perk = $ach->getChild($elem);
if($perk->inDev()) {
@@ -588,7 +588,7 @@
#if(($i%2) == 1) {
# $html .= "