khanat-opennel-code/code/web/app/app_achievements/class/AchList_abstract.php
SirCotare 6a32131dd8 #1470 misc
--HG--
branch : gsoc2012-achievements
2012-07-02 18:55:13 +02:00

100 lines
No EOL
2.4 KiB
PHP

<?php
abstract class AchList extends Parentum {
/*---------------------------
This class organizes nodes to distinguish between "open" and "done" nodes.
child_open and child_done refer to the index set in Parentum::nodes[]
---------------------------*/
protected $child_done = array();
protected $child_open = array();
final function getDone() {
return new NodeIterator($this->child_done);
}
final function getOpen() {
return new NodeIterator($this->child_open);
}
final function hasOpen() {
return (sizeof($this->child_open) != 0);
}
final function hasDone() {
return (sizeof($this->child_done) != 0);
}
final function addOpen($n) {
$this->child_open[] = $this->addChild($n);
}
final function addDone($n) {
$this->child_done[] = $this->addChild($n);
}
final function setChildDone($idx) {
$this->addChildDone($idx);
$this->removeChildOpen($idx);
}
final function addChildDone($idx) {
echo "try adding done child: ".$idx;
if(!in_array($idx,$this->child_done)) {
$this->child_done[] = $idx;
echo " ... done<br>";
}
echo var_export($this->child_done,true);
}
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<br>";
break;
}
}
echo var_export($this->child_done,true);
}
final function setChildOpen($idx) {
$this->addChildOpen($idx);
$this->removeChildDone($idx);
}
final function addChildOpen($idx) {
echo "try adding open child: ".$idx;
if(!in_array($idx,$this->child_open)) {
$this->child_open[] = $idx;
echo " ... done<br>";
}
echo var_export($this->child_open,true);
}
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<br>";
break;
}
}
echo var_export($this->child_open,true);
}
#@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;
}
}
?>