diff --git a/.images/index.php b/.images/index.php
new file mode 100644
index 0000000..f46e05b
--- /dev/null
+++ b/.images/index.php
@@ -0,0 +1,3689 @@
+>');
+ define('TEXT_INFO', 'Information');
+ define('TEXT_DOWNLOAD', 'Download full-size image');
+ define('TEXT_SLIDESHOW', 'Slideshow');
+ define('TEXT_NO_IMAGES', 'No Images in gallery');
+ define('TEXT_DATE', 'Date');
+ define('TEXT_FILESIZE', 'File size');
+ define('TEXT_IMAGESIZE', 'Full Image');
+ define('TEXT_DISPLAYED_IMAGE', 'Displayed Image');
+ define('TEXT_DIR_NAME', 'Gallery Name');
+ define('TEXT_IMAGE_NAME', 'Image Name');
+ define('TEXT_FILE_NAME', 'File Name');
+ define('TEXT_DIRS', 'Directories');
+ define('TEXT_IMAGES', 'Images');
+ define('TEXT_IMAGE_NUMBER', 'Image number');
+ define('TEXT_FILES', 'Files');
+ define('TEXT_DESCRIPTION', 'Description');
+ define('TEXT_DIRECT_LINK_GALLERY', 'Direct link to Gallery');
+ define('TEXT_DIRECT_LINK_IMAGE', 'Direct link to Image');
+ define('TEXT_NO_PREVIEW_FILE', 'No Preview for file');
+ define('TEXT_IMAGE_LOADING', 'Image Loading ');
+ define('TEXT_LINKS', 'Links');
+ define('TEXT_NOT_SCALED', 'Not Scaled');
+ define('TEXT_LINK_BACK', 'Back to my site');
+ define('TEXT_THIS_IS_FULL', 'Full');
+ define('TEXT_THIS_IS_PREVIEW', 'Preview');
+ define('TEXT_SCALED_TO', 'Scaled to');
+ define('TEXT_YES', 'Yes');
+ define('TEXT_NO', 'No');
+ define('TEXT_FIRST_VIEW', 'This is first view of this image. Refresh page to get information.');
+
+ define('TEXT_LOGIN', 'Login');
+ define('TEXT_LOGOUT', 'Logout');
+ define('TEXT_ADMIN', 'Admin');
+ define('TEXT_OK', 'OK');
+ define('TEXT_CANCEL', 'Cancel');
+ define('TEXT_DELETE', 'Delete');
+ define('TEXT_RENAME', 'Rename');
+ define('TEXT_MOVE', 'Move');
+ define('TEXT_MOVE_TO', 'Move to');
+ define('TEXT_MKDIR', 'Create Directory');
+ define('TEXT_NOTHING', 'Nothing Selected');
+ define('TEXT_ONLY_ONE', 'Select only one element to use this function');
+ define('TEXT_ONE_IMAGE', 'Select only one image to use this function');
+
+ define('TEXT_EXIF', 'EXIF');
+ define('TEXT_EXIF_DATE', 'Date');
+ define('TEXT_EXIF_CAMERA', 'Camera');
+ define('TEXT_EXIF_ISO', 'ISO');
+ define('TEXT_EXIF_SHUTTER', 'Shutter Speed');
+ define('TEXT_EXIF_APERTURE', 'Aperture');
+ define('TEXT_EXIF_FOCAL', 'Focal Length');
+ define('TEXT_EXIF_FLASH', 'Flash fired');
+ define('TEXT_EXIF_MISSING', 'No EXIF information in image');
+
+ define('TEXT_IPTC', 'IPTC');
+ define('TEXT_IPTC_TITLE', 'Document Title');
+ define('TEXT_IPTC_URGENCY', 'Urgency');
+ define('TEXT_IPTC_CATEGORY', 'Category');
+ define('TEXT_IPTC_SUBCATEGORIES', 'Subcategories');
+ define('TEXT_IPTC_SPECIALINSTRUCTIONS', 'Special Instructions');
+ define('TEXT_IPTC_CREATIONDATE', 'Creation Date');
+ define('TEXT_IPTC_AUTHORBYLINE', 'Author Byline');
+ define('TEXT_IPTC_AUTHORTITLE', 'Author Title');
+ define('TEXT_IPTC_CITY', 'City');
+ define('TEXT_IPTC_STATE', 'State');
+ define('TEXT_IPTC_COUNTRY', 'Country');
+ define('TEXT_IPTC_OTR', 'OTR');
+ define('TEXT_IPTC_HEADLINE', 'Headline');
+ define('TEXT_IPTC_SOURCE', 'Source');
+ define('TEXT_IPTC_PHOTOSOURCE', 'Photo Source');
+ define('TEXT_IPTC_COPYRIGHT', 'Copyright');
+ define('TEXT_IPTC_CAPTION', 'Caption');
+ define('TEXT_IPTC_CAPTIONWRITER', 'Caption Writer');
+ define('TEXT_IPTC_MISSING', 'No IPTC information in image');
+
+ $color_body_back = '#000000';
+ $color_body_text = '#aaaaaa';
+ $color_body_link = '#ffffff';
+ $color_body_hover = '#aaaaaa';
+
+ $color_thumb_border = '#606060';
+ $color_fullimg_border = '#ffffff';
+
+ $color_marked_back = '#ff0000';
+ $color_marked_text = '#000000';
+
+ $color_dir_box_border = '#505050';
+ $color_dir_box_back = '#000000';
+ $color_dir_box_text = '#aaaaaa';
+ $color_dir_hover = '#ffffff';
+ $color_dir_hover_text = '#000000';
+
+ $color_img_box_border = '#505050';
+ $color_img_box_back = '#202020';
+ $color_img_box_text = '#aaaaaa';
+ $color_img_hover = '#ffffff';
+ $color_img_hover_text = '#000000';
+
+ $color_file_box_border = '#404040';
+ $color_file_box_back = '#101010';
+ $color_file_box_text = '#aaaaaa';
+ $color_file_hover = '#ffffff';
+ $color_file_hover_text = '#000000';
+
+ $color_desc_box_border = '#404040';
+ $color_desc_box_back = '#202020';
+ $color_desc_box_text = '#aaaaaa';
+
+ $color_menu_back = '#000000';
+ $color_menu_top = '#303030';
+
+ $color_navbar_back = '#202020';
+ $color_navbar_top = '#303030';
+
+ $color_button_nav_border = '#404040';
+ $color_button_nav_back = '#101010';
+ $color_button_nav_text ='#808080';
+
+ $color_info_back = '#000000';
+ $color_info_border = '#606060';
+ $color_info_text = '#aaaaaa';
+
+ $color_infobox_border = '#404040';
+ $color_infobox_back ='#101010';
+
+ $color_button_border = '#808080';
+ $color_button_back = '#000000';
+ $color_button_text = '#aaaaaa';
+ $color_button_border_off = '#505050';
+ $color_button_back_off = '#000000';
+ $color_button_text_off = '#505050';
+ $color_button_hover = '#ffffff';
+ $color_button_hover_text = '#000000';
+ $color_button_on = '#aaaaaa';
+ $color_button_text_on = '#000000';
+
+ $color_overlay = '#000000';
+
+ // ----------- CONFIGURATION END ------------
+
+ function sfpg_array_sort(&$arr, &$arr_time, $sort_by_time, $sort_reverse)
+ {
+ if ($sort_by_time)
+ {
+ if ($sort_reverse)
+ {
+ array_multisort ($arr_time, SORT_DESC, SORT_NUMERIC, $arr);
+ }
+ else
+ {
+ array_multisort ($arr_time, SORT_ASC, SORT_NUMERIC, $arr);
+ }
+ }
+ else
+ {
+ if (SORT_ALL_NATURAL)
+ {
+ natcasesort ($arr);
+ $arr = array_values($arr);
+ if ($sort_reverse)
+ {
+ $arr = array_reverse ($arr);
+ }
+ }
+ else
+ {
+ if ($sort_reverse)
+ {
+ rsort ($arr);
+ }
+ else
+ {
+ sort ($arr);
+ }
+ }
+ }
+ }
+
+
+ function sfpg_file_size($size)
+ {
+ $sizename = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
+ return ($size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2).' '.$sizename[$i] : '0 Bytes');
+ }
+
+
+ function sfpg_base64url_encode($plain)
+ {
+ $base64 = base64_encode($plain);
+ $base64url = strtr($base64, '+/', '-_');
+ return rtrim($base64url, '=');
+ }
+
+
+ function sfpg_base64url_decode($base64url)
+ {
+ $base64 = strtr($base64url, '-_', '+/');
+ $plain = base64_decode($base64);
+ return ($plain);
+ }
+
+
+ function sfpg_url_string($dir = '', $img = '')
+ {
+ $res = $dir.'*'.$img.'*';
+ return sfpg_base64url_encode($res.hash('sha256', $res.SECURITY_PHRASE));
+ }
+
+
+ function sfpg_url_decode($string)
+ {
+ $get = explode('*', sfpg_base64url_decode($string));
+ if ((hash('sha256', $get[0].'*'.$get[1].'*'.SECURITY_PHRASE) === $get[2]) and (strpos(GALLERY_ROOT.$get[0].$get[1], '/../') === FALSE) and (strpos($get[0].$get[1], '\\') === FALSE))
+ {
+ return array($get[0], $get[1]);
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+
+ function sts($str, $block_html_tags=false, $nl_to_br=true)
+ {
+ $str = str_replace("\r", "", $str);
+ $str = str_replace("\n", ($nl_to_br?"
":""), $str);
+ $str = str_replace("\\", "\\\\", $str);
+ $str = str_replace("\"", "\\\"", $str);
+ $str = str_replace("'", "\'", $str);
+ if ($block_html_tags)
+ {
+ $str = str_replace("<", "<", $str);
+ }
+ return $str;
+ }
+
+
+ function sfpg_display_name($name, $show_ext)
+ {
+ $break_pos = strpos($name, SORT_DIVIDER);
+ if ($break_pos !== FALSE)
+ {
+ $display_name = substr($name, $break_pos + strlen(SORT_DIVIDER));
+ }
+ else
+ {
+ $display_name = $name;
+ }
+ if (UNDERSCORE_AS_SPACE)
+ {
+ $display_name = str_replace('_', ' ', $display_name);
+ }
+ if (!$show_ext)
+ {
+ $display_name = substr($display_name, 0, strrpos($display_name, '.'));
+ }
+ return $display_name;
+ }
+
+
+ function sfpg_ext($file)
+ {
+ if (strrpos($file, '.') === FALSE)
+ {
+ return 'nodot';
+ }
+ else
+ {
+ return strtolower(substr($file, strrpos($file, '.')));
+ }
+ }
+
+
+ function sfpg_image_type($file)
+ {
+ $type = sfpg_ext($file);
+ if (($type == '.jpg') or ($type == '.jpeg') or ((MPO_FULL_IMAGE or MPO_STEREO_IMAGE) and ($type == '.mpo')))
+ {
+ return 'jpeg';
+ }
+ elseif ($type == '.png')
+ {
+ return 'png';
+ }
+ elseif ($type == '.gif')
+ {
+ return 'gif';
+ }
+ return FALSE;
+ }
+
+
+ function sfpg_mpo_image($file)
+ {
+ if (!$mpo = @file_get_contents($file))
+ {
+ return false;
+ }
+ $offset = 0;
+ $marker = true;
+ $imgOffset = array();
+ $markA = chr(0xFF).chr(0xD8).chr(0xFF).chr(0xE1);
+ $markB = chr(0xFF).chr(0xD9).chr(0xFF).chr(0xE0);
+ while ($marker!==false)
+ {
+ $marker = strpos($mpo, $markA, $offset);
+ if ($marker===false)
+ {
+ $marker = strpos($mpo, $markB, $offset);
+ }
+ if ($marker!==false)
+ {
+ $imgOffset[] = $marker;
+ $offset = $marker+4;
+ }
+ }
+ $imgOffset[] = strlen($mpo);
+ if (count($imgOffset)<2)
+ {
+ return false;
+ }
+ if (count($imgOffset)>2)
+ {
+ $img_left = imagecreatefromstring(substr($mpo, $imgOffset[0], $imgOffset[1]-$imgOffset[0]));
+ $img_right = imagecreatefromstring(substr($mpo, $imgOffset[1], $imgOffset[2]-$imgOffset[1]));
+ list($mpo_stereo_width, $mpo_stereo_height) = sfpg_aspect_resize(imagesx($img_left), imagesy($img_left), MPO_STEREO_MAX_WIDTH, MPO_STEREO_MAX_HEIGHT, true);
+ list($mpo_full_width, $mpo_full_height) = sfpg_aspect_resize(imagesx($img_left), imagesy($img_left), MPO_FULL_MAX_WIDTH, MPO_FULL_MAX_HEIGHT, false);
+ $stereo_dot_space = 0;
+ if (MPO_STEREO_DOTS)
+ {
+ $dot_size=3;
+ $stereo_dot_space = 2*$dot_size+2*MPO_SPACING;
+ }
+ $stereo_align = 0;
+ $new_img_width = 0;
+ $new_img_height = 0;
+ $full_offset_y = 0;
+ if (MPO_STEREO_IMAGE)
+ {
+ $new_img_width += $mpo_stereo_width*2+MPO_SPACING;
+ $new_img_height += $stereo_dot_space + $mpo_stereo_height + (MPO_FULL_IMAGE ? MPO_SPACING : 0);
+ $full_offset_y = $mpo_stereo_height+MPO_SPACING+$stereo_dot_space;
+ }
+ $full_offset_x = round(($new_img_width-$mpo_full_width)/2);
+ if (MPO_FULL_IMAGE)
+ {
+ if ($mpo_full_width > $new_img_width)
+ {
+ $new_img_width = $mpo_full_width;
+ $stereo_align = (int)(($mpo_full_width-($mpo_stereo_width*2+MPO_SPACING))/2);
+ $full_offset_x = 0;
+ }
+ $new_img_height += $mpo_full_height;
+ }
+ $new_image = imagecreatetruecolor($new_img_width, $new_img_height);
+ $tmp_left = imagecreatetruecolor($mpo_full_width, $mpo_full_height);
+ imagecopyresampled($tmp_left, $img_left, 0, 0, 0, 0, $mpo_full_width, $mpo_full_height, imagesx($img_left), imagesy($img_left));
+ $tmp_right = imagecreatetruecolor($mpo_full_width, $mpo_full_height);
+ imagecopyresampled($tmp_right, $img_right, 0, 0, 0, 0, $mpo_full_width, $mpo_full_height, imagesx($img_right), imagesy($img_right));
+ if (MPO_FULL_IMAGE)
+ {
+ if (MPO_FULL_ANAGLYPH)
+ {
+ $anaglyph_image = imagecreatetruecolor($mpo_full_width, $mpo_full_height);
+ imagealphablending($anaglyph_image, false);
+ for($y=0; $y<$mpo_full_height; $y++)
+ {
+ for($x=0; $x<$mpo_full_width; $x++)
+ {
+ $left_color = imagecolorat($tmp_left, $x, $y);
+ $r = (int)(($left_color >> 16) & 255) * 0.299 + (($left_color >> 8) & 255) * 0.587 + (($left_color) & 255) * 0.114;
+ if ($r > 255)
+ {
+ $r = 255;
+ }
+ $g = (imagecolorat($tmp_right, $x, $y) >> 8) & 255;
+ $b = (imagecolorat($tmp_right, $x, $y)) & 255;
+ imagesetpixel($anaglyph_image, $x, $y, imagecolorallocate($anaglyph_image, $r, $g, $b));
+ }
+ }
+ imagecopyresampled($new_image, $anaglyph_image, $full_offset_x, $full_offset_y, 0, 0, $mpo_full_width, $mpo_full_height, $mpo_full_width, $mpo_full_height);
+ imagedestroy($anaglyph_image);
+ imagedestroy($tmp_left);
+ imagedestroy($tmp_right);
+ }
+ else
+ {
+ imagecopyresampled($new_image, $img_left, $full_offset_x, $full_offset_y, 0, 0, $mpo_full_width, $mpo_full_height, imagesx($img_left), imagesy($img_left));
+ }
+ }
+ if (MPO_STEREO_IMAGE)
+ {
+ imagecopyresampled($new_image, $img_left, $stereo_align, $stereo_dot_space, 0, 0, $mpo_stereo_width, $mpo_stereo_height, imagesx($img_left), imagesy($img_left));
+ imagedestroy($img_left);
+ imagecopyresampled($new_image, $img_right, $stereo_align+$mpo_stereo_width+MPO_SPACING, $stereo_dot_space, 0, 0, $mpo_stereo_width, $mpo_stereo_height, imagesx($img_right), imagesy($img_right));
+ imagedestroy($img_right);
+ $white = imagecolorallocate($new_image, 255, 255, 255);
+ imagefilledrectangle($new_image, $stereo_align+(int)($mpo_stereo_width/2)-3, MPO_SPACING-3, $stereo_align+(int)($mpo_stereo_width/2)+3, MPO_SPACING+3, $white);
+ imagefilledrectangle($new_image, $stereo_align+MPO_SPACING+(int)($mpo_stereo_width*1.5)-3, MPO_SPACING-3, $stereo_align+MPO_SPACING+(int)($mpo_stereo_width*1.5)+3, MPO_SPACING+3, $white);
+ }
+ return $new_image;
+ }
+ else
+ {
+ $image = imagecreatefromstring(substr($mpo, $imgOffset[0], $imgOffset[1]-$imgOffset[0]));
+ list($mpo_width, $mpo_height) = sfpg_aspect_resize(imagesx($image), imagesy($image), MPO_FULL_MAX_WIDTH, MPO_FULL_MAX_HEIGHT, false);
+ $new_image = imagecreatetruecolor($mpo_width, $mpo_height);
+ imagecopyresampled($new_image, $image, 0, 0, 0, 0, $mpo_width, $mpo_height, imagesx($image), imagesy($image));
+ imagedestroy($image);
+ return $new_image;
+ }
+ }
+
+
+ function sfpg_aspect_resize($image_width, $image_height, $max_width, $max_height, $enlarge)
+ {
+ if (($image_width < $max_width) and ($image_height < $max_height) and !$enlarge)
+ {
+ $new_img_height = $image_height;
+ $new_img_width = $image_width;
+ }
+ else
+ {
+ $aspect_x = $image_width / $max_width;
+ $aspect_y = $image_height / $max_height;
+ if ($aspect_x > $aspect_y)
+ {
+ $new_img_width = $max_width;
+ $new_img_height = $image_height / $aspect_x;
+ }
+ else
+ {
+ $new_img_height = $max_height;
+ $new_img_width = $image_width / $aspect_y;
+ }
+ }
+ return array($new_img_width, $new_img_height);
+ }
+
+
+ function sfpg_mkdir($dir)
+ {
+ if (!is_dir($dir))
+ {
+ mkdir($dir, 0777, TRUE);
+ return true;
+ }
+ return false;
+ }
+
+
+ function sfpg_get_dir($dir, $for_dir_info=FALSE)
+ {
+ global $dir_exclude, $file_exclude, $file_ext_exclude;
+ $dirs = array();
+ $dirs_time = array();
+ $images = array();
+ $images_time = array();
+ $files = array();
+ $files_time = array();
+ $misc = array();
+ $directory_handle = opendir(GALLERY_ROOT.$dir);
+ if ($directory_handle != FALSE)
+ {
+ while(($var=readdir($directory_handle))!==false)
+ {
+ if (is_dir(GALLERY_ROOT.$dir.$var))
+ {
+ if (($var != '.') and ($var != '..') and !in_array(strtolower($var), $dir_exclude) and !@preg_match(DIR_EXCLUDE_REGEX, $var))
+ {
+ $dirs[] = $var;
+ if (DIR_SORT_BY_TIME)
+ {
+ $dirs_time[] = filemtime(GALLERY_ROOT.$dir.$var.'/.');
+ }
+ }
+ }
+ elseif (sfpg_image_type($var))
+ {
+ if (($var != DIR_THUMB_FILE) and !@preg_match(IMAGE_EXCLUDE_REGEX, $var))
+ {
+ if ((DELETE_IMAGE_DAYS) and (filemtime(GALLERY_ROOT.$dir.$var)<(time()-(DELETE_IMAGE_DAYS*86400))))
+ {
+ unlink(GALLERY_ROOT.$dir.$var);
+ }
+ else
+ {
+ $images[] = $var;
+ if (IMAGE_SORT_BY_TIME)
+ {
+ if (IMAGE_EXIF_TIME)
+ {
+ if ($img_info=@file_get_contents(DATA_ROOT.'info/'.$dir.$var))
+ {
+ $spl=explode('|', $img_info);
+ $images_time[]=$spl[4];
+ }
+ else
+ {
+ $images_time[]=filemtime(GALLERY_ROOT.$dir.$var);
+ }
+ }
+ else
+ {
+ $images_time[]=filemtime(GALLERY_ROOT.$dir.$var);
+ }
+ }
+ }
+ }
+ }
+ elseif (SHOW_FILES)
+ {
+ if (!in_array(strtolower($var), $file_exclude) and !in_array(sfpg_ext($var), $file_ext_exclude) and !@preg_match(FILE_EXCLUDE_REGEX, $var))
+ {
+ $files[] = $var;
+ if (FILE_SORT_BY_TIME)
+ {
+ $files_time[] = filemtime(GALLERY_ROOT.$dir.$var);
+ }
+ }
+ }
+ if ((sfpg_ext($var)==DESC_EXT)or(sfpg_ext($var)==PAYPAL_EXTENSION))
+ {
+ $misc[] = $var;
+ }
+ }
+ if ($for_dir_info)
+ {
+ $misc = 0;
+ }
+ if (SHOW_FILES)
+ {
+ foreach ($files as $val)
+ {
+ $fti = array_search($val.FILE_THUMB_EXT, $images);
+ if ($fti !== FALSE)
+ {
+ if ($for_dir_info)
+ {
+ $misc++;
+ }
+ else
+ {
+ array_splice($images, $fti, 1);
+ array_splice($images_time, $fti, 1);
+ }
+ }
+ }
+ }
+ closedir($directory_handle);
+ sfpg_array_sort($dirs, $dirs_time, DIR_SORT_BY_TIME, DIR_SORT_REVERSE);
+ sfpg_array_sort($images, $images_time, IMAGE_SORT_BY_TIME, IMAGE_SORT_REVERSE);
+ sfpg_array_sort($files, $files_time, FILE_SORT_BY_TIME, FILE_SORT_REVERSE);
+ return array($dirs, $images, $files, $misc);
+ }
+ else
+ {
+ header('Location: '.$_SERVER['PHP_SELF']);
+ exit;
+ }
+ }
+
+
+ function sfpg_browse_dirs()
+ {
+ echo '
'.
+ ' '.TEXT_MOVE_TO.':
'.TEXT_HOME.GALLERY.''.
+ '
OK'.
+ '
'.TEXT_CANCEL.''.
+ '
'.TEXT_HOME.'';
+ $dirs=explode('/',GALLERY);
+ $path='';
+ $postDiv='';
+ foreach($dirs as $dir)
+ {
+ if ($dir)
+ {
+ $path.='/'.$dir;
+ echo '
'.$dir.'';
+ $postDiv.='
';
+ }
+ }
+ echo '
';
+ $items=@scandir(GALLERY_ROOT.GALLERY);
+ if ($items!==false)
+ {
+ echo '
';
+ foreach($items as $var)
+ {
+ if ((is_dir(GALLERY_ROOT.GALLERY.'/'.$var)) and ($var != '.') and ($var != '..'))
+ {
+ echo ''.$var.'
';
+ }
+ }
+ }
+ echo $postDiv.'
';
+ }
+
+
+ function sfpg_image($image_dir, $image_file, $func, $download=FALSE)
+ {
+ $image_path_file = DATA_ROOT.$func.'/'.$image_dir.$image_file;
+ $image_type = sfpg_image_type($image_file);
+ if ($func == 'image')
+ {
+ if (!file_exists($image_path_file))
+ {
+ $image_path_file = GALLERY_ROOT.$image_dir.$image_file;
+ }
+ if ($download)
+ {
+ header('Content-Type: application/octet-stream');
+ header('Content-Disposition: attachment; filename="'.$image_file.'"');
+ }
+ else
+ {
+ header('Content-Type: image/'.$image_type);
+ header('Content-Disposition: filename="'.$image_file.'"');
+ }
+ readfile($image_path_file);
+ exit;
+ }
+ if (($func == 'thumb') or ($func == 'preview'))
+ {
+ if (file_exists($image_path_file))
+ {
+ header('Content-Type: image/'.$image_type);
+ header('Content-Disposition: filename="'.$func.'_'.$image_file.'"');
+ readfile($image_path_file);
+ exit;
+ }
+ else
+ {
+ if($func == 'thumb')
+ {
+ $max_width = THUMB_MAX_WIDTH;
+ $max_height = THUMB_MAX_HEIGHT;
+ $enlarge = THUMB_ENLARGE;
+ $jpeg_quality = THUMB_JPEG_QUALITY;
+ $source_img = GALLERY_ROOT.$image_dir.$image_file;
+ }
+ else
+ {
+ $max_width = PREVIEW_MAX_WIDTH;
+ $max_height = PREVIEW_MAX_HEIGHT;
+ $enlarge = PREVIEW_ENLARGE;
+ $jpeg_quality = PREVIEW_JPEG_QUALITY;
+ $source_img = DATA_ROOT.'image/'.$image_dir.$image_file;
+ if (!file_exists($source_img))
+ {
+ $source_img = GALLERY_ROOT.$image_dir.$image_file;
+ }
+ }
+ $image_changed = FALSE;
+ if ((MPO_FULL_IMAGE or MPO_STEREO_IMAGE) and (sfpg_ext($image_file)=='.mpo') and ($func != 'preview'))
+ {
+ if (!$image = sfpg_mpo_image($source_img))
+ {
+ exit;
+ }
+ $image_changed = TRUE;
+ }
+ elseif (!$image = imagecreatefromstring(file_get_contents($source_img)))
+ {
+ exit;
+ }
+ if (($func == 'thumb') and ($image_dir != ICONS_DIR))
+ {
+ sfpg_mkdir(DATA_ROOT.'info/'.$image_dir);
+ $exif_info = '||||||';
+ if (function_exists('exif_read_data'))
+ {
+ if (SHOW_EXIF_INFO)
+ {
+ $exif_data = exif_read_data(GALLERY_ROOT.$image_dir.$image_file, 'IFD0');
+ if ($exif_data !== FALSE)
+ {
+ $exif_info = '';
+ if(isset($exif_data['DateTimeOriginal']))
+ {
+ $exif_time = explode(':', str_replace(' ', ':', $exif_data['DateTimeOriginal']));
+ $exif_info .= mktime($exif_time[3], $exif_time[4], $exif_time[5], $exif_time[1], $exif_time[2], $exif_time[0]);
+ }
+ else
+ {
+ $exif_info .= '';
+ }
+ $exif_info .= '|';
+ $exif_info .= (isset($exif_data['Model'])?$exif_data['Model']:'').'|';
+ $exif_info .= (isset($exif_data['ISOSpeedRatings'])?$exif_data['ISOSpeedRatings']:'').'|';
+ if(isset($exif_data['ExposureTime']))
+ {
+ $exif_ExposureTime=create_function('','return '.$exif_data['ExposureTime'].';');
+ $exp_time = $exif_ExposureTime();
+ if ($exp_time > 0.25)
+ {
+ $exif_info .= $exp_time;
+ }
+ else
+ {
+ $exif_info .= $exif_data['ExposureTime'];
+ }
+ $exif_info .= 's';
+ }
+ else
+ {
+ $exif_info .= '';
+ }
+ $exif_info .= '|';
+ if(isset($exif_data['FNumber']))
+ {
+ $exif_FNumber=create_function('','return number_format(round('.$exif_data['FNumber'].',1),1);');
+ $exif_info .= 'f'.$exif_FNumber();
+ }
+ else
+ {
+ $exif_info .= '';
+ }
+ $exif_info .= '|';
+ if(isset($exif_data['FocalLength']))
+ {
+ $exif_FocalLength=create_function('','return number_format(round('.$exif_data['FocalLength'].',1),1);');
+ $exif_info .= $exif_FocalLength().'mm';
+ }
+ else
+ {
+ $exif_info .= '';
+ }
+ $exif_info .= '|';
+ if(isset($exif_data['Flash']))
+ {
+ $exif_info .= (($exif_data['Flash'] & 1) ? TEXT_YES : TEXT_NO);
+ }
+ else
+ {
+ $exif_info .= '';
+ }
+ }
+ else
+ {
+ $exif_info = 'sfpg_no_exif_data_in_file||||||';
+ }
+ }
+ if (ROTATE_IMAGES and isset($exif_data['Orientation']))
+ {
+ $image_width = imagesx($image);
+ $image_height = imagesy($image);
+ switch ($exif_data['Orientation'])
+ {
+ case 2 :
+ {
+ $rotate = @imagecreatetruecolor($image_width, $image_height);
+ if (LOW_IMAGE_RESAMPLE_QUALITY)
+ {
+ imagecopyresized($rotate, $image, 0, 0, $image_width-1, 0, $image_width, $image_height, -$image_width, $image_height);
+ }
+ else
+ {
+ imagecopyresampled($rotate, $image, 0, 0, $image_width-1, 0, $image_width, $image_height, -$image_width, $image_height);
+ }
+ imagedestroy($image);
+ $image_changed = TRUE;
+ break;
+ }
+ case 3 :
+ {
+ $rotate = imagerotate($image, 180, 0);
+ imagedestroy($image);
+ $image_changed = TRUE;
+ break;
+ }
+ case 4 :
+ {
+ $rotate = @imagecreatetruecolor($image_width, $image_height);
+ if (LOW_IMAGE_RESAMPLE_QUALITY)
+ {
+ imagecopyresized($rotate, $image, 0, 0, 0, $image_height-1, $image_width, $image_height, $image_width, -$image_height);
+ }
+ else
+ {
+ imagecopyresampled($rotate, $image, 0, 0, 0, $image_height-1, $image_width, $image_height, $image_width, -$image_height);
+ }
+ imagedestroy($image);
+ $image_changed = TRUE;
+ break;
+ }
+ case 5 :
+ {
+ $rotate = imagerotate($image, 270, 0);
+ imagedestroy($image);
+ $image = $rotate;
+ $rotate = @imagecreatetruecolor($image_height, $image_width);
+ if (LOW_IMAGE_RESAMPLE_QUALITY)
+ {
+ imagecopyresized($rotate, $image, 0, 0, 0, $image_width-1, $image_height, $image_width, $image_height, -$image_width);
+ }
+ else
+ {
+ imagecopyresampled($rotate, $image, 0, 0, 0, $image_width-1, $image_height, $image_width, $image_height, -$image_width);
+ }
+ $image_changed = TRUE;
+ break;
+ }
+ case 6 :
+ {
+ $rotate = imagerotate($image, 270, 0);
+ imagedestroy($image);
+ $image_changed = TRUE;
+ break;
+ }
+ case 7 :
+ {
+ $rotate = imagerotate($image, 90, 0);
+ imagedestroy($image);
+ $image = $rotate;
+ $rotate = @imagecreatetruecolor($image_height, $image_width);
+ if (LOW_IMAGE_RESAMPLE_QUALITY)
+ {
+ imagecopyresized($rotate, $image, 0, 0, 0, $image_width-1, $image_height, $image_width, $image_height, -$image_width);
+ }
+ else
+ {
+ imagecopyresampled($rotate, $image, 0, 0, 0, $image_width-1, $image_height, $image_width, $image_height, -$image_width);
+ }
+ $image_changed = TRUE;
+ break;
+ }
+ case 8 :
+ {
+ $rotate = imagerotate($image, 90, 0);
+ imagedestroy($image);
+ $image_changed = TRUE;
+ break;
+ }
+ default: $rotate = $image;
+ }
+ $image = $rotate;
+ }
+ }
+ $iptc_info = '||||||||||||||||||';
+ if(SHOW_IPTC_INFO)
+ {
+ $only_used_for_iptc = getimagesize(GALLERY_ROOT.$image_dir.$image_file, $info);
+ if (isset($info['APP13']))
+ {
+ $iptc_info = '';
+ $iptc = iptcparse($info['APP13']);
+ $iptc_info .= (isset($iptc['2#005']) ? $iptc['2#005'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#010']) ? $iptc['2#010'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#015']) ? $iptc['2#015'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#020']) ? $iptc['2#020'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#040']) ? $iptc['2#040'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#055']) ? $iptc['2#055'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#080']) ? $iptc['2#080'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#085']) ? $iptc['2#085'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#090']) ? $iptc['2#090'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#095']) ? $iptc['2#095'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#101']) ? $iptc['2#101'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#103']) ? $iptc['2#103'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#105']) ? $iptc['2#105'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#110']) ? $iptc['2#110'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#115']) ? $iptc['2#115'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#116']) ? $iptc['2#116'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#120']) ? $iptc['2#120'][0] : '').'|';
+ $iptc_info .= (isset($iptc['2#122']) ? $iptc['2#122'][0] : '').'|';
+ }
+ else
+ {
+ $iptc_info = 'sfpgnoiptc||||||||||||||||||';
+ }
+ }
+ if (WATERMARK)
+ {
+ $wm_file = GALLERY_ROOT.ICONS_DIR.WATERMARK;
+ if (file_exists($wm_file))
+ {
+ if ($watermark = imagecreatefromstring(file_get_contents($wm_file)))
+ {
+ $image_width = imagesx($image);
+ $image_height = imagesy($image);
+ $ww = imagesx($watermark);
+ $wh = imagesy($watermark);
+ if (WATERMARK_FRACTION)
+ {
+ if ($image_width < $image_height)
+ {
+ $ww_new = round($image_width * WATERMARK_FRACTION);
+ }
+ else
+ {
+ $ww_new = round($image_height * WATERMARK_FRACTION);
+ }
+ $wh_new = round($wh * ($ww_new / $ww));
+ }
+ else
+ {
+ $ww_new = $ww;
+ $wh_new = $wh;
+ }
+ imagecopyresampled ($image, $watermark, $image_width-$ww_new, $image_height-$wh_new, 0, 0, $ww_new, $wh_new, $ww, $wh);
+ imagedestroy($watermark);
+ $image_changed = TRUE;
+ }
+ }
+ }
+ if ($image_changed)
+ {
+ sfpg_mkdir(DATA_ROOT.'image/'.$image_dir);
+ $new_full_img = DATA_ROOT.'image/'.$image_dir.$image_file;
+ if ($image_type == 'jpeg')
+ {
+ imagejpeg($image, $new_full_img, IMAGE_JPEG_QUALITY);
+ }
+ elseif ($image_type == 'png')
+ {
+ imagepng($image, $new_full_img);
+ }
+ elseif ($image_type == 'gif')
+ {
+ imagegif($image, $new_full_img);
+ }
+ }
+ $fp = fopen(DATA_ROOT.'info/'.$image_dir.$image_file, 'w');
+ fwrite($fp, filemtime(GALLERY_ROOT.$image_dir.$image_file).'|'.sfpg_file_size(filesize(GALLERY_ROOT.$image_dir.$image_file)).'|'.imagesx($image).'|'.imagesy($image).'|'.$exif_info.'|'.$iptc_info);
+ fclose($fp);
+ }
+ list($new_img_width, $new_img_height) = sfpg_aspect_resize(imagesx($image), imagesy($image), $max_width, $max_height, $enlarge);
+ if(THUMB_SQUARE)
+ {
+ $new_img_width = $max_width;
+ $new_img_height = $max_width;
+ }
+ $new_image = imagecreatetruecolor($new_img_width, $new_img_height);
+ if (LOW_IMAGE_RESAMPLE_QUALITY)
+ {
+ if(THUMB_SQUARE)
+ {
+ $min_size = min(imagesx($image), imagesy($image));
+ imagecopyresized($new_image, $image, 0, 0, round((imagesx($image)- $min_size)/2), 0, $new_img_width, $new_img_height, $min_size, $min_size);
+ }
+ else
+ {
+ imagecopyresized($new_image, $image, 0, 0, 0, 0, $new_img_width, $new_img_height, imagesx($image), imagesy($image));
+ }
+ }
+ else
+ {
+ if(THUMB_SQUARE)
+ {
+ $min_size = min(imagesx($image), imagesy($image));
+ imagecopyresampled($new_image, $image, 0, 0, round((imagesx($image)- $min_size)/2), 0, $new_img_width, $new_img_height, $min_size, $min_size);
+ }
+ else
+ {
+ imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_img_width, $new_img_height, imagesx($image), imagesy($image));
+ }
+ }
+ imagedestroy($image);
+ sfpg_mkdir(DATA_ROOT.$func.'/'.$image_dir);
+ header('Content-type: image/'.$image_type);
+ header('Content-Disposition: filename="'.$func.'_'.$image_file.'"');
+ if ($image_type == 'jpeg')
+ {
+ imagejpeg($new_image, NULL, $jpeg_quality);
+ imagejpeg($new_image, $image_path_file, $jpeg_quality);
+ }
+ elseif ($image_type == 'png')
+ {
+ imagepng($new_image);
+ imagepng($new_image, $image_path_file);
+ }
+ elseif ($image_type == 'gif')
+ {
+ imagegif($new_image);
+ imagegif($new_image, $image_path_file);
+ }
+ imagedestroy($new_image);
+ }
+ }
+ }
+
+
+ function sfpg_dir_info($dir, $initial=TRUE)
+ {
+ list($dirs, $images, $files, $misc) = sfpg_get_dir($dir, TRUE);
+ if ($initial)
+ {
+ $info = count($dirs).'|'.(int)(count($images)-$misc).'|'.count($files).'|'.filemtime(GALLERY_ROOT.GALLERY.'.').'|';
+ }
+ else
+ {
+ $info = '';
+ }
+ if ((DIR_THUMB_FILE) and file_exists(GALLERY_ROOT.$dir.DIR_THUMB_FILE))
+ {
+ return $info.sfpg_url_string($dir, DIR_THUMB_FILE);
+ }
+ if (isset($images[0]))
+ {
+ return $info.sfpg_url_string($dir, $images[0]);
+ }
+ foreach ($dirs as $subdir)
+ {
+ $subresult = sfpg_dir_info($dir.$subdir.'/', FALSE);
+ if ($subresult != '')
+ {
+ return $info.$subresult;
+ }
+ }
+ if ($initial and file_exists(GALLERY_ROOT.ICONS_DIR.DIR_THUMB_FILE))
+ {
+ return $info.sfpg_url_string(ICONS_DIR, DIR_THUMB_FILE);
+ }
+ return $info;
+ }
+
+
+ function sfpg_set_dir_info($dir)
+ {
+ if (!sfpg_mkdir(DATA_ROOT.'info/'.$dir))
+ {
+ sfpg_clean_data_root($dir);
+ }
+ if ($fp = fopen(DATA_ROOT.'info/'.$dir.'_sfpg_dir', 'w'))
+ {
+ fwrite($fp, sfpg_dir_info($dir));
+ fclose($fp);
+ }
+ }
+
+
+ function sfpg_delete($element)
+ {
+ if (is_dir($element))
+ {
+ $items = array_diff(scandir($element),array('.','..'));
+ foreach ($items as $item)
+ {
+ sfpg_delete($element."/".$item);
+ }
+ rmdir($element);
+ }
+ elseif (file_exists($element))
+ {
+ unlink($element);
+ }
+ }
+
+
+ function sfpg_delete_from_data_root($element)
+ {
+ sfpg_delete(DATA_ROOT.'info/'.$element);
+ sfpg_delete(DATA_ROOT.'thumb/'.$element);
+ sfpg_delete(DATA_ROOT.'image/'.$element);
+ sfpg_delete(DATA_ROOT.'preview/'.$element);
+ }
+
+
+ function sfpg_clean_data_root($dir)
+ {
+ $items = array_diff(scandir(DATA_ROOT.'info/'.$dir),array('.','..','_sfpg_dir'));
+ foreach($items as $item)
+ {
+ if (!is_dir(GALLERY_ROOT.$dir.$item) and !file_exists(GALLERY_ROOT.$dir.$item))
+ {
+ sfpg_delete_from_data_root($dir.$item);
+ }
+ }
+ $path='';
+ $dirs=explode('/',$dir);
+ foreach($dirs as $dirout)
+ {
+ if(file_exists(DATA_ROOT.'info/'.$path.'_sfpg_dir'))
+ {
+ unlink(DATA_ROOT.'info/'.$path.'_sfpg_dir');
+ }
+ $path.=$dirout.'/';
+ }
+ }
+
+
+ function sfpg_random($nr)
+ {
+ $a='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ $res='';
+ for($i = 0; $i<$nr; $i++)
+ {
+ $res.=$a[mt_rand(0,strlen($a)-1)];
+ }
+ return $res;
+ }
+
+
+ function sfpg_javascript()
+ {
+ global $dirs, $images, $files, $misc;
+ echo "";
+ }
+
+ if (SECURITY_PHRASE=='')
+ {
+ if ($sc=@file_get_contents($_SERVER['SCRIPT_FILENAME']))
+ {
+ $phrase=sfpg_random(30);
+ $nr_replace=0;
+ $sc=str_replace("define('SECURITY"."_PHRASE', '');","define('SECURITY_PHRASE', '".$phrase."');",$sc,$nr_replace);
+ if ($nr_replace === 1)
+ {
+ if (file_put_contents($_SERVER['SCRIPT_FILENAME'],$sc))
+ {
+ header('Location: '.$_SERVER['PHP_SELF']);
+ exit;
+ }
+ }
+ }
+ echo 'You have to set the SECURITY_PHRASE in the top of the script! See readme.txt for description.';
+ exit;
+ }
+
+ if (PASSWORD!=='')
+ {
+ session_start();
+ if (isset($_GET['cmd']) and ($_GET['cmd']=='logout'))
+ {
+ session_unset();
+ header('Location: '.$_SERVER['PHP_SELF']);
+ exit;
+ }
+ if (($_SESSION['sfpg_access']!==TRUE) or ($_SESSION['sfpg_self']!==$_SERVER['PHP_SELF']))
+ {
+ if (isset($_POST['pw']) and ($_POST['pw']===PASSWORD))
+ {
+ $_SESSION['sfpg_access']=TRUE;
+ $_SESSION['sfpg_self']=$_SERVER['PHP_SELF'];
+ }
+ else
+ {
+ header('Content-Type: text/html; charset="'.CHARSET.'"');
+ echo ''.
+ '';
+ session_write_close();
+ exit;
+ }
+ }
+ session_write_close();
+ }
+
+ $get_set = FALSE;
+ if (isset($_GET['sfpg']))
+ {
+ $get = sfpg_url_decode($_GET['sfpg']);
+ if ($get)
+ {
+ define('GALLERY', $get[0]);
+ define('IMAGE', $get[1]);
+ $get_set = TRUE;
+ }
+ }
+ if (!$get_set)
+ {
+ define('GALLERY', '');
+ define('IMAGE', '');
+ }
+
+ if (isset($_GET['cmd']))
+ {
+ if ($get_set)
+ {
+ if ($_GET['cmd'] == 'thumb')
+ {
+ sfpg_image(GALLERY, IMAGE, 'thumb');
+ exit;
+ }
+
+ if ($_GET['cmd'] == 'image')
+ {
+ sfpg_image(GALLERY, IMAGE, 'image');
+ exit;
+ }
+
+ if ($_GET['cmd'] == 'preview')
+ {
+ if (USE_PREVIEW)
+ {
+ sfpg_image(GALLERY, IMAGE, 'preview');
+ }
+ exit;
+ }
+
+ if (($_GET['cmd'] == 'dl') and TEXT_DOWNLOAD!='')
+ {
+ sfpg_image(GALLERY, IMAGE, 'image', TRUE);
+ exit;
+ }
+
+ if ($_GET['cmd'] == 'file')
+ {
+ header('Location: '.GALLERY_ROOT.GALLERY.IMAGE);
+ exit;
+ }
+ }
+ }
+
+ header('Content-Type: text/html; charset="'.CHARSET.'"');
+
+ if (PAYPAL_ENABLED)
+ {
+ if (isset($_GET['sold']))
+ {
+ if ($sell_file=file(DATA_ROOT.'buy/'.$_GET['sold'],FILE_IGNORE_NEW_LINES))
+ {
+ if($sell_content=file(GALLERY_ROOT.$sell_file[0].PAYPAL_EXTENSION,FILE_IGNORE_NEW_LINES))
+ {
+ $fp = fopen(GALLERY_ROOT.$sell_file[0].PAYPAL_EXTENSION,'w');
+ fwrite($fp,$sell_content[0]."\r\n".(((int)$sell_content[1])-1)."\r\n".$sell_content[2]);
+ fclose($fp);
+ unlink(DATA_ROOT.'buy/'.$_GET['sold']);
+ }
+ }
+ }
+ }
+
+ if (ADMIN===TRUE)
+ {
+ if (isset($_POST['func']))
+ {
+ if ($_POST['func']==='move')
+ {
+ if (isset($_POST['toFolder']) and isset($_POST['elems']) and is_array($_POST['elems']) and (count($_POST['elems']) > 0))
+ {
+ $to_dir = sfpg_url_decode($_POST['toFolder']);
+ if (($to_dir!==false) and ($to_dir[1]==='') and is_dir(GALLERY_ROOT.$to_dir[0]))
+ {
+ $to_dir=GALLERY_ROOT.$to_dir[0].($to_dir[0]!==''?'/':'');
+ foreach ($_POST['elems'] as $elem)
+ {
+ $move_elem = sfpg_url_decode($elem);
+ if ($move_elem)
+ {
+ if (($move_elem[1]==='') and (is_dir(GALLERY_ROOT.$move_elem[0])))
+ {
+ $slash_pos=strrpos($move_elem[0],'/',-2);
+ if($slash_pos!==FALSE)
+ {
+ $slash_pos+=1;
+ }
+ else
+ {
+ $slash_pos=0;
+ }
+ $dir_name = substr($move_elem[0],$slash_pos);
+ rename(GALLERY_ROOT.$move_elem[0], $to_dir.$dir_name);
+ }
+ else
+ {
+ $file_to_move=GALLERY_ROOT.$move_elem[0].$move_elem[1];
+ rename($file_to_move, GALLERY_ROOT.$to_dir.'/'.$move_elem[1]);
+ if (file_exists($file_to_move.DESC_EXT))
+ {
+ rename($file_to_move.DESC_EXT, GALLERY_ROOT.$to_dir.'/'.$move_elem[1].DESC_EXT);
+ }
+ if (sfpg_image_type($file_to_move) and (file_exists($file_to_move.PAYPAL_EXTENSION)))
+ {
+ rename($file_to_move.PAYPAL_EXTENSION, GALLERY_ROOT.$to_dir.'/'.$move_elem[1].PAYPAL_EXTENSION);
+ }
+ elseif (file_exists($file_to_move.FILE_THUMB_EXT))
+ {
+ rename($file_to_move.FILE_THUMB_EXT, GALLERY_ROOT.$to_dir.'/'.$move_elem[1].FILE_THUMB_EXT);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($_POST['func']==='delete')
+ {
+ if (isset($_POST['elems']) and is_array($_POST['elems']) and (count($_POST['elems']) > 0))
+ {
+ foreach ($_POST['elems'] as $elem)
+ {
+ $del_elem = sfpg_url_decode($elem);
+ if ($del_elem)
+ {
+ $element=GALLERY_ROOT.$del_elem[0].$del_elem[1];
+ sfpg_delete($element);
+ if (!is_dir($element))
+ {
+ sfpg_delete($element.DESC_EXT);
+ if (sfpg_image_type($element))
+ {
+ sfpg_delete($element.PAYPAL_EXTENSION);
+ }
+ else
+ {
+ sfpg_delete($element.FILE_THUMB_EXT);
+ }
+ }
+ }
+ }
+ }
+ }
+ if (($_POST['func']==='makedir') and (isset($_POST['dir'])) and (isset($_POST['path'])))
+ {
+ $new_dir=$_POST['dir'];
+ $path=$_POST['path'];
+ if (($new_dir!=='') and $path)
+ {
+ $path = sfpg_url_decode($path);
+ if ($path and ($path[1]===''))
+ {
+ $path=GALLERY_ROOT.$path[0];
+ sfpg_mkdir($path.$new_dir);
+ }
+ }
+ }
+ if (($_POST['func']==='rename') and (isset($_POST['eleToRen'])) and (isset($_POST['newName'])))
+ {
+ $newName=$_POST['newName'];
+ $eleToRen=$_POST['eleToRen'];
+ if ($newName!=='' and $eleToRen)
+ {
+ $eleToRen = sfpg_url_decode($eleToRen);
+ if ($eleToRen)
+ {
+ if ($eleToRen[1]!=='')
+ {
+ $newName.=((!SHOW_IMAGE_EXT and sfpg_image_type($eleToRen[1]))?sfpg_ext($eleToRen[1]):'');
+ if ((!file_exists(GALLERY_ROOT.$eleToRen[0].$newName)) and (!is_dir(GALLERY_ROOT.$eleToRen[0].$newName)))
+ {
+ if (sfpg_image_type($eleToRen[1]))
+ {
+ if (file_exists(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].PAYPAL_EXTENSION))
+ {
+ rename(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].PAYPAL_EXTENSION, GALLERY_ROOT.$eleToRen[0].$newName.PAYPAL_EXTENSION);
+ }
+ }
+ elseif (file_exists(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].FILE_THUMB_EXT))
+ {
+ rename(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].FILE_THUMB_EXT, GALLERY_ROOT.$eleToRen[0].$newName.FILE_THUMB_EXT);
+ }
+ if (file_exists(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].DESC_EXT))
+ {
+ rename(GALLERY_ROOT.$eleToRen[0].$eleToRen[1].DESC_EXT, GALLERY_ROOT.$eleToRen[0].$newName.DESC_EXT);
+ }
+ rename(GALLERY_ROOT.$eleToRen[0].$eleToRen[1], GALLERY_ROOT.$eleToRen[0].$newName);
+ }
+ }
+ else
+ {
+ $oldPath=GALLERY_ROOT.$eleToRen[0];
+ $oldPath=rtrim($oldPath,'/');
+ $newPath = substr($oldPath, 0, strrpos($oldPath, '/')+1).$newName;
+ if ((!file_exists($newPath)) and (!is_dir($newPath)))
+ {
+ rename(GALLERY_ROOT.$eleToRen[0], $newPath);
+ }
+ }
+ }
+ }
+ }
+ if ($_POST['func']==='desc')
+ {
+ $action=$_POST['action'];
+ $text=$_POST['text'];
+ $ele=$_POST['ele'];
+ if (($action==='del') or ($text===''))
+ {
+ $eleWd = sfpg_url_decode($ele);
+ if ($eleWd)
+ {
+ $element=GALLERY_ROOT.$eleWd[0].$eleWd[1];
+ if (is_dir($element))
+ {
+ sfpg_delete($element.DIR_DESC_FILE);
+ }
+ else
+ {
+ sfpg_delete($element.DESC_EXT);
+ }
+ }
+ }
+ elseif ($action==='save')
+ {
+ $eleWd = sfpg_url_decode($ele);
+ if ($eleWd)
+ {
+ $element=GALLERY_ROOT.$eleWd[0].$eleWd[1];
+ if (is_dir($element))
+ {
+ $element.=DIR_DESC_FILE;
+ }
+ else
+ {
+ $element.=DESC_EXT;
+ }
+ file_put_contents($element,$text);
+ }
+ }
+ }
+ if ($_POST['func']==='sell')
+ {
+ $action=$_POST['action'];
+ $ele=$_POST['ele'];
+ if ($action==='del')
+ {
+ $eleWd = sfpg_url_decode($ele);
+ if ($eleWd)
+ {
+ sfpg_delete(GALLERY_ROOT.$eleWd[0].$eleWd[1].PAYPAL_EXTENSION);
+ }
+ }
+ elseif ($action==='save')
+ {
+ $eleWd = sfpg_url_decode($ele);
+ if ($eleWd)
+ {
+ file_put_contents(GALLERY_ROOT.$eleWd[0].$eleWd[1].PAYPAL_EXTENSION,$_POST['ePrice']."\r\n".$_POST['eAmount']."\r\n".$_POST['eIdent']);
+ }
+ }
+ }
+ }
+ if ($_GET['cmd'] == 'dirs')
+ {
+ sfpg_browse_dirs();
+ exit;
+ }
+ }
+
+ list($dirs, $images, $files, $misc) = sfpg_get_dir(GALLERY);
+ echo ''.TEXT_GALLERY_NAME.'';
+ sfpg_javascript();
+ echo '';
+
+ if (PAYPAL_ENABLED and $get_set and ($_GET['cmd'] == 'buy') and IMAGE!='')
+ {
+ $sell=@file(GALLERY_ROOT.GALLERY.IMAGE.PAYPAL_EXTENSION,FILE_IGNORE_NEW_LINES);
+ if (($sell==false) or ($sell[1]<1))
+ {
+ echo ''.TEXT_PAYPAL_OUT_BACK.'';
+ }
+ else
+ {
+ date_default_timezone_set('UTC');
+ $buyId=date('Ymd_His').'_'.sfpg_random(16);
+ if (!sfpg_mkdir(DATA_ROOT.'buy/'))
+ {
+ $handle = opendir(DATA_ROOT.'buy/');
+ if ($handle != FALSE)
+ {
+ $week_ago=time()-604800;
+ while(($var=readdir($handle))!==false)
+ {
+ if (!is_dir(DATA_ROOT.'buy/'.$var))
+ {
+ if ($week_ago>filemtime(DATA_ROOT.'buy/'.$var))
+ {
+ unlink(DATA_ROOT.'buy/'.$var);
+ }
+ }
+ }
+ closedir($directory_handle);
+ }
+ }
+ $fp = fopen(DATA_ROOT.'buy/'.$buyId,'w');
+ fwrite($fp,GALLERY.IMAGE);
+ fclose($fp);
+ echo ''.
+ TEXT_PAYPAL_PLEASE_WAIT.
+ ''.
+ '';
+ }
+ }
+ else
+ {
+ echo '' .
+ '' .
+ '
' .
+ '' .
+ '' .
+ ' |
' .
+ '
' .
+ '
' .
+ '
' .
+ '' .
+ '
' .
+ '' .
+ ' ' .
+ ' |
' .
+ '
' .
+ '
' .
+ '' .
+ '
' .
+ '' .
+ '' .
+ ' |
' .
+ '
' .
+ '
' .
+ '' .
+ '
' .
+ '' .
+ '' .
+ ' |
' .
+ '
' .
+ '
' .
+ 'sfpg
'.
+ '';
+ if (DIR_BANNER_FILE and (file_exists(GALLERY_ROOT.GALLERY.DIR_BANNER_FILE)))
+ {
+ echo '
'.@file_get_contents(GALLERY_ROOT.GALLERY.DIR_BANNER_FILE).'
';
+ }
+ elseif (TEXT_BANNER)
+ {
+ echo '
'.TEXT_BANNER.'
';
+ }
+ echo '
';
+ if (ADMIN===TRUE)
+ {
+ echo'';
+ echo'';
+ }
+ echo'' .
+ '' .
+ '' .
+ '';
+ }
+ echo '';
+?>
\ No newline at end of file