_pre_install (Vor der Installation) * -> _post_install (Nach der Installation) * -> _pre_remove (Vor der Deinstallation) * -> _post_remove (Nach der Deinstallation) * * [Customisation] * -> _navname (return: Name des Navs zum Betreten) * -> _pageHeader (Setzt den PageHeader) * */ class wvRoom extends wvLoadable { /** * Referenz auf das verwendete Haus * @var haus_use */ var $haus = false; var $room_id; var $classname; var $label; var $cost; var $navcat = 'default'; function wvRoom(&$haus,$indata,$elseread=true) { $this->haus = & $haus; // Indata zum installieren FALSE oder NULL setzen! if(is_array($indata)) $this->load($indata); elseif(is_numeric($indata)) $this->read('SELECT * FROM `'.HAUS_ROOMS_TABLE.'` WHERE `room_id`='.$indata); elseif($elseread) stirb('Fehler beim Erzeugen eines Room-Objektes, fehlerhafte Parameter!',$this,__FILE__,__LINE__); $this->loadTextFile(); } function _loadRoom($indata,&$haus){ $classname = is_array($indata) ? $indata['classname'] : $indata; if (!wvRoom::exsistsRoom($classname)) stirb('Zimmermodul konnte nicht gefunden werden!',$indata,__FILE__,__LINE__); require_once HAUS_ROOMDIR.$classname.".php"; return new $classname($haus,$indata); } function exsistsRoom($classname){ $ret = class_exists($classname) || file_exists(HAUS_ROOMDIR.$classname.".php"); return $ret; } function install(){ if (method_exists($this,'_pre_install')) $this->_pre_install(); $sql = 'INSERT INTO `'.HAUS_ROOMS_TABLE.'` (`classname`,`label`,`cost`,`navcat`) VALUES("%s","%s","%s","%s")'; $sql = sprintf($sql,get_class($this),$this->label,(is_array($this->cost) ? implode(',',$this->cost) : $this->cost),$this->navcat); dying_query($sql,'Fehler beim Installieren eines Hausmoduls ('.get_class($this).')',__FILE,__LINE__); if (method_exists($this,'_post_install')) $this->_post_install(); } function loadTextFile(){ $wvtxt = & sysTxt::instance(); if (empty($this->classname)) $this->classname = get_class($this); if ($wvtxt->exsitsFile($this->classname) === true) { $wvtxt->loadFile($this->classname); } } function getNavData() { $navname = method_exists($this,'_navname') ? $this->_navname() : $this->label; return array('linktxt' => 'act='.$this->room_id, 'name' => $navname, 'category' => $this->navcat); } function dispatch($dovar=false){ $dovar = $dovar === false ? $_GET['do'] : $dovar; $method = 'do'; if (!empty($dovar)) $method .= wvRoom::corrigateMethodName($dovar); else $method .= HAUS_ROOM_DEF_DO; $wvtxt = & sysTxt::instance(); $wvtxt->current['file'] = $this->classname; if (method_exists($this,'_pageHeader')) $this->_pageHeader(); if (method_exists($this,$method)) { // methode ist da, alles tutti $this->$method(); } elseif(!empty($dovar)) { // methode fehlt, weiche auf Standard aus wvLog('debug,loss,error',"Methode eines Raumes fehlt!",array('dovar'=>$dovar,'raum'=>$this->classname)); $this->dispatch(HAUS_ROOM_DEF_DO); } else { // kritischer fehler, eingangsmethode fehlt! stirb("Fehler beim dispatchen eines Raumes - Eingangsmethode nicht intakt",$this,__FILE__,__LINE__); //stirb("Fehler beim dispatchen eines Raumes - Eingangsmethode nicht intakt",null,__FILE__,__LINE__); // Für den produktivbetrieb verwenden (logsize) } } function corrigateMethodName($inname){ return strtoupper($inname[0]) . strtolower(substr($inname,1)); } // Wrapper um nicht immer $this->haus->... benutzen zu müssen function navRoom($name,$text='',$category='default') { $newtext = $text . '&act='.$this->room_id; $this->haus->inNav($name,$newtext,$category); } function navCat($name) { $this->haus->inNavCat($name); } function inLink($text,$makelink=true) { return $this->haus->inLink($text . '&act='.$this->room_id,$makelink); } function output($text, $priv = false) { $this->haus->output($text,$priv); } } class wvRoomMandatory extends wvRoom { function wvRoomMandatory(&$haus,$indata=array()){ $this->haus = & $haus; if(!empty($indata['room_id'])) $this->room_id = $indata['room_id']; $this->navcat = 'administration'; $this->loadTextFile(); // Eigentlich nichts weiter zu tun, da die Klassen außerhalb des normalen Raumsystems arbeiten } } ?>