<?php/*** IO class.* @license http://opensource.org/licenses/gpl-license.php GNU General Public License* @copyright (c)2003-2005 Tamlyn Rhodes* @version $Id: io.class.php,v 1.11 2005/12/04 04:39:46 tamlyn Exp $*//*** Abstract superclass of all IO classes. Also implements iifn code.* @package singapore* @abstract* @author Tamlyn Rhodes <tam at zenology dot co dot uk>* @copyright (c)2003, 2004 Tamlyn Rhodes*/class sgIO{/*** Reference to a {@link sgConfig} object representing the current* script configuration* @var sgConfig*/var $config;/*** Constructor. Can be over-ridden by subclass but does not need to be.* @param sgConfig pointer to current script configuration object*/function sgIO(){$this->config =& sgConfig::getInstance();}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getName(){return "undefined";}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getVersion(){return "undefined";}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getAuthor(){return "undefined";}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getDescription(){return "undefined";}/*** Fetches gallery info for the specified gallery (and immediate children).* @param string gallery id* @param sgItem reference to parent gallery* @param int number of levels of child galleries to fetch (optional)* @param string language code spec for this request (optional, ignored)*/function &getGallery($galleryId, &$parent, $getChildGalleries = 1, $language = null){$gal =& new sgGallery($galleryId, $parent);if(file_exists($this->config->base_path.$this->config->pathto_galleries.$galleryId)) {$bits = explode("/",$gal->id);$temp = strtr($bits[count($bits)-1], "_", " ");if($temp == ".")$gal->name = $this->config->gallery_name;elseif($this->config->enable_iifn && strpos($temp, " - "))list($gal->artist,$gal->name) = explode(" - ", $temp);else$gal->name = $temp;$dir = Singapore::getListing($this->config->base_path.$this->config->pathto_galleries.$gal->id."/", $this->config->recognised_extensions);//set gallery thumbnail to first image in gallery (if any)if(isset($dir->files[0])) $gal->filename = $dir->files[0];for($i=0; $i<count($dir->files); $i++)//always get the first image for the gallery thumbnail//but only get the rest if child galleries are requestedif($getChildGalleries || $i==0) {$gal->images[$i] =& new sgImage($dir->files[$i], $gal);//trim off file extension and replace underscores with spaces$temp = strtr(substr($gal->images[$i]->id, 0, strrpos($gal->images[$i]->id,".")-strlen($gal->images[$i]->id)), "_", " ");//split string in two on " - " delimiterif($this->config->enable_iifn && strpos($temp, " - "))list($gal->images[$i]->artist,$gal->images[$i]->name) = explode(" - ", $temp);else$gal->images[$i]->name = $temp;//get image size and typelist($gal->images[$i]->width,$gal->images[$i]->height,$gal->images[$i]->type) = @GetImageSize($this->config->base_path.$this->config->pathto_galleries.$gal->id."/".$gal->images[$i]->id);//set parent link$gal->images[$i]->parent =& $gal;} else//otherwise just create an empty array of the appropriate length$gal->images[$i] = $dir->files[$i];} else {//selected gallery does not existreturn null;}//discover child galleriesif($getChildGalleries)//but only fetch their info if required tooforeach($dir->dirs as $gallery)$gal->galleries[] =& $this->getGallery($galleryId."/".$gallery, $gal, $getChildGalleries-1, $language);else//otherwise just copy their names in so they can be counted$gal->galleries = $dir->dirs;return $gal;}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function putGallery($gal) {return false;}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getHits($gal) {return false;}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function putHits($gal) {return false;}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function getUsers() {return array();}/*** Pseudo-abstract method to be over-ridden in subclasses.*/function putUsers($users) {return false;}}?>