diff options
author | deva <deva> | 2008-10-04 10:38:03 +0000 |
---|---|---|
committer | deva <deva> | 2008-10-04 10:38:03 +0000 |
commit | cce5e7710295021b41d9aaecc503a60fb99256be (patch) | |
tree | 660235be91fb821e976c7ae62347eb368ce87524 /utils/album.php |
Initial revision
Diffstat (limited to 'utils/album.php')
-rw-r--r-- | utils/album.php | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/utils/album.php b/utils/album.php new file mode 100644 index 0000000..1b6b662 --- /dev/null +++ b/utils/album.php @@ -0,0 +1,137 @@ +<?php +include_once("thumbnail.php"); + +class Photo { + public $file; + public $text; + + function Photo($file, $text) { + $this->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, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<album title=\"". $this->title . "\" icon=\"".$this->icon."\" copyright=\"" . $this->copyright . "\">\n"); + foreach($this->photos as $photo) { + fwrite($fp, " <photo file=\"" . $photo->file . "\"\n"); + fwrite($fp, " text=\"" . $photo->text . "\">\n"); + fwrite($fp, " </photo>\n"); + } + fwrite($fp, "</album>\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 "<p>".$numalbums . " " .$ralbum . " ".$numphotos . " ".$rphoto . "</p>"; + + return array($album, $photo); +} + + +?>
\ No newline at end of file |