$this->cfg = new PHPFSPOT_CFG;
$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!";
+ exit(1);
+ }
+
$this->cfg_db = new PHPFSPOT_DB(&$this, $this->cfg->phpfspot_db);
$this->check_config_table();
$this->tmpl->assign('searchfor', $_SESSION['searchfor']);
$this->tmpl->assign('page_title', $this->cfg->page_title);
$this->tmpl->assign('current_condition', $_SESSION['tag_condition']);
- $this->tmpl->assign('from_date', $this->get_calendar('from'));
- $this->tmpl->assign('to_date', $this->get_calendar('to'));
+
+ $_SESSION['start_action'] = $_GET['mode'];
switch($_GET['mode']) {
case 'showpi':
if(isset($_GET['tags'])) {
$_SESSION['selected_tags'] = split(',', $_GET['tags']);
}
+ if(isset($_GET['from_date'])) {
+ $_SESSION['from_date'] = $_GET['from_date'];
+ }
+ if(isset($_GET['to_date'])) {
+ $_SESSION['to_date'] = $_GET['to_date'];
+ }
break;
case 'showp':
if(isset($_GET['tags'])) {
$_SESSION['selected_tags'] = split(',', $_GET['tags']);
+ $_SESSION['start_action'] = 'showp';
}
if(isset($_GET['id'])) {
$_SESSION['current_photo'] = $_GET['id'];
+ $_SESSION['start_action'] = 'showp';
+ }
+ if(isset($_GET['from_date'])) {
+ $_SESSION['from_date'] = $_GET['from_date'];
+ }
+ if(isset($_GET['to_date'])) {
+ $_SESSION['to_date'] = $_GET['to_date'];
}
break;
case 'export':
}
+ $this->tmpl->assign('from_date', $this->get_calendar('from'));
+ $this->tmpl->assign('to_date', $this->get_calendar('to'));
$this->tmpl->assign('content_page', 'welcome.tpl');
$this->tmpl->show("index.tpl");
}
$details = $this->get_photo_details($photo);
+
+ if(!$details) {
+ print "error";
+ return;
+ }
+
$orig_path = $this->translate_path($details['directory_path']) ."/". $details['name'];
$thumb_path = $this->cfg->base_path ."/thumbs/". $this->cfg->photo_width ."_". $this->getMD5($photo);
}
if(!is_readable($orig_path)) {
- $this->_warning("Photo ". $orig_path ." is not readable for user ". get_current_user() ."<br />\n");
+ $this->_warning("Photo ". $orig_path ." is not readable for user ". $this->getuid() ."<br />\n");
}
/* If the thumbnail doesn't exist yet, try to create it */
if(!file_exists($thumb_path)) {
$this->gen_thumb($photo, true);
+ $thumb_path = $this->cfg->base_path ."/thumbs/". $this->cfg->photo_width ."_". $this->getMD5($photo);
}
$meta = $this->get_meta_informations($orig_path);
if($current_tags != "") {
$extern_link.= "&tags=". $current_tags;
}
+ if(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) {
+ $extern_link.= "&from_date=". $_SESSION['from_date'] ."&to_date=". $_SESSION['to_date'];
+ }
$this->tmpl->assign('extern_link', $extern_link);
}
else {
$this->_warning("Can't open file ". $thumb_path ."\n");
+ return;
}
if($previous_img) {
public function addTag($tag)
{
+ // if the result of a date search are displayed, reset them
+ $this->resetDateSearch();
+
if(!isset($_SESSION['selected_tags']))
$_SESSION['selected_tags'] = Array();
if($current_tags != "") {
$extern_link.= "&tags=". $current_tags;
}
+ if(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) {
+ $extern_link.= "&from_date=". $_SESSION['from_date'] ."&to_date=". $_SESSION['to_date'];
+ }
$export_link = "index.php?mode=export";
public function create_thumbnail($orig_image, $thumb_image, $width)
{
- if(!file_exists($orig_image))
+ if(!file_exists($orig_image)) {
return false;
+ }
$details = getimagesize($orig_image);
$cur_height = imagesy($src_img);
// If requested width is more then the actual image width,
- // do not generate a thumbnail
+ // do not generate a thumbnail, instead safe the original
+ // as thumbnail but with lower quality
if($width >= $cur_width) {
+ $result = imagejpeg($src_img, $thumb_image, 75);
imagedestroy($src_img);
return true;
}
}
if(!is_readable($full_path)) {
- $this->_warning("File ". $full_path ." is not readable for ". get_current_user() ."\n");
+ $this->_warning("File ". $full_path ." is not readable for ". $this->getuid() ."\n");
return;
}
if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
$error = 1;
}
-
/* if the file hasn't changed there is no need to regen the thumb */
elseif($file_md5 != $this->getMD5($idx) || $force) {
private function get_calendar($mode)
{
- $output = "<input type=\"text\" size=\"3\" id=\"". $mode ."year\" value=\"". date("Y") ."\" />\n";
- $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."month\" value=\"". date("m") ."\" />\n";
- $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."day\" value=\"". date("d") ."\" />\n";
+ $year = $_SESSION[$mode .'_date'] ? date("Y", strtotime($_SESSION[$mode .'_date'])) : date("Y");
+ $month = $_SESSION[$mode .'_date'] ? date("m", strtotime($_SESSION[$mode .'_date'])) : date("m");
+ $day = $_SESSION[$mode .'_date'] ? date("d", strtotime($_SESSION[$mode .'_date'])) : date("d");
+
+ $output = "<input type=\"text\" size=\"3\" id=\"". $mode ."year\" value=\"". $year ."\" />\n";
+ $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."month\" value=\"". $month ."\" />\n";
+ $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."day\" value=\"". $day ."\" />\n";
return $output;
} // get_calendar()
if($current_tags != "") {
$orig_url.= "&tags=". $current_tags;
}
+ if(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) {
+ $orig_url.= "&from_date=". $_SESSION['from_date'] ."&to_date=". $_SESSION['to_date'];
+ }
$thumb_url = $protocol ."://". $server_name . $this->cfg->web_path ."phpfspot_img.php?idx=". $picture ."&width=". $this->cfg->thumb_width;
}
} // getCurrentPhoto()
+ public function whatToDo()
+ {
+ if(isset($_SESSION['selected_tags']) && !empty($_SESSION['selected_tags'])) {
+ return "showpi_tags";
+ }
+ elseif(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) {
+ return "showpi_date";
+ }
+ elseif(isset($_SESSION['current_photo'])) {
+ return "show_photo";
+ }
+ elseif(isset($_SESSION['start_action']) && $_SESSION['start_action'] == 'showpi') {
+ return "showpi";
+ }
+
+ return "nothing special";
+
+ } // whatToDo()
+
+ private function getuid()
+ {
+ if($uid = posix_getuid()) {
+ if($user = posix_getpwuid($uid)) {
+ return $user['name'];
+ }
+ }
+
+ return 'n/a';
+
+ } // getuid()
+
}
?>