Start = getdate(); $this->Ip = $Ip_; $this->email = $email_; } else { $this->Id = substr($Ip_,strlen("guest")); } $this->guestXmlFile = DATAPATH."guests.xml"; $this->guestXml = new DomDocument("1.0"); if (!file_exists($this->guestXmlFile)){ $status = $this->generateXML(); } else { $this->guestXml->load($this->guestXmlFile); $this->root = $this->guestXml->getElementsByTagName("guests")->item(0); } $this->xp = new domxpath($this->guestXml); } private function generateXML() { $this->root = $this->guestXml->createElement('guests'); $this->guestXml->appendChild($this->root); $status = $this->guestXml->save($this->guestXmlFile); return $status; } public function GetId(){ $elements = $this->xp->query("//@xml:id"); // Now find New Valid ID if ($elements->length > 0) { $idList = array(); for ($i = 0; $i < $elements->length; $i++) $idList[$i] = $elements->item($i)->nodeValue; sort($idList); for ($i = 0; $i < $elements->length; $i++) { if ($idList[$i] > $i) { $newID = $i; break; } $newID = $i+1; } } else { $newID = 0;} return $newID; } public function checkGuestTimes(){ $Start_0 = time() - GuestSessionDuration*60; // in secs $startTimes = $this->xp->query("//guest[@start<".$Start_0."]/@xml:id"); if ($startTimes->length > 0) { for ($i = 0; $i < $startTimes->length; $i++) { $user = "guest".$startTimes->item($i)->value; $this->deltree(USERPATH.$user); $this->root->removeChild($startTimes->item($i)->parentNode); } $this->xp = new domxpath($this->guestXml); } } public function deleteGuest(){ $user = "guest".$this->Id; $this->deltree(USERPATH.$user); $theGuest = $this->guestXml->getElementById($this->Id); $this->root->removeChild($theGuest); $this->guestXml->save($this->guestXmlFile); } public function addGuest(){ if (($this->Id = $this->GetId()) < MaxGuests) { $guest = $this->guestXml->createElement("guest"); $guest->setAttribute('xml:id',$this->Id ); $guest->setAttribute('start',time()); $guest->appendChild($this->guestXml->createElement("IP", $this->Ip)); $guest->appendChild($this->guestXml->createElement("email", $this->email)); $this->root->appendChild($guest); $this->guestXml->save($this->guestXmlFile); return "guest".$this->Id; } else { return "allGuestLoginsInUse"; } } public function registerGuest(){ $guest_file = fopen(DATAPATH.'guest.login','a'); fwrite($guest_file, $this->email." ".$this->Ip." ".$this->Start['mday']."/".$this->Start['mon']."/".$this->Start['year']."\n"); fclose($guest_file); } public function deltree($f) { if (is_dir($f)) { $files = array_diff(scandir($f), array('.','..')); foreach($files as $sf) { if (is_dir("$f/$sf") && !is_link("$f/$sf")) { $this->deltree("$f/$sf"); } else { unlink("$f/$sf"); } } } if (is_dir($f)) rmdir($f); } } ?>