0,0 → 1,174 |
<?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 requested |
if($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 " - " delimiter |
if($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 type |
list( |
$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 exist |
return null; |
} |
|
//discover child galleries |
if($getChildGalleries) |
//but only fetch their info if required too |
foreach($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; |
} |
} |
|
?> |