file = $file; $this->text = $text; } } class Album { // Album directory (and identifier) public $album; // Photo array public $photos; // Album data public $title; public $icon; public $copyright; public function add($photo) { // First added image is automatically made album icon. if($this->icon == "") $this->icon = $photo->file; $key = $photo->file; $this->photos[$key] = $photo; } public function write() { $fp = fopen($this->file, "w"); fwrite($fp, "\n"); fwrite($fp, "title . "\" icon=\"".$this->icon."\" copyright=\"" . $this->copyright . "\">\n"); foreach($this->photos as $photo) { fwrite($fp, " file . "\"\n"); fwrite($fp, " text=\"" . $photo->text . "\">\n"); fwrite($fp, " \n"); } fwrite($fp, "\n"); fclose($fp); } private function read() { $dom = new DomDocument; $dom->preserveWhiteSpace = FALSE; $dom->load($this->file); $params = $dom->getElementsByTagName('album'); foreach ($params as $param) { $this->title = $param->getAttribute('title'); $this->icon = $param->getAttribute('icon'); $this->copyright = $param->getAttribute('copyright'); } $params = $dom->getElementsByTagName('photo'); foreach ($params as $param) { $photo = new Photo($param->getAttribute('file'), $param->getAttribute('text')); $this->add($photo); } // Key sort if(sizeof($this->photos) > 0) ksort($this->photos); } public function Album($album) { global $ALBUMS_DIR; $this->album = $album; $this->file = $ALBUMS_DIR ."/". $album . "/album.xml"; $this->read(); } } function getAllAlbums() { global $ALBUMS_DIR; $albums = array(); $handle = opendir($ALBUMS_DIR . "/"); $albumdirs = array(); while($albumdir = readdir($handle)) { array_push($albumdirs, $albumdir); } rsort($albumdirs); foreach($albumdirs as $albumdir) { if(!strstr($albumdir, ".") && !strstr($albumdir, "..")) { $album = new Album($albumdir); array_push($albums, $album); } } return $albums; } function getRandomPhoto() { $album; $photo; $albums = getAllAlbums(); $numalbums = sizeof($albums); $ralbum = rand(0, sizeof($albums)-1); foreach($albums as $a) { $album = $a; $ralbum--; if(!$ralbum) break; } $numphotos = sizeof($album->photos); $rphoto = rand(0, $numphotos-1); foreach($album->photos as $p) { $photo = $p; $rphoto--; if(!$rphoto) break; } // echo "

".$numalbums . " " .$ralbum . " ".$numphotos . " ".$rphoto . "

"; return array($album, $photo); } ?>