baselink = $baselink;
}
function category($name,$setdef=true) {
$this->defcat = $name;
$this->cat[$name] = array();
}
function inNav($name,$link,$category=false) {
if ($category == false) $category = $this->defcat;
$this->navs[] = array('name'=>$name,'link'=>$link);
$this->cat[$category][] = count($this->navs)-1;
}
function link($text,$keep_cat=false,$keep_loc=true) {
global $quater;
$str = HAUS_BASEFILE.'?'.$text;
if ($keep_cat && !empty($_GET['cat'])) $str .= '&cat='.$_GET['cat'];
if ($keep_loc) $str .= '&location='.$quater->location;
return $str;
}
function nav($name,$text='',$category=false,$keep_cat=false) {
$link = $this->link($text,$keep_cat);
$this->inNav($name,$link,$category);
}
function txtCategory($catname,$setdef=true,$txtcat=false) {
global $wvtxt;
$this->category($wvtxt->get($catname,$txtcat),$setdef);
}
function txtNav($txtname,$text='',$category=false,$keep_cat=false,$txtcat=false) {
global $wvtxt;
$this->nav($wvtxt->get($txtname,$txtcat),$text,$category,$keep_cat);
}
function end() {
if (!empty($this->cat)) {
foreach($this->cat as $name => $arr) {
if(empty($name)) continue;
addnav($name);
foreach($arr as $num) {
addnav($this->navs[$num]['name'],$this->navs[$num]['link']);
}
}
}
}
function clear() {
$this->cat = array();
$this->navs = array();
$this->defcat = '';
}
}
class wvKey {
var $key_id;
var $house_id;
var $user_id;
var $key_nr;
var $owner;
function wvKey($indata,$readRest=false) {
$this->readIndata($indata);
if ($readRest && !empty($this->key_id)) $this->readFromDB();
}
function readIndata($indata) {
foreach($this as $k => $_) {
if ($indata[$k]) $this->$k = $indata[$k];
}
}
function readFromDB() {
$sql = 'SELECT * FROM `'.HAUS_KEY_TABELLE.'` WHERE `key_id` = '.$this->key_id.' LIMIT 1';
$res = db_query($sql) or stirb("Fehler beim Lesen eines Schlüssels",null,__FILE__,__LINE__);
$row = db_fetch_assoc($res);
$this->readIndata($row);
}
function save() {
if (!empty($this->key_id)) {
$sql = 'REPLACE INTO `'.HAUS_KEY_TABELLE.'`(`key_id`,`house_id`,`acctid`,`key_nr`,`owner`) VALUES('.$this->key_id.','.$this->get(HAUS_ID_FIELD).','.$this->user_id.','.$this->key_nr.',"'.$this->owner.'")';
} else {
$sql = 'INSERT INTO `'.HAUS_KEY_TABELLE.'`(`house_id`,`acctid`,`key_nr`,`owner`) VALUES('.$this->house_id.','.$this->user_id.','.$this->key_nr.',"'.$this->owner.'")';
}
db_query($sql) or stirb("Fehler beim Speichern eines Keys",$this,__FILE__,__LINE__);
}
function generateKeys($houseid,$keys,$owner,$start=1) {
for ($i=$start;$i<$keys+$start;$i++) {
$key = new wvKey(array('house_id'=>$houseid,'user_id'=>$owner,'key_nr'=>$i,'owner'=>$i==1?'1':'0'));
$key->save();
unset($key);
}
}
}
class wvTxt {
var $included;
var $texts;
var $deffile;
var $language;
function wvTxt($language=HAUS_TXT_DEFLANG,$startfile=false) {
$this->loadLanguage($language);
if (!empty($startfile)) {
if(is_array($startfile)) {
foreach($startfile as $file) $this->readFile($file);
$this->deffile = $startfile[count($startfile)-1];
} else {
$this->readFile($startfile);
$this->deffile = $startfile;
}
}
}
function loadLanguage($language) {
if (substr($language,strlen($language)-1) != '/') $language .= '/';
if(file_exists(HAUS_TXT_LANGDIR.$language)) {
$this->language = $language;
} elseif ($language==HAUS_TXT_DEFLANG || $language==HAUS_TXT_DEFLANG.'/') {
stirb("Fehler beim Laden des Standard-Sprachordners für das Haussystem ".HAUS_TXT_LANGDIR.$language,$this,__FILE__,__LINE__);
} else {
$this->loadLanguage(HAUS_TXT_DEFLANG);
}
}
function readFile($filename) {
if(empty($this->included[$filename])) {
$filestr = HAUS_TXT_LANGDIR.$this->language.$filename.'.php';
if (!file_exists($filestr)) {
if ($this->language == HAUS_TXT_DEFLANG || $language==HAUS_TXT_DEFLANG.'/') {
stirb("Fehler: Konnte keine Textdatei für das Kürzel '$filename' finden. Diese sollte zumindst in der Standardsprache verfügbar sein",$this,__FILE__,__LINE__);
} else {
echo "Kleinerer Fehler: Konnte die Textdatei für das Kürzel '$filename' in der Sprachkategorie '$this->language' finden. Bitte Admin informieren.";
$filestr = HAUS_TXT_LANGDIR.HAUS_TXT_DEFLANG.$filename.'.php';
}
}
require_once $filestr;
$str = 'text_'.$filename;
$this->texts[$filename] = $$str;
$this->included[$filename] = true;
$this->deffile = $filename;
}
}
function get($name,$cat=false) {
if ($cat) $this->readFile($cat);
else $cat = $this->deffile;
return $this->texts[$cat][$name];
}
function massGet($names,$cat=false) {
$str = '';
foreach($names as $name) $str .= $this->get($name,$cat);
return $str;
}
}
class wvQuater {
var $location;
var $name;
var $language;
var $homelink;
function wvQuater($location) {
$this->location = $location;
$this->read();
}
function read() {
$sql = 'SELECT * FROM `'.HAUS_QUATER_TABELLE.'` WHERE `location`='.$this->location.' LIMIT 1';
$res = db_query($sql) or stirb("Fehler beim Lesen eines Wohnviertels",$this,__FILE__,__LINE__);
$this->load(db_fetch_assoc($res));
}
function load($indata) {
foreach($indata as $key => $val) {
$this->$key = $val;
}
}
function findData($level=false,$level_more='<=',$offset=0, $limit=25) {
$whereclause = 'WHERE `h`.`location`='.$this->location.($level?' AND `level`'.$level_more.$level:'');
$sql = 'SELECT `h`.`'.HAUS_ID_FIELD.'`,`h`.`'.HAUS_NR_FIELD.'`, `h`.`name`, `h`.`level`, `h`.`ausbauten`, `l`.`name` AS `level_name`, `a`.`name` AS `owner_name`, COUNT(`k`.`key_nr`) AS `keys` FROM `'.HAUS_TABELLE.'` `h` INNER JOIN `'.HAUS_LEVEL_TABELLE.'` `l` USING(`level`) INNER JOIN `'.HAUS_KEY_TABELLE.'` `k` USING(`'.HAUS_ID_FIELD.'`) INNER JOIN `accounts` `a` USING(`acctid`) '.$whereclause.' GROUP BY `h`.`'.HAUS_ID_FIELD.'` ORDER BY `h`.`'.HAUS_NR_FIELD.'` ASC LIMIT '.$offset.', '.$limit;
$res = db_query($sql) or stirb("Fehler beim Suchen nach Hausdaten für die Übersichtstabelle",null,__FILE__,__LINE__);
$all = array();
for($i=0,$max=db_num_rows($res);$i<$max;$i++) $all[] = new haus_bio(db_fetch_assoc($res));
return $all;
}
function listUp($level=false,$level_more='<=',$offset=0, $limit=25) {
global $wvtxt;
$all = $this->findData($level,$level_more,$offset,$limit);
$str = $wvtxt->get('list_head');
for($i=0,$max=count($all);$i<$max;$i++) $str .= $all[$i]->list_row(($i+1)%2);
$str .= $wvtxt->get('list_foot');
return $str;
}
}
class ausbaustufe {
var $level, $name, $gold, $gems, $keys, $zimmer, $goldchest, $gemschest;
function ausbaustufe($level=1) {
// Sicherung:
if($level <= $this->hoechste()) {
// Abfrage:
$sql="SELECT * FROM hauslevels WHERE level = ".$level;
$result=db_query($sql) or die(db_error(LINK));
$row=db_fetch_assoc($result);
// Deklarationen:
foreach($row as $key=>$val) {
$this->{$key} = $val;
}
} else {
die("Fehler - Zugrif auf einen nicht eingetragenen Level nicht möglich. Bitte Admin kontaktieren!
\n"
."Folgende Werte wurden übergeben:
Eingetragene Level: ".$this->levels().",
Angeforterter Level: ".$level);
}
} // Ende Funktion
function levels() {
$sql="SELECT COUNT(level) AS anzahl FROM hauslevels";
$result=db_query($sql) or die(db_error(LINK));
$row=db_fetch_assoc($result);
return (int) $row['anzahl'];
} // Ende Funktion
function hoechste() {
$sql="SELECT MAX(level) AS maximum FROM hauslevels";
$result=db_query($sql) or die(db_error(LINK));
$row=db_fetch_assoc($result);
return (int) $row['maximum'];
} // Ende Funktion
function speichern($aufid=false) {
if($aufid == false) $aufid = $this->level;
if($aufid <= $this->levels()) {
$sql = "UPDATE `houselevels` SET level=".$aufid.", name=".$this->name.", gold=".$this->gold.", gems=".$this->gems.", keys=".$this->keys.", goldchest=".$this->goldchest.", gemschest=".$this->gemschest." WHERE level=".$this->level;
} else {
$sql = "INSERT INTO houselevels SET level=".$aufid.", name=".$this->name.", gold=".$this->gold.", gems=".$this->gems.", keys=".$this->keys.", goldchest=".$this->goldchest.", gemschest=".$this->gemschest;
}
db_query($sql) or dir(db_error(LINK));
} // Ende Funktion
}
/**
* Stellt ein erweitertes die() zur Verfügung
* Es wird eine strukturierte Fehlermeldung mit Zusätzliche details ausgegeben
*
* @param string $nachricht Fehlermessage
* @param haus_basic $objekt Fehlerauslöser
* @param string $datei Datei des Vorfalls __FILE__
* @param int $zeile Zeile des Vorfalls __LINE__
*/
function stirb($nachricht,$objekt=null,$datei="",$zeile="") {
$str = "