0,0 → 1,252 |
<?php |
|
/** |
* IO class. |
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License |
* @copyright (c)2003, 2004 Tamlyn Rhodes |
* @version $Id: iosql.class.php,v 1.5 2006/01/22 03:25:36 tamlyn Exp $ |
*/ |
|
//include the base IO class |
require_once dirname(__FILE__)."/io.class.php"; |
|
/** |
* Class used to read and write data to and from a MySQL database. |
* @package singapore |
* @author Tamlyn Rhodes <tam at zenology dot co dot uk> |
* @copyright (c)2004 Tamlyn Rhodes |
*/ |
class sgIOsql extends sgIO |
{ |
|
/** |
* Overridden in subclasses |
*/ |
function query($query) { } |
function escape_string($query) { } |
function fetch_array($res) { } |
function num_rows($res) { } |
function error() |
{ |
return "unknown error"; |
} |
|
/** |
* Fetches gallery info for the specified gallery and immediate children. |
* @param string gallery id |
* @param string language code spec for this request (optional) |
* @param int number of levels of child galleries to fetch (optional) |
*/ |
function &getGallery($galleryId, &$parent, $getChildGalleries = 1, $language = null) |
{ |
$gal =& new sgGallery($galleryId, $parent); |
|
if($language == null) $language = $this->config->default_language; |
|
//try to open language specific gallery info |
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."galleries ". |
"WHERE id='".$this->escape_string($galleryId)."' ". |
"AND lang='".$this->escape_string($language)."'"); |
|
//if fail then try to open generic gallery info |
if(!$res || !$this->num_rows($res)) |
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."galleries ". |
"WHERE id='".$this->escape_string($galleryId)."' and lang=''"); |
//if that succeeds then get galleries from db |
if($res && $this->num_rows($res)) { |
$galinfo = $this->fetch_array($res); |
$gal->filename = $galinfo['filename']; |
$gal->owner = $galinfo['owner']; |
$gal->groups = $galinfo['groups']; |
$gal->permissions = $galinfo['permissions']; |
$gal->categories = $galinfo['categories']; |
$gal->name = $galinfo['name']; |
$gal->artist = $galinfo['artist']; |
$gal->email = $galinfo['email']; |
$gal->copyright = $galinfo['copyright']; |
$gal->desc = $galinfo['description']; |
$gal->summary = $galinfo['summary']; |
$gal->date = $galinfo['date']; |
$gal->hits = $galinfo['hits']; |
$gal->lasthit = $galinfo['lasthit']; |
|
//try to open language specific image info |
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."images ". |
"WHERE galleryid='".$this->escape_string($galleryId)."' ". |
"AND lang='".$this->escape_string($language)."'"); |
|
//if fail then try to open generic image info |
if(!$res || !$this->num_rows($res)) |
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."images ". |
"WHERE galleryid='".$this->escape_string($galleryId)."' and lang=''"); |
for($i=0;$i<$this->num_rows($res);$i++) { |
$imginfo = $this->fetch_array($res); |
$gal->images[$i] =& new sgImage($imginfo['filename'], $gal); |
$gal->images[$i]->thumbnail = $imginfo['thumbnail']; |
$gal->images[$i]->owner = $imginfo['owner']; |
$gal->images[$i]->groups = $imginfo['groups']; |
$gal->images[$i]->permissions = $imginfo['permissions']; |
$gal->images[$i]->categories = $imginfo['categories']; |
$gal->images[$i]->name = $imginfo['name']; |
$gal->images[$i]->artist = $imginfo['artist']; |
$gal->images[$i]->email = $imginfo['email']; |
$gal->images[$i]->copyright = $imginfo['copyright']; |
$gal->images[$i]->desc = $imginfo['description']; |
$gal->images[$i]->location = $imginfo['location']; |
$gal->images[$i]->date = $imginfo['date']; |
$gal->images[$i]->camera = $imginfo['camera']; |
$gal->images[$i]->lens = $imginfo['lens']; |
$gal->images[$i]->film = $imginfo['film']; |
$gal->images[$i]->darkroom = $imginfo['darkroom']; |
$gal->images[$i]->digital = $imginfo['digital']; |
$gal->images[$i]->width = $imginfo['width']; |
$gal->images[$i]->height = $imginfo['height']; |
$gal->images[$i]->type = $imginfo['type']; |
$gal->images[$i]->hits = $imginfo['hits']; |
$gal->images[$i]->lasthit = $imginfo['lasthit']; |
} |
|
} else |
//no record found so use iifn method implemented in parent class |
return parent::getGallery($galleryId, $parent, $getChildGalleries, $language); |
|
//discover child galleries |
$dir = Singapore::getListing($this->config->base_path.$this->config->pathto_galleries.$galleryId."/"); |
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; |
} |
|
/** |
* Stores gallery information. |
* @param sgGallery instance of gallery object to be stored |
*/ |
function putGallery($gal, $language = "") { |
//insert gallery info |
$success = (bool) $this->query("REPLACE INTO ".$this->config->sql_prefix."galleries ". |
"(id,lang,filename,owner,groups,permissions,categories,name,artist,". |
"email,copyright,description,summary,date,hits,lasthit) VALUES ('". |
$this->escape_string($gal->id)."','".$language."','". |
$this->escape_string($gal->filename)."','". |
$gal->owner."','".$gal->groups."',".$gal->permissions.",'". |
$this->escape_string($gal->categories)."','". |
$this->escape_string($gal->name)."','". |
$this->escape_string($gal->artist)."','". |
$this->escape_string($gal->email)."','". |
$this->escape_string($gal->copyright)."','". |
$this->escape_string($gal->desc)."','". |
$this->escape_string($gal->summary)."','". |
$this->escape_string($gal->date)."',". |
$gal->hits.",".$gal->lasthit.")"); |
//delete all image info |
$success &= (bool) $this->query("DELETE FROM ".$this->config->sql_prefix."images ". |
"WHERE galleryid='".$this->escape_string($gal->id)."' AND lang='".$language."'"); |
for($i=0;$i<count($gal->images);$i++) { |
$success &= (bool) $this->query("INSERT INTO ".$this->config->sql_prefix."images ". |
"(galleryid,lang,filename,owner,groups,permissions,categories,name,artist,". |
"email,copyright,description,location,date,camera,lens,film,darkroom,digital,". |
"width,height,type,hits,lasthit) VALUES ('". |
$this->escape_string($gal->id)."','".$language."','". |
$this->escape_string($gal->images[$i]->id)."','". |
$gal->images[$i]->owner."','".$gal->images[$i]->groups."',". |
$gal->images[$i]->permissions.",'". |
$this->escape_string($gal->images[$i]->categories)."','". |
$this->escape_string($gal->images[$i]->name)."','". |
$this->escape_string($gal->images[$i]->artist)."','". |
$this->escape_string($gal->images[$i]->email)."','". |
$this->escape_string($gal->images[$i]->copyright)."','". |
$this->escape_string($gal->images[$i]->desc)."','". |
$this->escape_string($gal->images[$i]->location)."','". |
$this->escape_string($gal->images[$i]->date)."','". |
$this->escape_string($gal->images[$i]->camera)."','". |
$this->escape_string($gal->images[$i]->lens)."','". |
$this->escape_string($gal->images[$i]->film)."','". |
$this->escape_string($gal->images[$i]->darkroom)."','". |
$this->escape_string($gal->images[$i]->digital)."',". |
$gal->images[$i]->width.",".$gal->images[$i]->height.",". |
$gal->images[$i]->type.",".$gal->images[$i]->hits.",". |
$gal->images[$i]->lasthit.")"); |
} |
return $success; |
} |
|
/** |
* Hits are loaded by getGallery so this method does nothing |
* @param sgGallery gallery object to load hits into |
*/ |
function getHits(&$gal) { |
return true; |
} |
|
/** |
* Stores gallery hits. |
* @param sgGallery gallery object to store |
*/ |
function putHits($gal) { |
//if gallery data doesn't exist in database, add it |
$res = $this->query("SELECT id FROM ".$this->config->sql_prefix."galleries ". |
"WHERE id='".$this->escape_string($gal->id)."'"); |
if(!$res || !$this->num_rows($res)) |
$this->putGallery($gal); |
|
$success = (bool) $this->query("UPDATE ".$this->config->sql_prefix."galleries ". |
"SET hits=".$gal->hits.", lasthit=".$gal->lasthit." ". |
"WHERE id='".$this->escape_string($gal->id)."'"); |
foreach($gal->images as $img) |
$success &= (bool) $this->query("UPDATE ".$this->config->sql_prefix."images ". |
"SET hits=".$img->hits.", lasthit=".$img->lasthit." ". |
"WHERE galleryid='".$this->escape_string($gal->id)."' ". |
"AND filename='".$this->escape_string($img->id)."'"); |
|
return $success; |
} |
|
/** |
* Fetches all registered users. |
*/ |
function getUsers() { |
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."users"); |
|
for($i=0;$i<$this->num_rows($res);$i++) { |
$usrinfo = $this->fetch_array($res); |
$users[$i] = new sgUser($usrinfo['username'],$usrinfo['userpass']); |
$users[$i]->permissions = $usrinfo['permissions']; |
$users[$i]->groups = $usrinfo['groups']; |
$users[$i]->email = $usrinfo['email']; |
$users[$i]->fullname = $usrinfo['fullname']; |
$users[$i]->description = $usrinfo['description']; |
$users[$i]->stats = $usrinfo['stats']; |
} |
|
return $users; |
} |
|
/** |
* Stores all registered users. |
* @param array an array of sgUser objects representing the users to store |
*/ |
function putUsers($users) { |
//empty table |
$success = (bool) $this->query("DELETE FROM ".$this->config->sql_prefix."users"); |
for($i=0;$i<count($users);$i++) |
$success &= (bool) $this->query("INSERT INTO ".$this->config->sql_prefix."users ". |
"(username,userpass,permissions,groups,email,fullname,description,stats) VALUES ('". |
$this->escape_string($users[$i]->username)."','". |
$users[$i]->userpass."',".$users[$i]->permissions.",'". |
$this->escape_string($users[$i]->groups)."','". |
$this->escape_string($users[$i]->email)."','". |
$this->escape_string($users[$i]->fullname)."','". |
$this->escape_string($users[$i]->description)."','". |
$this->escape_string($users[$i]->stats)."')"); |
|
return $success; |
} |
} |
|
?> |