X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.class.php;h=b375ffde64ccd99b680e09f626e358d0465170ef;hp=cfa92576ce55b9c12f6466e08c3b5e251f379af4;hb=deb4800cd1e9b52f1c650d8ef0a03bcabb74ebb3;hpb=8ab8f2cd84b981d1ae7272a05cd087a5f4924149 diff --git a/phpfspot.class.php b/phpfspot.class.php index cfa9257..b375ffd 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -66,23 +66,31 @@ class PHPFSPOT { ); /* Check necessary requirements */ - if(!$this->checkRequirements()) { + if(!$this->check_requirements()) { exit(1); } - $this->db = new PHPFSPOT_DB($this, $this->cfg->fspot_db); + /******* Opening F-Spot's sqlite database *********/ + + /* Check if database file is writeable */ if(!is_writeable($this->cfg->fspot_db)) { print $this->cfg->fspot_db ." is not writeable for user ". $this->getuid() ."\n"; exit(1); } - $this->dbver = $this->getFspotDBVersion(); + /* open the database */ + $this->db = new PHPFSPOT_DB($this, $this->cfg->fspot_db); - if(!is_writeable(dirname($this->cfg->phpfspot_db))) { - print dirname($this->cfg->phpfspot_db) .": directory is not writeable for user ". $this->getuid() ."\n"; - exit(1); + /* change sqlite temp directory, if requested */ + if(isset($this->cfg->sqlite_temp_dir)) { + $this->db->db_exec(" + PRAGMA + temp_store_directory = '". $this->cfg->sqlite_temp_dir ."' + "); } + $this->dbver = $this->getFspotDBVersion(); + if(!is_writeable($this->cfg->base_path ."/templates_c")) { print $this->cfg->base_path ."/templates_c: directory is not writeable for user ". $this->getuid() ."\n"; exit(1); @@ -93,20 +101,35 @@ class PHPFSPOT { exit(1); } - $this->cfg_db = new PHPFSPOT_DB($this, $this->cfg->phpfspot_db); + /******* Opening phpfspot's sqlite database *********/ + + /* Check if directory where the database file is stored is writeable */ + if(!is_writeable(dirname($this->cfg->phpfspot_db))) { + print dirname($this->cfg->phpfspot_db) .": directory is not writeable for user ". $this->getuid() ."\n"; + exit(1); + } + + /* Check if database file is writeable */ if(!is_writeable($this->cfg->phpfspot_db)) { print $this->cfg->phpfspot_db ." is not writeable for user ". $this->getuid() ."\n"; exit(1); } - $this->check_config_table(); + /* open the database */ + $this->cfg_db = new PHPFSPOT_DB($this, $this->cfg->phpfspot_db); - /* include Smarty template engine */ - if(!$this->check_readable($this->cfg->smarty_path .'/libs/Smarty.class.php')) { - exit(1); + /* change sqlite temp directory, if requested */ + if(isset($this->cfg->sqlite_temp_dir)) { + $this->cfg_db->db_exec(" + PRAGMA + temp_store_directory = '". $this->cfg->sqlite_temp_dir ."' + "); } - require $this->cfg->smarty_path .'/libs/Smarty.class.php'; - /* overload Smarty class if our own template handler */ + + /* Check if some tables need to be created */ + $this->check_config_table(); + + /* overload Smarty class with our own template handler */ require_once "phpfspot_tmpl.php"; $this->tmpl = new PHPFSPOT_TMPL($this); @@ -460,8 +483,11 @@ class PHPFSPOT { $thumb_path = $this->get_thumb_path($this->cfg->photo_width, $photo); } + /* get mime-type, height and width from the original photo */ + $info = getimagesize($orig_path); + /* get EXIF information if JPEG */ - if($details['mime'] == "image/jpeg") { + if($info['mime'] == "image/jpeg") { $meta = $this->get_meta_informations($orig_path); } @@ -469,7 +495,6 @@ class PHPFSPOT { if(isset($meta['ExifImageWidth'])) { $meta_res = $meta['ExifImageWidth'] ."x". $meta['ExifImageLength']; } else { - $info = getimagesize($orig_path); $meta_res = $info[0] ."x". $info[1]; } @@ -493,13 +518,13 @@ class PHPFSPOT { return; } - $info = getimagesize($thumb_path); + $info_thumb = getimagesize($thumb_path); $this->tmpl->assign('description', $details['description']); $this->tmpl->assign('image_name', $this->parse_uri($details['uri'], 'filename')); - $this->tmpl->assign('width', $info[0]); - $this->tmpl->assign('height', $info[1]); + $this->tmpl->assign('width', $info_thumb[0]); + $this->tmpl->assign('height', $info_thumb[1]); $this->tmpl->assign('ExifMadeOn', $meta_date); $this->tmpl->assign('ExifMadeWith', $meta_make); $this->tmpl->assign('ExifOrigResolution', $meta_res); @@ -523,6 +548,7 @@ class PHPFSPOT { $this->tmpl->assign('next_img', $next_img); } $this->tmpl->assign('mini_width', $this->cfg->mini_width); + $this->tmpl->assign('photo_width', $this->cfg->photo_width); $this->tmpl->assign('photo_number', $i); $this->tmpl->assign('photo_count', count($all_photos)); @@ -563,6 +589,10 @@ class PHPFSPOT { $max_size = 125; // max font size in % $min_size = 75; // min font size in % + // color + $max_sat = hexdec('cc'); + $min_sat = hexdec('44'); + // get the largest and smallest array values $max_qty = max(array_values($tags)); $min_qty = min(array_values($tags)); @@ -576,6 +606,7 @@ class PHPFSPOT { // determine the font-size increment // this is the increase per tag quantity (times used) $step = ($max_size - $min_size)/($spread); + $step_sat = ($max_sat - $min_sat)/($spread); // loop through our tag array foreach ($tags as $key => $value) { @@ -591,8 +622,14 @@ class PHPFSPOT { // uncomment if you want sizes in whole %: $size = ceil($size); + $color = $min_sat + ($value - $min_qty) * $step_sat; + + $r = '44'; + $g = dechex($color); + $b = '88'; + if(isset($this->tags[$key])) { - $output.= "". $this->tags[$key] .", "; + $output.= "". $this->tags[$key] .", "; } } @@ -1766,7 +1803,7 @@ class PHPFSPOT { /** * check if all requirements are met */ - private function checkRequirements() + private function check_requirements() { if(!function_exists("imagecreatefromjpeg")) { print "PHP GD library extension is missing
\n"; @@ -1795,6 +1832,11 @@ class PHPFSPOT { print "PEAR Console_Getopt package is missing
\n"; $missing = true; } + @include_once $this->cfg->smarty_path .'/libs/Smarty.class.php'; + if(isset($php_errormsg) && preg_match('/Failed opening.*for inclusion/i', $php_errormsg)) { + print "Smarty template engine can not be found in ". $this->cfg->smarty_path ."/libs/Smarty.class.php
\n"; + $missing = true; + } ini_restore('track_errors'); if(isset($missing)) @@ -1802,7 +1844,7 @@ class PHPFSPOT { return true; - } // checkRequirements() + } // check_requirements() private function _debug($text) {