$details = $this->get_photo_details($photo);
$orig_path = $this->translate_path($details['directory_path']) ."/". $details['name'];
- $thumb_path = $this->translate_path($details['directory_path']) ."/thumbs/". $this->cfg->photo_width ."_". $details['name'];
+ $thumb_path = $this->cfg->base_path ."/thumbs/". $this->cfg->photo_width ."_". $this->getMD5($photo);
/* If the thumbnail doesn't exist yet, try to create it */
if(!file_exists($thumb_path)) {
}
/* return according the selected tags */
- if(isset($_SESSION['selected_tags'])) {
+ if(isset($_SESSION['selected_tags']) && !empty($_SESSION['selected_tags'])) {
$selected = "";
foreach($_SESSION['selected_tags'] as $tag)
$selected.= $tag .",";
$count = count($photos);
+ if(!$_SESSION['begin_with'] || $_SESSION['begin_with'] == 0)
+ $begin_with = 0;
+ else
+ $begin_with = $_SESSION['begin_with'];
+
+ if($this->cfg->rows_per_page == 0)
+ $end_with = $count;
+ else
+ $end_with = $begin_with + ($this->cfg->rows_per_page * $this->cfg->thumbs_per_row);
+
+
$rows = 0;
$cols = 0;
$images[$rows] = Array();
+ $img_height[$rows] = Array();
+ $img_width[$rows] = Array();
- for($i = 0; $i < $count; $i++) {
+ for($i = $begin_with; $i < $end_with; $i++) {
$images[$rows][$cols] = $photos[$i];
+ $thumb_path = $this->cfg->base_path ."/thumbs/". $this->cfg->thumb_width ."_". $this->getMD5($photos[$i]);
+
+ if(file_exists($thumb_path)) {
+ $info = getimagesize($thumb_path);
+ $img_width[$rows][$cols] = $info[0];
+ $img_height[$rows][$cols] = $info[1];
+ }
+
if($cols == $this->cfg->thumbs_per_row-1) {
$cols = 0;
$rows++;
$images[$rows] = Array();
+ $img_width[$rows] = Array();
+ $img_height[$rows] = Array();
}
else {
$cols++;
if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '')
$this->tmpl->assign('searchfor', $_SESSION['searchfor']);
+ if($this->cfg->rows_per_page != 0) {
+ $previous_start = $begin_with - ($this->cfg->rows_per_page * $this->cfg->thumbs_per_row);
+ $next_start = $begin_with + ($this->cfg->rows_per_page * $this->cfg->thumbs_per_row);
+
+ if($begin_with != 0)
+ $this->tmpl->assign("previous_url", "javascript:showPhotoIndex(". $previous_start .");");
+ if($end_with < $count)
+ $this->tmpl->assign("next_url", "javascript:showPhotoIndex(". $next_start .");");
+ }
+
$this->tmpl->assign('count', $count);
$this->tmpl->assign('width', $this->cfg->thumb_width);
$this->tmpl->assign('images', $images);
+ $this->tmpl->assign('img_width', $img_width);
+ $this->tmpl->assign('img_height', $img_height);
$this->tmpl->assign('rows', $rows);
$this->tmpl->assign('columns', $this->cfg->thumbs_per_row);
$this->tmpl->show("photo_index.tpl");
} // showCredits()
- public function create_thumbnail($image, $width)
+ public function create_thumbnail($orig_image, $thumb_image, $width)
{
- if(!file_exists($image))
+ if(!file_exists($orig_image))
return false;
- $meta = $this->get_meta_informations($image);
+ $meta = $this->get_meta_informations($orig_image);
$rotate = 0;
$flip = false;
$rotate = 270; $flip = false; break;
}
- $src_img = @imagecreatefromjpeg($image);
+ $src_img = @imagecreatefromjpeg($orig_image);
if(!$src_img) {
- print "Can't load image from ". $image ."\n";
+ print "Can't load image from ". $orig_image ."\n";
return false;
}
$new_h = abs($new_w * $aspect_ratio);
/* creates new image of that size */
- $dst_img = imagecreatetruecolor($new_w,$new_h);
+ $dst_img = imagecreatetruecolor($new_w, $new_h);
imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255));
}
/* write down new generated file */
-
- if(!file_exists(dirname($image) ."/thumbs")) {
- $result = mkdir(dirname($image) ."/thumbs");
- if($result === false) {
- print "Can't create thumb directory ". dirname($image) ."/thumbs\n";
- return false;
- }
- }
-
- $newfile = dirname($image) ."/thumbs/". $width ."_". basename($image);
- $result = imagejpeg($dst_img, $newfile, 75);
+ $result = imagejpeg($dst_img, $thumb_image, 75);
/* free your mind */
imagedestroy($dst_img);
imagedestroy($src_img);
if($result === false) {
- print "Can't write thumbnail ". $newfile ."\n";
+ print "Can't write thumbnail ". $thumb_image ."\n";
return false;
}
$error = 0;
foreach($resolutions as $resolution) {
- $thumb_path = $this->translate_path($details['directory_path']) ."/thumbs/". $resolution ."_". $details['name'];
+
+ $thumb_path = $this->cfg->base_path ."/thumbs/". $resolution ."_". $file_md5;
+
+ /* if the thumbnail file doesn't exist, create it */
if(!file_exists($thumb_path)) {
if($fromcmd) print " ". $resolution ."px";
- if(!$this->create_thumbnail($full_path, $resolution))
+ 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) {
if($fromcmd) print " ". $resolution ."px";
- if(!$this->create_thumbnail($full_path, $resolution))
+ if(!$this->create_thumbnail($full_path, $thumb_path, $resolution))
$error = 1;
}
} // gen_thumb()
- private function getMD5($idx)
+ public function getMD5($idx)
{
$result = $this->cfg_db->db_query("
SELECT img_md5