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 | 
