summaryrefslogtreecommitdiff
path: root/utils/album.php
diff options
context:
space:
mode:
Diffstat (limited to 'utils/album.php')
-rw-r--r--utils/album.php137
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