2012-05-25 09:48:56 +00:00
< ? php
class AchAchievement extends AchList {
private $id ;
private $parent ;
private $category ;
private $tie_race ;
private $tie_civ ;
private $tie_cult ;
private $image ;
private $name ;
2012-05-31 13:15:36 +00:00
private $template ;
2012-06-14 09:23:52 +00:00
private $dev ;
2012-05-25 09:48:56 +00:00
2012-05-31 13:15:36 +00:00
function AchAchievement ( & $data ) {
global $DBc , $_USER ;
2012-05-25 09:48:56 +00:00
$this -> id = $data [ 'aa_id' ];
$this -> parent = $data [ 'aa_parent' ];
$this -> category = $data [ 'aa_category' ];
$this -> tie_race = $data [ 'aa_tie_race' ];
$this -> tie_civ = $data [ 'aa_tie_civ' ];
$this -> tie_cult = $data [ 'aa_tie_cult' ];
$this -> image = $data [ 'aa_image' ];
$this -> name = $data [ 'aal_name' ];
2012-05-31 13:15:36 +00:00
$this -> template = $data [ 'aal_template' ];
2012-06-14 09:23:52 +00:00
$this -> dev = $data [ 'aa_dev' ];
2012-05-25 09:48:56 +00:00
2012-05-27 19:08:28 +00:00
#echo $this->id;
2012-05-31 13:15:36 +00:00
$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 " );
2012-05-25 09:48:56 +00:00
#MISSING: or parent is done
$sz = sizeof ( $res );
for ( $i = 0 ; $i < $sz ; $i ++ ) {
2012-05-27 19:08:28 +00:00
#echo "Z";
2012-06-21 20:45:27 +00:00
$res [ $i ][ 'this' ] = $this ;
$tmp = $this -> makeChild ( $res [ $i ]);
2012-05-25 09:48:56 +00:00
2012-05-27 19:08:28 +00:00
#echo var_export($tmp,true);
2012-05-25 09:48:56 +00:00
2012-05-27 19:08:28 +00:00
if ( $tmp -> isDone ()) {
$this -> child_done [] = sizeof ( $this -> nodes );
2012-05-25 09:48:56 +00:00
}
else {
2012-05-27 19:08:28 +00:00
$this -> child_open [] = sizeof ( $this -> nodes );
}
$this -> nodes [] = $tmp ;
2012-05-25 09:48:56 +00:00
#MISSING: divide into groups -> open/done
}
2012-05-27 19:08:28 +00:00
#echo var_export($this->child_open,true);
#echo "X-".$this->hasOpen();
2012-05-25 09:48:56 +00:00
}
2012-06-21 20:45:27 +00:00
function makeChild ( & $a ) {
return new AchPerk ( $a );
2012-06-21 18:55:52 +00:00
}
2012-05-25 09:48:56 +00:00
function getID () {
return $this -> id ;
}
function getParent () {
return $this -> parent ;
}
function getTieRace () {
return $this -> tie_race ;
}
function getTieCiv () {
return $this -> tie_civ ;
}
function getTieCult () {
return $this -> tie_cult ;
}
function getImage () {
return $this -> image ;
}
function getName () {
return $this -> name ;
}
2012-05-27 19:08:28 +00:00
function getValueDone () {
2012-05-25 09:48:56 +00:00
$val = 0 ;
foreach ( $this -> child_done as $elem ) {
$val += $this -> nodes [ $elem ] -> getValue ();
}
return $val ;
}
2012-05-27 19:08:28 +00:00
function getValueOpen () {
return $this -> nodes [ $this -> child_open [ 0 ]] -> getValue ();
}
2012-05-31 13:15:36 +00:00
function getTemplate ( $insert = array ()) {
if ( $this -> template == null ) {
return implode ( " ; " , $insert );
}
else {
$tmp = $this -> template ;
$match = array ();
preg_match_all ( '#\[([0-9]+)\]#' , $this -> template , $match );
foreach ( $match [ 0 ] as $key => $elem ) {
$tmp = str_replace ( " [ " . $match [ 1 ][ $key ] . " ] " , $insert [ $key ], $tmp );
}
return $tmp ;
}
}
2012-06-14 09:23:52 +00:00
function inDev () {
return ( $this -> dev == 1 );
}
2012-05-25 09:48:56 +00:00
}
?>