<?php//permissions bit flagsdefine("SG_GRP_READ", 1);define("SG_GRP_EDIT", 2);define("SG_GRP_ADD", 4);define("SG_GRP_DELETE", 8);define("SG_WLD_READ", 16);define("SG_WLD_EDIT", 32);define("SG_WLD_ADD", 64);define("SG_WLD_DELETE", 128);function getGallery($path){$gal = new sgGallery('.');$fp = @fopen($path."/metadata.csv","r");if($fp) {while($temp[] = fgetcsv($fp,2048));fclose($fp);@list($gal->filename,,$gal->owner,$gal->groups,$gal->permissions,$gal->categories,$gal->name,$gal->artist,$gal->email,$gal->copyright,$gal->desc,$gal->summary,$gal->date) = $temp[1];for($i=0;$i<count($temp)-3;$i++) {$gal->images[$i] = new sgImage();list($gal->images[$i]->filename,$gal->images[$i]->thumbnail,$gal->images[$i]->owner,$gal->images[$i]->groups,$gal->images[$i]->permissions,$gal->images[$i]->categories,$gal->images[$i]->name,$gal->images[$i]->artist,$gal->images[$i]->email,$gal->images[$i]->copyright,$gal->images[$i]->desc,$gal->images[$i]->location,$gal->images[$i]->date,$gal->images[$i]->camera,$gal->images[$i]->lens,$gal->images[$i]->film,$gal->images[$i]->darkroom,$gal->images[$i]->digital) = $temp[$i+2];//don't get image size and type}} else {//selected gallery does not exist or no metadatareturn null;}return $gal;}function putGallery($gallery, $path) {//backup data filecopy($path."/metadata.csv", $path."/metadata.bak");$fp = fopen($path."/metadata.csv","w");if(!$fp) return false;$success = true;$success &= (bool) fwrite($fp,"filename,thumbnail,owner,group(s),permissions,catergories,image name,artist name,artist email,copyright,image description,image location,date taken,camera info,lens info,film info,darkroom manipulation,digital manipulation");$success &= (bool) fwrite($fp,"\n\"".$gallery->filename."\",,".$gallery->owner.",".$gallery->groups.",".$gallery->permissions.",".$gallery->categories.',"'.str_replace('"','""',$gallery->name).'","'.str_replace('"','""',$gallery->artist).'","'.str_replace('"','""',$gallery->email).'","'.str_replace('"','""',$gallery->copyright).'","'.str_replace('"','""',$gallery->desc).'","'.str_replace('"','""',$gallery->summary).'","'.str_replace('"','""',$gallery->date).'"');for($i=0;$i<count($gallery->images);$i++)$success &= (bool) fwrite($fp,"\n\"".$gallery->images[$i]->filename."\",".$gallery->images[$i]->thumbnail.",".$gallery->images[$i]->owner.",".$gallery->images[$i]->groups.",".$gallery->images[$i]->permissions.",".$gallery->images[$i]->categories.',"'.str_replace('"','""',$gallery->images[$i]->name).'","'.str_replace('"','""',$gallery->images[$i]->artist).'","'.str_replace('"','""',$gallery->images[$i]->email).'","'.str_replace('"','""',$gallery->images[$i]->copyright).'","'.str_replace('"','""',$gallery->images[$i]->desc).'","'.str_replace('"','""',$gallery->images[$i]->location).'","'.str_replace('"','""',$gallery->images[$i]->date).'","'.str_replace('"','""',$gallery->images[$i]->camera).'","'.str_replace('"','""',$gallery->images[$i]->lens).'","'.str_replace('"','""',$gallery->images[$i]->film).'","'.str_replace('"','""',$gallery->images[$i]->darkroom).'","'.str_replace('"','""',$gallery->images[$i]->digital).'"');$success &= (bool) fclose($fp);return $success;}function setPerms($obj) {$obj->permissions = 0;if(!empty($_POST["sgGrpRead"])) $obj->permissions |= SG_GRP_READ;if(!empty($_POST["sgGrpEdit"])) $obj->permissions |= SG_GRP_EDIT;if(!empty($_POST["sgGrpAdd"])) $obj->permissions |= SG_GRP_ADD;if(!empty($_POST["sgGrpDelete"])) $obj->permissions |= SG_GRP_DELETE;if(!empty($_POST["sgWldRead"])) $obj->permissions |= SG_WLD_READ;if(!empty($_POST["sgWldEdit"])) $obj->permissions |= SG_WLD_EDIT;if(!empty($_POST["sgWldAdd"])) $obj->permissions |= SG_WLD_ADD;if(!empty($_POST["sgWldDelete"])) $obj->permissions |= SG_WLD_DELETE;$obj->groups = $_REQUEST["sgGroups"];$obj->owner = $_REQUEST["sgOwner"];return $obj;}function convertDirectory ($path){if (is_dir($path)) {$gallery = getGallery($path);echo "<ul><li>Checking $path<br />\n";if($gallery) {if($gallery->summary != "" && empty($_REQUEST["convertOverwrite"]))echo "Did NOT overwrite non-empty summary in $path<br />\n";else {if($_REQUEST["convertType"]!='none')$gallery->summary = $gallery->desc;if($_REQUEST["convertType"]=='move')$gallery->desc = "";}$gallery = setPerms($gallery);for($i=0; $i<count($gallery->images); $i++)$gallery->images[$i] = setPerms($gallery->images[$i]);if(putGallery($gallery,$path))echo "Successfully converted $path<br />\n";elseecho "Problem saving data file for $path<br />\n";} elseecho "Skipping $path<br />\n";$d = dir($path);while (($file = $d->read()) !== false) {if ($file == '.' || $file == '..') continue;$path = $d->path."/".$file;if (is_dir($path)) {convertDirectory($path);}}echo "</li></ul>\n";}}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>database converter</title><link rel="stylesheet" type="text/css" href="tools.css" /></head><body><h1>database converter</h1><?phpif(isset($_REQUEST["convertType"])) {include "../includes/config.class.php";include "../includes/gallery.class.php";include "../includes/image.class.php";$config = new sgConfig("../singapore.ini");$config->base_path = "../";//echo "<ul>\n";convertDirectory($config->base_path.$config->pathto_galleries);//echo "</ul>\n";echo "<p>All operations complete.</p>\n";} else { ?><p>This will convert all your metadata files from singapore 0.9.6, 0.9.7, 0.9.8 or 0.9.9 to 0.9.10.</p><form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"><h3>summary field</h3><p>There is a new gallery summary field that is displayed instead of thedescription in the parent gallery. You can choose to either copy or move theold description field to the summary field or leave both untouched:</p><p><input type="radio" class="radio" name="convertType" value="copy" checked="true" /> Copy<br /><input type="radio" class="radio" name="convertType" value="move" /> Move<br /><input type="radio" class="radio" name="convertType" value="none" /> Neither<br /><p>By default only empty summary fields will be written to. Check this option toallow the summary field to be overwritten <input type="checkbox" class="checkbox" name="convertOverwrite" /></p><h3>permissions</h3><p>This version introduces multiple authorised users and image & gallerypermissions. Please choose the default permissions that you would like allobjects to be set to. The default permissions selected below are recommended asthey will make all images & galleries readable by everyone but onlymodifiable by administrators. See the readme for more information on thepermissions model used by singapore.</p><table><tr><td>Owner</td><td><input type="text" name="sgOwner" value="__nobody__" /></td></tr><tr><td>Groups</td><td><input type="text" name="sgGroups" value="" /></td></tr><tr><td>Group permissions</td><td><div class="inputbox"><input type="checkbox" class="checkbox" name="sgGrpRead" checked="true"/> Read<input type="checkbox" class="checkbox" name="sgGrpEdit" /> Edit<input type="checkbox" class="checkbox" name="sgGrpAdd" /> Add<input type="checkbox" class="checkbox" name="sgGrpDelete" /> Delete</div></td></tr><tr><td>World permissions</td><td><div class="inputbox"><input type="checkbox" class="checkbox" name="sgWldRead" checked="true"/> Read<input type="checkbox" class="checkbox" name="sgWldEdit" /> Edit<input type="checkbox" class="checkbox" name="sgWldAdd" /> Add<input type="checkbox" class="checkbox" name="sgWldDelete" /> Delete</div></td></tr></table><p>Please note that while the script will create backups of your metadata filesit is highly recommended that you create your own backups for added security.</p><input type="submit" class="button" value="Go" /></p></form><?php } ?><p><a href="index.html">Return</a> to tools.</p></body></html>