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 = "

Schwerwiegender Fehler:

\nEin schwerwiegender Fehler ist aufgetreten, sodass das Skript beendet " ."werden musste. Hier nun weitere Informationen:

\n"; if ($datei != "") $str .= "Der Fehler trat auf in Datei '".$datei."';
\n"; if ($zeile != "") $str .= "Nahe der Zeile '".$zeile."';
\n"; if ($objekt != null) $str .= "
Erzeugt wurde diese Fehlermeldung von einem Objekt der Klasse '" .get_class($objekt)."' (oder höher)
\n"; $str .= "


Folgende Fehlermeldung wurde übergeben:
\n".$nachricht."
\n"; if ($objekt != null) { $str .= "

Dump des Objektes:
\n"; ob_start(); $dump = ob_get_contents(); ob_end_clean(); $str .= $dump; } if(db_error()) { $str .= "


Anscheinend handelt es sich um einen Datenbankfehler - MySQL berichtet:
".db_error(); } die($str); } ?>