"; echo "
"; echo " Welcome to phpAlbum $phpalbum_version
"; echo " You have to edit config_change_it.php and rename it to config.php.
"; echo " You have to define data directory, because of security issues it is recommended that this is not data/ but"; echo " something like \"data_Ab6Lkj88KJ/\""; echo "
"; generate_footer(); return; } if ( !is_dir($data_dir)){ echo ""; echo "
"; echo " Welcome to phpAlbum $phpalbum_version
"; echo "Please check your config.php file, the directory $data_dir does not exist
"; echo "
"; generate_footer(); return; } if ( !check_writable($data_dir)){ echo ""; echo "
"; echo " Welcome to phpAlbum $phpalbum_version
"; echo "Your data directory $data_dir is not writable
"; echo "Please change the rights on this directory so php can write in it. (UNIX: CHMOD 777, WINDOWS: setup rights)"; echo "
"; generate_footer(); return; } $pa_setup=Array(); $pa_quality=Array(); $pa_theme=Array(); $pa_lang=Array(); $pa_color_map=Array(); $pa_keywords=Array(); $themes_dir="themes/"; $site_engine="phptemplate"; $act_dir_sorting="default"; /* header buffering */ $sent_header=Array(); /*testing for modules*/ if(function_exists("ftp_login")){ $ftp_support=true; }else{ $ftp_support=false; } if(function_exists("mb_get_info")){ $mbstring=true; $_mb_info=mb_get_info('all'); if(isset($_mb_info['internal_encoding'])){ $int_encoding=$_mb_info['internal_encoding']; }else{ $int_encoding='ISO-8859-1';//default } }else{ $mbstring=false; } //error_reporting(E_WARNING | E_ERROR); $old_error_handler = set_error_handler("userErrorHandler"); //time limit @set_time_limit(0); function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars) { global $data_dir,$pa_setup; // timestamp for the error entry if(isset($pa_setup['error_logging_enabled'])){ if($pa_setup['error_logging_enabled']=="true"){ $dt = date("y/m/d H:i:s"); // define an assoc array of error string // in reality the only entries we should // consider are E_WARNING, E_NOTICE, E_USER_ERROR, // E_USER_WARNING and E_USER_NOTICE $errortype = array ( E_ERROR => "Error", E_WARNING => "Warning", E_PARSE => "Parsing Error", E_NOTICE => "Notice", E_CORE_ERROR => "Core Error", E_CORE_WARNING => "Core Warning", E_COMPILE_ERROR => "Compile Error", E_COMPILE_WARNING => "Compile Warning", E_USER_ERROR => "User Error", E_USER_WARNING => "User Warning", E_USER_NOTICE => "User Notice" ); // set of errors for which a var trace will be saved //$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); if($errno==E_NOTICE){ return; } if(defined("E_STRICT")){ if($errno==E_STRICT){ return; } } $err = "\$phpalbum_Errors[]= Array(\"datetime\" => \"$dt\","; $err .= "\"errornum\" => \"$errno\","; $err .= "\"errortype\" => \"".$errortype[$errno]."\","; $err .= "\"errormsg\" => \"$errmsg\","; $err .= "\"scriptname\" => \"$filename\","; $err .= "\"scriptlinenum\" => \"$linenum\""; $err .= ");"; if(file_exists($data_dir."error.log")){ if(filesize($data_dir."error.log")>1024*1024*2){ unlink($data_dir."error.log"); } } if(substr($errmsg,0,6)!="unlink"){ //ignore unlink errors - not important as it can happen $ff=fopen($data_dir."error.log","a"); fwrite($ff,"\n"); fclose($ff); } }} } function pa_readfile($path){ /*fixed bug where if readfile disabled phpAlbum doesn't work*/ if(!function_exists("readfile")){ $file=fopen($path,"rb"); $doc=fread($file,filesize($path)); fclose($file); echo $doc; }else{ readfile($path); } } function conv_out($string){ global $pa_setup,$mbstring,$pa_lang; if($mbstring){ return mb_convert_encoding($string,$pa_lang["character_set"]); }else{ return $string; } } function prepit($text){ //prepare text from db to be in input type="text" return str_replace('"','"',$text); } function prepdb($text){ //adding slash for all but " $ret=addslashes($text); $ret=str_replace('\"','"',$ret); return $ret; } function conv_in($string){ global $pa_setup,$int_encoding,$mbstring,$pa_lang; if($mbstring){ return mb_convert_encoding($string,$int_encoding,$pa_lang["character_set"]); }else{ return $string; } } function conv_out_header ($string){ global $pa_setup,$mbstring,$pa_lang; if($mbstring){ return mb_encode_mimeheader($string,$pa_lang["character_set"]); }else{ return $string; } } function send_header($text){ global $sent_header; header($text); $sent_header[]=$text; /*store for later use*/ } function store_header($file_name){ global $sent_header; if(is_array($sent_header)){ $f=fopen($file_name,"w"); foreach($sent_header as $header){ fwrite($f,$header."\n"); } fclose($f); } } function resend_header($file_name){ $file=file($file_name); foreach($file as $line){ header(substr($line,0,strlen($line)-1)); } } function sent_header(){ global $sent_header; if(sizeof($sent_header)>0){ return true; }else{ return false; } } /*assertion*/ /****************************************/ /* Functions */ /****************************************/ function UnsharpMask($img, $amount, $radius,$threshold) { //////////////////////////////////////////////////////////////////////////////////////////////// //// //// Unsharp Mask for PHP - version 2.0 //// //// Unsharp mask algorithm by Torstein H?nsi 2003-06. //// thoensi_at_netcom_dot_no. //// Please leave this notice. //// /////////////////////////////////////////////////////////////////////////////////////////////// // $img is an image that is already created within php using // imgcreatetruecolor. No url! $img must be a truecolor image. // Attempt to calibrate the parameters to Photoshop: if ($amount > 500) $amount = 500; $amount = $amount * 0.016; if ($radius > 50) $radius = 50; $radius = $radius * 2; $radius = abs(round($radius)); // Only integers make sense. if ($radius == 0) return $img; $w = imagesx($img); $h = imagesy($img); $imgBlur = imagecreatetruecolor($w, $h); // Gaussian blur matrix: // // 1 2 1 // 2 4 2 // 1 2 1 // ////////////////////////////////////////////////// imagecopy($imgBlur, $img, 0, 0, 0, 0, $w, $h); // background for ($i = 0; $i < $radius; $i++) { if (function_exists('imageconvolution')) { // PHP >= 5.1 $matrix = array( array( 1, 2, 1 ), array( 2, 4, 2 ), array( 1, 2, 1 ) ); imageconvolution($imgCanvas, $matrix, 16, 0); } else { // Move copies of the image around one pixel at the time and merge them with weight // according to the matrix. The same matrix is simply repeated for higher radii. imagecopy ($imgBlur, $img, 0, 0, 1, 1, $w - 1, $h - 1); // up left imagecopymerge ($imgBlur, $img, 1, 1, 0, 0, $w, $h, 50); // down right imagecopymerge ($imgBlur, $img, 0, 1, 1, 0, $w - 1, $h, 33.33333); // down left imagecopymerge ($imgBlur, $img, 1, 0, 0, 1, $w, $h - 1, 25); // up right imagecopymerge ($imgBlur, $img, 0, 0, 1, 0, $w - 1, $h, 33.33333); // left imagecopymerge ($imgBlur, $img, 1, 0, 0, 0, $w, $h, 25); // right imagecopymerge ($imgBlur, $img, 0, 0, 0, 1, $w, $h - 1, 20 ); // up imagecopymerge ($imgBlur, $img, 0, 1, 0, 0, $w, $h, 16.666667); // down imagecopymerge ($imgBlur, $img, 0, 0, 0, 0, $w, $h, 50); // center // During the loop above the blurred copy darkens, possibly due to a roundoff // error. Therefore the sharp picture has to go through the same loop to // produce a similar image for comparison. This is not a good thing, as processing // time increases heavily. // imagecopy ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h); /* imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 20 ); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 16.666667); imagecopymerge ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50); imagecopy ($imgCanvas2, $imgBlur2, 0, 0, 0, 0, $w, $h); */ } } // Calculate the difference between the blurred pixels and the original // and set the pixels for ($x = 0; $x < $w; $x++) { // each row for ($y = 0; $y < $h; $y++) { // each pixel $rgbOrig = ImageColorAt($img, $x, $y); $rOrig = (($rgbOrig >> 16) & 0xFF); $gOrig = (($rgbOrig >> 8) & 0xFF); $bOrig = ($rgbOrig & 0xFF); $rgbBlur = ImageColorAt($imgBlur, $x, $y); $rBlur = (($rgbBlur >> 16) & 0xFF); $gBlur = (($rgbBlur >> 8) & 0xFF); $bBlur = ($rgbBlur & 0xFF); // When the masked pixels differ less from the original // than the threshold specifies, they are set to their original value. $rNew = (abs($rOrig - $rBlur) >= $threshold) ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig)) : $rOrig; $gNew = (abs($gOrig - $gBlur) >= $threshold) ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig)) : $gOrig; $bNew = (abs($bOrig - $bBlur) >= $threshold) ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig)) : $bOrig; if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) { $pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew); ImageSetPixel($img, $x, $y, $pixCol); } } } return $img; } function imagecreatefrom($file){ if(strtoupper(substr($file,-3,3))=="JPG" || strtoupper(substr($file,-4,4))=="JPEG"){ $image=imagecreatefromjpeg($file); } if(strtoupper(substr($file,-3,3))=="PNG"){ $image=imagecreatefrompng($file); } if(strtoupper(substr($file,-3,3))=="GIF"){ $image=imagecreatefromgif($file); } return $image; } function image_same_type($file,$image,$quality = 100){ if(strtoupper(substr($file,-3,3))=="JPG" || strtoupper(substr($file,-4,4))=="JPEG"){ imagejpeg($image,null,$quality); } if(strtoupper(substr($file,-3,3))=="PNG"){ imagepng($image); } if(strtoupper(substr($file,-3,3))=="GIF"){ imagegif($image); } } function check_gd(){ if(function_exists("gd_info")){ $info=gd_info(); if(strstr($info['GD Version'],"2.")){ return true; }else{ return false; } } return false; } function pa_html_encode($string){ return str_replace( array ( '&', '"', "'", '<', '>'), array ( '&' , '"', ''' , '<' , '>' ),$string); } function pa_html_decode($string){ return str_replace( array ( '&' , '"', ''' , '<' , '>' ),array ( '&', '"', "'", '<', '>'),$string); } /****************************************/ /* SETTINGS */ /****************************************/ function read_settings(){ global $pa_setup,$pa_theme,$pa_color_map,$pa_lang; $rec=db_select_all("setup"); $pa_setup=$rec[0]; $rec=db_select_all("theme","name=='".$pa_setup["site_theme"]."'"); if(count($rec)==0){ //used new theme, never used before db_insert("theme",Array( "name"=>$pa_setup["site_theme"])); $rec=db_select_all("theme","name=='".$pa_setup["site_theme"]."'"); } $pa_theme=$rec[0]; $rec=db_select_all("color_map","id==".$pa_theme["color_map"]); $pa_color_map=$rec[0]; $rec=db_select_all("languages","name=='".$pa_setup["language"]."'"); $pa_lang=$rec[0]; //echo db_get_last_error_text(); } function print_error($error,$par=null){ //echo "
$error
"; if($par){ printf("
".$error."
",$par); }else{ printf("
".$error."
"); } } function print_warning($error){ echo "
WARNING:$error
"; } function is_cachable($text,$var1){ global $pa_setup; if ($text == "logo" || $text == "themeimage") return true; if ($text == "theme") return false; if ($text == "image") { if($pa_setup["cache_resized_photos"]=="true"){ return true;}else{ return false;} } if ($text == "setup") return false; if ($text == "delcache") return false; if ($text == "setquality") return false; if ($text == "album") return false; if ($text == "imageview") return false; if ( strlen($text)==0) return false; if ($text == "thmb"){ if($pa_setup["cache_thumbnails"]=="true"){ return true; }else{ return false; } } return false; } function is_movie($var1){ $t=strtoupper(substr($var1,-3,3)); $t2=strtoupper(substr($var1,-4,4)); if($t=="AVI" ||$t=="MPG"||$t=="3GP"||$t=="MP4" ||$t2=="MPEG" ||$t=="MOV" ||$t=="WMV" ||$t=="VOB") return true; return false; } function is_audio($var1){ $t=strtoupper(substr($var1,-3,3)); if($t=="MP3" ||$t=="WMA" ||$t=="WAV") return true; return false; } function is_image($var1){ $t=strtoupper(substr($var1,-3,3)); $t2=strtoupper(substr($var1,-4,4)); if($t=="GIF" ||$t=="PNG" ||$t=="JPG" ||$t2=="JPEG") return true; return false; } function is_cached($cmd,$var1,$var2,$var3,$quality){ global $pa_setup; $cache_dir=$pa_setup["cache_dir"]; //return false; $fn=get_cache_file_name($cache_dir,$cmd,$var1,$var2,$var3,$quality); return file_exists($fn); } function load_from_cache($cmd,$var1,$var2,$var3,$quality){ global $pa_setup; $cache_dir=$pa_setup["cache_dir"]; $fn=get_cache_file_name($cache_dir,$cmd,$var1,$var2,$var3,$quality); if($cmd == "thmb" || $cmd=="themeimage" || $cmd == "logo" || $cmd == "dir_logo" || $cmd == "image" ){ //$headers=getallheaders();-- not supported by others then apache if (isset( $_SERVER["HTTP_IF_MODIFIED_SINCE"] ) ){ if ( date("D, d M Y H:i:s T",filemtime($fn)) == $_SERVER["HTTP_IF_MODIFIED_SINCE"] ) { header('HTTP/1.0 304 Not Modified'); exit; } } } if(file_exists($fn.".hdr")){ resend_header($fn.".hdr"); } pa_readfile($fn); } function get_cache_file_name($cache_dir,$cmd,$var1,$var2,$var3,$quality){ $filename=$cache_dir . "cache_"; $filename.=$cmd; $filename.="_".str_replace(" ","_",str_replace("/","_",$var1)); $filename.="_".str_replace(" ","_",str_replace("/","_",$var2)); $filename.="_".str_replace(" ","_",str_replace("/","_",$var3)); $filename.="_".$quality; $filename.=".cache"; return $filename; } function cache_document($cmd,$var1,$var2,$var3,$quality){ global $pa_setup; $cache_dir=$pa_setup["cache_dir"]; $doc=ob_get_contents(); //echo ob_get_length(); $filename=get_cache_file_name($cache_dir,$cmd,$var1,$var2,$var3,$quality); //echo $filename; $file=fopen($filename,"wb"); fwrite($file,$doc); fclose($file); $m_time= filemtime($filename); send_header("Last-Modified: ".date("D, d M Y H:i:s T",$m_time) ); send_header("Cache-Control: public, max-age=" . 3600 * 48); if(sent_header()){ /*cache header*/ store_header($filename.".hdr"); } } function invalidate_object_cache($type){ $rec=db_select_all("object_cache","type=='".$type."'"); if(is_array($rec)){ foreach($rec as $key=>$record){ @unlink($record["file"]); } } db_delete("object_cache","type=='".$type."'"); } function get_cached_object ($type,$var1){ global $pa_setup; $cache_dir=$pa_setup["cache_dir"]; $filename=$cache_dir.$type.str_replace(" ","_",str_replace("/","_",$var1)).".obj"; if(file_exists($filename)){ $string=file_get_contents($filename); return unserialize($string); }else{ return null; } } function cache_object($type,$var1,$obj){ global $pa_setup; $cache_dir=$pa_setup["cache_dir"]; $filename=$cache_dir.$type.str_replace(" ","_",str_replace("/","_",$var1)).".obj"; $str=serialize($obj); $f=fopen($filename,"w"); fwrite($f,$str); fclose($f); db_insert("object_cache",Array("type"=>$type,"file"=>$filename)); } function delete_old_ecards(){ $time=time()-60*60*24*14; db_delete("ecards","created<$time"); } function delete_old_anitspam(){ $time=time()-60*60; db_delete("anti_spam_codes","time<$time"); } function get_file_for_screenshot($scr,$dw){ $scr_base=substr($scr,0,strlen($scr)-4); foreach($dw as $file){ if(!is_image($file)){ if($scr_base==$file || $scr_base."."== substr($file,0,strlen($scr_base."."))){ return $file; } } } return ""; } function get_screanshot_for_file($file,$fl){ foreach($fl as $scr){ if( is_image($scr)){ $scr_base=substr($scr,0,strlen($scr)-4); if($scr_base==$file || $scr_base."." == substr($file,0,strlen($scr_base."."))){ return $scr; } } } return ""; } function get_thmb_standard_link($dir,$file_rec){ global $pa_quality; if($file_rec["type"]=="I"){ $file=$dir.$file_rec["file_name"]; }else if($file_rec["type"]=="V"){ $file=$dir.$file_rec["file_name"]; if($file_rec["screenshot"]==""){ $file="[movie]"; }else{ $file=$dir.$file_rec["screenshot"]; } }else if($file_rec["type"]=="A"){ $file=$dir.$file_rec["file_name"]; if($file_rec["screenshot"]==""){ $file="[audio]"; }else{ $file=$dir.$file_rec["screenshot"]; } } if($pa_quality["thmb_sharp_use"]=='true'){ $sharpen_str="_".$pa_quality["thmb_sharp_amount"]."_".$pa_quality["thmb_sharp_radius"]."_".$pa_quality["thmb_sharp_treshold"]; }else{ $sharpen_str=""; } return "main.php?cmd=thmb&var1=". urlencode($file)."&var2=".$pa_quality["thmb_size"]."_".$pa_quality["thmb_qual"]."_".$pa_quality["square_thumbnails"].$sharpen_str; } function get_thmb_dir_link($file){ global $pa_quality,$pa_theme; if($pa_quality["thmb_sharp_use"]=='true'){ $sharpen_str="_".$pa_quality["thmb_sharp_amount"]."_".$pa_quality["thmb_sharp_radius"]."_".$pa_quality["thmb_sharp_treshold"]; }else{ $sharpen_str=""; } if($pa_theme["dir_logo_style"]=="pic_other_size"){ return "main.php?cmd=thmb&var1=". urlencode($file)."&var2=".$pa_theme["dir_logo_size"]."_".$pa_theme["dir_logo_quality"]."_".$pa_theme["dir_logo_square_thumbnail"].$sharpen_str."_".$pa_color_map["bg_color"]."&var3=DIR"; }else{ return "main.php?cmd=thmb&var1=". urlencode($file)."&var2=".$pa_quality["thmb_size"]."_".$pa_quality["thmb_qual"]."_".$pa_quality["square_thumbnails"].$sharpen_str."_".$pa_color_map["bg_color"]."&var3=DIR"; } } function check_access_to_dirs_groups($groups,$inh_groups){ global $pa_user; if(isset($pa_user["groups"]["superuser"])){ return true; } if((!is_array($groups) || count($groups)==0) && (!is_array($inh_groups) || count($inh_groups)==0)){ return true;} if(is_array($pa_user["groups"])){ if(is_array($groups)){ foreach($groups as $key => $value){ if(isset($pa_user["groups"][$key])){ return true; } } } if(is_array($inh_groups)){ foreach($inh_groups as $key => $value){ if(isset($pa_user["groups"][$key])){ return true; } } } return false; }else{ if(count($groups)>0){ return false; } } return true; } function check_access_to_dir($dir){ global $pa_user; if(isset($pa_user["groups"]["superuser"])){ return true; } $sett_1=get_directory_settings($dir,0); $sett=$sett_1[0]; if((!is_array($sett["groups"]) || count($sett["groups"])==0) && (!is_array($sett["inh_groups"]) || count($sett["inh_groups"])==0)){ return true;} if(is_array($pa_user["groups"])){ if(is_array($sett["groups"])){ foreach($sett["groups"] as $key => $value){ if(isset($pa_user["groups"][$key])){ return true; } } } if(is_array($sett["inh_groups"])){ foreach($sett["inh_groups"] as $key => $value){ if(isset($pa_user["groups"][$key])){ return true; } } } return false; }else{ if(count($sett["groups"])>0){ return false; } } return true; } function get_sorted_file_list($seq_files){ global $act_dir_sorting; switch($act_dir_sorting){ case "date_asc": return db_select_all("files_$seq_files","visible=='true'","file_time"); case "date_desc": return db_select_all("files_$seq_files","visible=='true'","file_time-"); case "filename_asc": return db_select_all("files_$seq_files","visible=='true'","file_name"); case "filename_desc": return db_select_all("files_$seq_files","visible=='true'","file_name-"); case "name_asc": return db_select_all("files_$seq_files","visible=='true'","desc,file_name"); case "name_desc": return db_select_all("files_$seq_files","visible=='true'","desc-,file_name-"); default: return db_select_all("files_$seq_files","visible=='true'",null); } } function get_sorted_dir_list($path){ global $act_dir_sorting; switch($act_dir_sorting){ case "date_asc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","newest_file_time_with_subdirs"); case "date_desc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","newest_file_time_with_subdirs-"); case "filename_asc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","path"); case "filename_desc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","path-"); case "name_asc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","alias,path"); case "name_desc": return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)","alias-,path-"); default: return db_select_all("directory","visibility=='true' && path!='".prepdb($path)."' && translate_directory(dirname(path))=='".prepdb($path)."' && check_access_to_dirs_groups(groups,inh_groups)",null); } } function get_keyword_link($keyword){ return ''.$keyword.''; } function get_keyword_parameter_for_link(){ global $pa_keywords; $strings=trim(implode(" ",$pa_keywords)); if($strings!=""){ return "&keyword=".urlencode($strings); }else{ return ""; } } function generate_albumnew($var1,$start_with){ global $pa_setup,$pa_quality,$pa_theme,$pa_color_map,$pa_keywords,$pa_keywords_unsorted; global $act_dir_sorting; if($start_with=="")$start_with=0; if ($pa_theme["directory_style"]=="flowing"){ $number_of_thmbs=$pa_theme["maximum_photos_per_page"]; }else{ $number_of_thmbs=$pa_theme["raster_dir_x"]*$pa_theme["raster_dir_y"]; } if($number_of_thmbs==0 || $number_of_thmbs<0){ $number_of_thmbs=1000000;/*i hope nobody will make more then million photos in one dir, if yes, i'm sorry :)*/ } $newest_pics=get_newest_photos($var1,$start_with+$number_of_thmbs+1); $cnt=0; $offset=0; foreach($newest_pics as $key => $record){ if($offset>=$start_with){ $thumbnails[$cnt]['thmb']=get_thmb_standard_link(substr($record["path"],1),$record); $thumbnails[$cnt]['desc']=pa_html_decode($record["desc"]); if($pa_theme["show_filenames"]=="true" && $thumbnails[$cnt]['desc']==""){ $thumbnails[$cnt]['desc']=conv_out($record["file_name"]); } $thumbnails[$cnt]['link']="main.php?cmd=imageviewnew&var1=$offset".get_keyword_parameter_for_link(); $thumbnails[$cnt]['width']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_width"]; $thumbnails[$cnt]['height']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_height"]; $thumbnails[$cnt]['view_count']=$record["view_count"]; $thumbnails[$cnt]['vote_count']=$record["vote_count"]; $thumbnails[$cnt]['vote_avg']=$record["vote_avg"]; $thumbnails[$cnt]['comment_count']=$record["comment_count"]; $cnt++; if($cnt==$number_of_thmbs) break; } $offset++; } $qualities=db_select_all("quality","enabled=='true'"); // select all enabled qualities $quality_links=Array(); if(count($qualities)>1){ foreach($qualities as $key=>$val){ $quality_links[]=Array("name"=>$val["name"], "link"=>"main.php?cmd=setquality&var1=".$val["id"]."&var2=albumnew&var3=".urlencode($var1)."&var4=$start_with".get_keyword_parameter_for_link(), "actual" => ($val["id"]==$pa_quality["id"])?1:0 ); } } if ( sizeof($newest_pics)<=$start_with+$number_of_thmbs){ //no next page $next_start_with=-1; }else{ $next_start_with=$start_with+$number_of_thmbs; } if ( $start_with==0){ //no next page $previous_start_with=-1; }else{ $previous_start_with=$start_with-$number_of_thmbs; if($previous_start_with<0){$previous_start_with=0;} } $dir_path[0]['name']=t('ID_NEWEST_PICTURES'); $dir_path[0]['link']="main.php?cmd=albumnew"; $cnt=1; $keywords=""; if(is_array($pa_keywords_unsorted)){ foreach($pa_keywords_unsorted as $key=>$value){ $dir_path[$cnt]['name']=$value; if($keywords!=""){ $keywords.=" ".$value; }else{ $keywords=$value; } $dir_path[$cnt]['link']="main.php?cmd=albumnew&keyword=".$keywords; $cnt++; } } theme_generate_album_page($dir_path,$quality_links,null,$thumbnails,null,null,$next_start_with,$previous_start_with,$var1,"NEW"); return true; } function generate_album($var1,$start_with){ global $pa_setup,$pa_quality,$pa_theme,$pa_color_map,$pa_keywords; global $act_dir_sorting; if($start_with=="")$start_with=0; if ($pa_theme["directory_style"]=="flowing"){ $number_of_thmbs=$pa_theme["maximum_photos_per_page"]; }else{ $number_of_thmbs=$pa_theme["raster_dir_x"]*$pa_theme["raster_dir_y"]; } if($number_of_thmbs==0 || $number_of_thmbs<0){ $number_of_thmbs=1000000;/*i hope nobody will make more then million photos in one dir, if yes, i'm sorry :)*/ } $ss=get_directory_settings("/".$var1,0); $dir_settings=$ss[0]; /*newest pictures*/ $new_thumbnails=Array(); if($dir_settings["show_newest_pictures_count"]>0){ $newest_pics=get_newest_photos($var1,$dir_settings["show_newest_pictures_count"]); $cnt=0; foreach($newest_pics as $key => $record){ $new_thumbnails[$cnt]['thmb']=get_thmb_standard_link($record["path"],$record); $new_thumbnails[$cnt]['desc']=pa_html_decode($record["desc"]); if($pa_theme["show_filenames"]=="true" && $new_thumbnails[$cnt]['desc']==""){ $new_thumbnails[$cnt]['desc']=conv_out($record["file_name"]); } $new_thumbnails[$cnt]['link']="main.php?cmd=imageview&var1=".urlencode(substr($record["path"],1).$record["file_name"]); $new_thumbnails[$cnt]['width']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_width"]; $new_thumbnails[$cnt]['height']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_height"]; $new_thumbnails[$cnt]['view_count']=$record["view_count"]; $new_thumbnails[$cnt]['vote_count']=$record["vote_count"]; $new_thumbnails[$cnt]['vote_avg']=$record["vote_avg"]; $new_thumbnails[$cnt]['comment_count']=$record["comment_count"]; $cnt++; } }else{ $new_thumbnails=null; } if(isset($dir_settings["sorting"])){ $act_dir_sorting=$dir_settings["sorting"]; } //$act_dir_sorting=$dir_settings["sorting"]; if($act_dir_sorting=='default'){ $act_dir_sorting=$pa_setup["default_sorting"]; } $dir_path[0]['name']=t('ID_PHOTO_DIR'); $dir_path[0]['link']="main.php?cmd=album"; $dirs=explode('/',$var1); $act_dir=""; for($i=0;$i0){ $dir_path[$i+1]['name']=pa_html_decode($ss[0]["alias"]); }else{ $dir_path[$i+1]['name']=conv_out($dirs[$i]); } $dir_path[$i+1]['link']="main.php?cmd=album&var1=".urlencode($act_dir); } $qualities=db_select_all("quality","enabled=='true'"); // select all enabled qualities $quality_links=Array(); if(count($qualities)>1){ foreach($qualities as $key=>$val){ $quality_links[]=Array("name"=>$val["name"], "link"=>"main.php?cmd=setquality&var1=".$val["id"]."&var2=album&var3=".urlencode($var1)."&var4=$start_with", "actual" => ($val["id"]==$pa_quality["id"])?1:0 ); } } $dir=$pa_setup["album_dir"] . $var1; /*directory description*/ $dir_long_desc=pa_html_decode($dir_settings["long_desc"]); /*openning directories*/ $dirlist=get_sorted_dir_list($dir_settings["path"]); $directories=Array(); $directories_cnt=0; if(sizeof($dirlist)>0){ while ( list($key,$rec)=each($dirlist)){ /*visibility*/ $file=$rec['file_name']; $blocked=false; /*test if there is some new images*/ $diff = (time() - $rec["newest_file_time_with_subdirs"])/60/60; if ($diff < $pa_setup["new_dir_indic"] ){ $dir_pic="main.php?cmd=themeimage&var1=dir_new.png&var2=".$pa_color_map["bg_color"]; $directories[$directories_cnt]['stat']='NEW'; }else{ $dir_pic="main.php?cmd=themeimage&var1=dir.png&var2=".$pa_color_map["bg_color"]; $directories[$directories_cnt]['stat']='NORM'; } if($pa_theme["dir_logo_style"]=="pic_thmb_size" || $pa_theme["dir_logo_style"]=="pic_other_size"){ $dir_logo=db_select_all("files_".$rec["seq_files"],"use_for_logo=='true' && type=='I'"); if(!$dir_logo){ $dir_logo=db_select_all("files_".$rec["seq_files"],"visible=='true' && type=='I'"); } if($dir_logo){ $dir_pic=get_thmb_dir_link($rec["path"].$dir_logo[0]["file_name"]); }else{ $dir_pic=get_thmb_dir_link("[NOPIC]"); } } /*defining variable*/ $directories[$directories_cnt]['link']="main.php?cmd=album&var1=".urlencode($var1.basename($rec['path']))."/"; $directories[$directories_cnt]['logo']=$dir_pic; if($rec['alias']!=""){ $directories[$directories_cnt]['name']=pa_html_decode($rec['alias']); }else{ /*it is filename and should be converted*/ $directories[$directories_cnt]['name']=conv_out(basename($rec['path'])); } $directories[$directories_cnt]['desc']=pa_html_decode($rec['desc']); $directories[$directories_cnt]['width']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_width"]; $directories[$directories_cnt]['height']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_height"]; $directories_cnt++; } } /*openning files*/ if($start_with<0){ $start_with=0; /*just to be sure*/ } $filelist=get_sorted_file_list($dir_settings["seq_files"]); $qq=$pa_quality["thmb_size"]."_".$pa_quality["thmb_qual"]; $qpic=$pa_quality["photo_size"]."_".$pa_quality["photo_qual"]; $thumbnails=Array(); $thumbnails_cnt=0; if(is_array($filelist)){ $fl=array_slice($filelist,$start_with,$number_of_thmbs); }else{ $fl=Array(); } foreach($fl as $key => $record){ $file=$record['file_name']; if($record["type"]=="I"){ $thumbnails[$thumbnails_cnt]['thmb']=get_thmb_standard_link($var1,$record); $thumbnails[$thumbnails_cnt]['desc']=pa_html_decode($record["desc"]); $thumbnails[$thumbnails_cnt]['link']="main.php?cmd=imageview&var1=".urlencode($var1.$file); if($pa_theme["show_filenames"]=="true" && $thumbnails[$thumbnails_cnt]['desc']==""){ $thumbnails[$thumbnails_cnt]['desc']=conv_out($file); } } if($record["type"]=="V"){ $thumbnails[$thumbnails_cnt]['thmb']=get_thmb_standard_link($var1,$record); $thumbnails[$thumbnails_cnt]['desc']=pa_html_decode($record["desc"]); $thumbnails[$thumbnails_cnt]['link']="main.php?cmd=image&var1=".urlencode($var1.$file); if($pa_theme["show_filenames"]=="true" && $thumbnails[$thumbnails_cnt]['desc']==""){ $thumbnails[$thumbnails_cnt]['desc']=conv_out($file); } } if($record["type"]=="A"){ $thumbnails[$thumbnails_cnt]['thmb']=get_thmb_standard_link($var1,$record); $thumbnails[$thumbnails_cnt]['desc']=pa_html_decode($record["desc"]); $thumbnails[$thumbnails_cnt]['link']="main.php?cmd=image&var1=".urlencode($var1.$file); if($pa_theme["show_filenames"]=="true" && $thumbnails[$thumbnails_cnt]['desc']==""){ $thumbnails[$thumbnails_cnt]['desc']=conv_out($file); } } $thumbnails[$thumbnails_cnt]['width']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_width"]; $thumbnails[$thumbnails_cnt]['height']=$pa_quality["thmb_size"]+$pa_theme["additional_thmb_height"]; $thumbnails[$thumbnails_cnt]['view_count']=$record["view_count"]; $thumbnails[$thumbnails_cnt]['vote_count']=$record["vote_count"]; $thumbnails[$thumbnails_cnt]['vote_avg']=$record["vote_avg"]; $thumbnails[$thumbnails_cnt]['comment_count']=$record["comment_count"]; $thumbnails_cnt++; } if ( sizeof($filelist)<=$start_with+$number_of_thmbs){ //no next page $next_start_with=-1; }else{ $next_start_with=$start_with+$number_of_thmbs; } if ( $start_with==0){ //no next page $previous_start_with=-1; }else{ $previous_start_with=$start_with-$number_of_thmbs; if($previous_start_with<0){$previous_start_with=0;} } /*call theme function to generate page*/ theme_generate_album_page($dir_path,$quality_links,$directories,$thumbnails,$new_thumbnails,$dir_long_desc,$next_start_with,$previous_start_with,$var1); return true; } function translate_directory($dir){ if ($dir=="\\" || $dir==".") $dir=""; if(substr($dir,0,1)!="/"){ $dir="/".$dir; } if(substr($dir,-1,1)!="/"){ $dir=$dir."/"; } return $dir; } function get_directory_settings($dir,$full=1){ global $data_dir,$pa_setup; $dir=translate_directory($dir); if(!is_dir($pa_setup["album_dir"].$dir)){ theme_generate_error_page(); exit(0); } $inh_groups=Array(); if(!db_select_exists("directory","path=='".prepdb($dir)."'")){ // not found, first time visiting directory, do insert if($dir!="/"){ //inheriting directory permissions for new directory. $up_dir=dirname($dir); if(substr($up_dir,-1,1)!="/"){ $up_dir=$up_dir."/"; } $rec=db_select_all("directory","path=='".prepdb($up_dir)."'"); $grps=db_select_all("group"); foreach($grps as $group){ if(isset($rec[0]["groups"][$group["name"]])){ $inh_groups[$group["name"]]=$rec[0]["seq_files"]; }else{ if(isset($rec[0]["inh_groups"][$group["name"]])){ $inh_groups[$group["name"]]=$rec[0]["inh_groups"][$group["name"]]; } } } } $seq_files=db_get_seq_nextval("seq_files"); db_insert("directory",Array("path"=>$dir,"seq_files"=>$seq_files)); db_update("directory","inh_groups=".var_export($inh_groups,true).";","seq_files==".$seq_files); db_create_table("files_$seq_files",Array( "file_name"=>"", "visible"=>"true", "desc"=>"", "long_desc"=>"", "params"=>"", "dir_logo"=>"true", "view_count"=>0, "vote_count"=>0, "vote_avg"=>0, "comment_count"=>0, "use_for_logo"=>"false", "file_time"=>"", "screenshot"=>"", "type"=>"I", "keywords"=>Array() )); db_create_table("comments_$seq_files",Array( "id"=>"", "file_name"=>"", "time"=>"", "name"=>"", "email"=>"", "text"=>"", "visible"=>"true" )); } $rec=db_select_all("directory","path=='".prepdb($dir)."'"); if($full!=1){ return Array($rec[0],null); } $seq_files=$rec[0]["seq_files"]; //continue for files settings $changed=false; //load files from DB $files_db=db_select_all("files_$seq_files",null,true); //load files from Medium $dir_path=substr($dir,1); $files_hd=Array(); if(file_exists($pa_setup["album_dir"].$dir_path)){ if ($dh = opendir($pa_setup["album_dir"].$dir_path)) { while (($file = readdir($dh)) !== false) { if( filetype($pa_setup["album_dir"].$dir_path. $file)=="file" || filetype($pa_setup["album_dir"].$dir_path. $file)=="link" ){ $files_hd[$file]=filemtime($pa_setup["album_dir"].$dir_path. $file); } } closedir($dh); } } $where="";//for deleting files, first screenshots then not existing files //parse screenshots $scr_files=Array(); foreach($files_hd as $fn => $t){ if(is_image($fn)){ if(isset($files_hd[substr($fn,0,strlen($fn)-4)])){ $scr_files[substr($fn,0,strlen($fn)-4)]=$fn; if($where==""){ $where="file_name=='".prepdb($fn)."'"; }else{ $where.=" || file_name=='".prepdb($fn)."'"; } } } } //now delete not existing files from DB if(is_array($files_db)){ foreach($files_db as $key => $record){ if(!isset($files_hd[$record["file_name"]])){ $changed=true; if($where==""){ $where="file_name=='".prepdb($record["file_name"])."'"; }else{ $where.=" || file_name=='".prepdb($record["file_name"])."'"; } }else{ //names from database $files_db_names[$record["file_name"]]=$record["file_time"]; } } } if($where !=""){ db_delete("files_$seq_files",$where); } //reload of db files foreach($files_hd as $fn => $t){ if(isset($scr_files[$fn])){ $screenshot=$scr_files[$fn]; }else{ $screenshot=""; } if(!isset($files_db_names[$fn])){ //file is not in db, insert it as new if(is_image($fn)){ //check if it is a screenshot of some other file, in this case, this file will not be inserted. if(!isset($files_hd[substr($fn,0,strlen($fn)-4)])){ //is not screensot $changed=true; // check for iptc descriptions if needed $short_desc=""; $long_desc=""; $keywords=Array(); if($pa_setup["use_iptc_desc"]=="true"){ list($www,$hhh)=getimagesize($pa_setup["album_dir"].$dir_path.$fn,$info); if (isset($info["APP13"])) { $iptc = iptcparse($info["APP13"]); if(isset($iptc["2#105"])){ $short_desc=$iptc["2#105"][0]; } if(isset($iptc["2#120"])){ $long_desc=str_replace("\r","
",$iptc["2#120"][0]); } if(isset($iptc["2#025"])){ $keywords=$iptc["2#025"]; } } } db_insert("files_$seq_files",Array("file_name"=>$fn,"file_time"=>$t,"desc"=>$short_desc,"long_desc"=>$long_desc,"keywords"=>$keywords)); } }else if(is_movie($fn)){ //check for screenshot $changed=true; db_insert("files_$seq_files",Array("file_name"=>$fn,"file_time"=>$t,"type"=>"V","screenshot"=>$screenshot)); }else if(is_audio($fn)){ //check for screenshot $changed=true; db_insert("files_$seq_files",Array("file_name"=>$fn,"file_time"=>$t,"type"=>"A","screenshot"=>$screenshot)); }else{ //check for screenshot $changed=true; db_insert("files_$seq_files",Array("file_name"=>$fn,"file_time"=>$t,"type"=>"O","screenshot"=>$screenshot)); } }else if ($files_db_names[$fn] != $t){ //timestamp is changed , update the file $short_desc=""; $long_desc=""; $keywords_text=var_export(Array(),true); if(is_image($fn)){ // check for iptc descriptions if needed if($pa_setup["use_iptc_desc"]=="true"){ list($www,$hhh)=getimagesize($pa_setup["album_dir"].$dir_path.$fn,$info); if (isset($info["APP13"])) { $iptc = iptcparse($info["APP13"]); if(isset($iptc["2#105"])){ $short_desc=$iptc["2#105"][0]; } if(isset($iptc["2#120"])){ $long_desc=str_replace("\r","
",$iptc["2#120"][0]); } if(isset($iptc["2#025"])){ $keywords_text=var_export($iptc["2#025"],true); } } } db_update("files_$seq_files","keywords=".$keywords_text.";file_time='".$t."';desc='".$short_desc."';long_desc='".$long_desc."';","file_name=='".prepdb($fn)."'"); }else{ db_update("files_$seq_files","file_time='".$t."'; screenshot='$screenshot';","file_name=='".prepdb($fn)."'"); } }else if( !is_image($fn)){ db_update("files_$seq_files","file_time='".$t."'; screenshot='$screenshot';","file_name=='".prepdb($fn)."'"); } } /*rereading of files*/ if($changed){ $files_db=db_select_all("files_$seq_files"); } if($rec[0]["photo_count"]!=count($files_db)){ db_update("directory","photo_count=".count($files_db).";","path=='".prepdb($dir)."'"); } return Array($rec[0],$files_db); } function get_all_sortings(){ $sorts= Array ( "default"=> "Default", "date_asc"=> "Date - Ascending", "date_desc"=> "Date - Descending", "filename_asc"=> "Filename - Ascending", "filename_desc"=> "Filename - Descending", "name_asc"=> "Name - Ascending", "name_desc"=> "Name - Descending" ); return $sorts; } function add_column_to_array(&$array, $column,$value) { foreach($array as $key => $rec){ $array[$key][$column]=$value; } } function get_newest_photos($dir,$count){ global $pa_user,$pa_keywords,$pa_grants; if ($dir=="\\" || $dir==".") $dir=""; if(substr($dir,0,1)!="/"){ $dir="/".$dir; } if(substr($dir,-1,1)!="/"){ $dir=$dir."/"; } sort($pa_keywords); $obj=get_cached_object("GNP",$dir.$count.md5(implode("_",$pa_keywords).implode("_",array_keys($pa_user["groups"])))); if($obj!=null){ return $obj; } $func=db_create_order_by_function("file_time-,file_name-"); $len=strlen($dir); $sorted=true; $where_clause="substr(path,0,$len)=='".prepdb($dir)."'"; $where_groups=""; if(!isset($pa_user["groups"]["superuser"])){ $where_groups=" && (( (!is_array(groups) ||count(groups)==0 )&& (!is_array(inh_groups) || count(inh_groups)==0) )"; foreach($pa_user["groups"] as $key => $val){ $where_groups.=" || isset(groups['$key']) || isset(inh_groups['$key'])"; } $where_groups.=")"; } $where_clause.=$where_groups; $where_keyword=""; if(is_array($pa_keywords)){ foreach($pa_keywords as $key =>$keyword){ if($where_keyword==""){ $where_keyword="in_array('$keyword',keywords)"; }else{ $where_keyword.=" && in_array('$keyword',keywords)"; } } } if($where_keyword!=""){ $where_clause.= " && (".$where_keyword.")"; } $dirs=db_select_limit(1,$count,"directory",$where_clause,"newest_file_time-"); $newest_files=Array(); //new where for pictures if($where_keyword!=""){ $where_clause="visible=='true' && ".$where_keyword; }else{ $where_clause="visible=='true'"; } if(is_array($dirs)){ foreach($dirs as $dir_rec){ if(count($newest_files)==$count){ if($newest_files[$count-1]["file_time"]>$dir_rec["newest_file_time"]){ //there are no newer files in further directories, so we can break up here break; } } $files=db_select_limit(1,$count,"files_".$dir_rec["seq_files"],$where_clause,"file_time-,file_name-"); add_column_to_array($files,"path",$dir_rec["path"]); if(count($files)>0){ $newest_files=array_merge($newest_files,$files); $sorted=false; if(count($newest_files)>$count){ //sort and slice usort($newest_files,$func); $sorted=true; $newest_files=array_slice($newest_files,0,$count); } } } } if(!$sorted){ usort($newest_files,$func); } unset($func); cache_object("GNP",$dir.$count.md5(implode("_",$pa_keywords).implode("_",array_keys($pa_user["groups"]))),$newest_files); return $newest_files; } function scan_photos_directories($dir,$level=0){ global $pa_setup; $album_dir=$pa_setup["album_dir"]; $sett=get_directory_settings($dir,1); $rec=db_select_all("files_".$sett[0]["seq_files"],null,"file_time-"); if(isset($rec[0])){ $max_file_time=$rec[0]["file_time"]; }else{ $max_file_time=0; } //sumarising keywords $keywords=Array(); if(is_array($rec)){ foreach($rec as $key=>$record){ $keywords=array_unique(array_merge($keywords,$record["keywords"])); } } $keywords_text=var_export($keywords,true); db_update("directory","keywords=".$keywords_text.";newest_file_time='".$max_file_time."';","seq_files==".$sett[0]["seq_files"]); if (is_dir($album_dir.$dir)) { if ($dh = opendir($album_dir.$dir)) { while (($file = readdir($dh)) !== false) { if( filetype($album_dir.$dir.$file)=="dir" && $file!="." && $file !="..") { $time=scan_photos_directories($dir.$file."/",$level+1); if($time>$max_file_time){ $max_file_time=$time; } } } closedir($dh); } } db_update("directory","newest_file_time_with_subdirs='".$max_file_time."';","seq_files==".$sett[0]["seq_files"]); db_commit(true); if($level==0){ //delete not existing directories from db if($dir==""){ //only once and if the whole directory is scanned $rec=db_select_all("directory"); foreach($rec as $record){ if(!file_exists(substr($pa_setup["album_dir"],0,-1).$record["path"])){ db_drop_table("files_".$record["seq_files"]); db_drop_table("comments_".$record["seq_files"]); db_delete("directory","seq_files==".$record["seq_files"]); } } } db_update("directory","photo_count_r=0;"); $rec=db_select_all("directory"); foreach($rec as $record){ if($record["photo_count"]>0){ db_update("directory","photo_count_r+=".$record["photo_count"].";","substr('".prepdb($record["path"])."',0,strlen(path))==path"); } } $t=time(); db_update("setup","last_dir_scan=".$t.";"); $pa_setup["last_dir_scan"]=$t; db_commit(true); //invalidate GNP cache invalidate_object_cache("GNP"); }else{ return $max_file_time; } } function get_themes(){ global $themes_dir; $dir=$themes_dir; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if( filetype($dir . $file)=="dir" && $file!="." && $file !=".." && $file !="engines") { $filelist[]=$file; } } closedir($dh); } } return $filelist; } /****************************************/ /* THMB */ /****************************************/ function generate_thumb($var1,$var3){ global $pa_setup,$pa_quality,$pa_theme; $sharp=true; if($pa_theme["dir_logo_style"]=="pic_other_size" && $var3=="DIR"){ $width = $pa_theme["dir_logo_size"]; $height = $pa_theme["dir_logo_size"]; $square = $pa_theme["dir_logo_square_thumbnail"]; $thmb_quality =$pa_theme["dir_logo_quality"]; }else{ $width = $pa_quality["thmb_size"]; $height = $pa_quality["thmb_size"]; $square = $pa_quality["square_thumbnails"]; $thmb_quality =$pa_quality["thmb_qual"]; } $var1=stripslashes($var1); // Content type if(is_image($var1)){ $mime=get_mime($var1); send_header("Content-type: ".$mime); }else{ send_header('Content-type: image/png'); // for movie.png and video.png } send_header("Content-Disposition: filename=thmb_".conv_out_header(basename($var1),$character_set)." "); if($var1=="[movie]"){$var1="res/movie.png"; $sharp=false;} else if($var1=="[audio]"){$var1="res/audio.png"; $sharp=false;} else if($var1=="[NOPIC]"){$var1="res/nopic.png"; $sharp=false;} else{$var1=$pa_setup["album_dir"].$var1;} // Get new dimensions list($width_orig, $height_orig) = getimagesize($var1); //$image_p = imagecreatetruecolor($width+10, $height+10); //$color=ImageColorAllocate( $image_p, 32, 32, 32 ); //imagefill($image_p,0,0,$color); if($square=="true"){ if ($width_orig < $height_orig) { $src_x=0; $src_y=($height_orig-$width_orig)/2; $height_orig=$width_orig; }else{ $src_y=0; $src_x=($width_orig-$height_orig)/2; $width_orig=$height_orig; } }else{ //keep aspect ratio $src_x=0; $src_y=0; if ($width && ($width_orig < $height_orig)) { $width = ($height / $height_orig) * $width_orig; } else { $height = ($width / $width_orig) * $height_orig; } } // Resample $image=imagecreatefrom($var1); $image_p = imagecreatetruecolor($width, $height); $bgcol=theme_get_bgcolor(); $color = ImageColorAllocate( $image_p,$bgcol[0] ,$bgcol[1] ,$bgcol[2] ); imagefill($image_p,0,0,$color); imagecopyresampled($image_p, $image, 0, 0, $src_x, $src_y, $width, $height, $width_orig, $height_orig); //$image_p=UnsharpMask($image_p,50,1,3); // Output //sharpening if($pa_quality["thmb_sharp_use"]=='true' && $sharp){ $image_p=UnsharpMask($image_p, $pa_quality["thmb_sharp_amount"], $pa_quality["thmb_sharp_radius"],$pa_quality["thmb_sharp_treshold"]); } image_same_type($var1,$image_p,$thmb_quality); } /****************************************/ /* IMAGE */ /****************************************/ function get_mime($var1){ $t=strtoupper(substr($var1,-4,4)); switch($t){ case ".JPG": case "JPEG": return "image/jpeg"; break; case ".GIF": return "image/gif"; break; case ".PNG": return "image/png"; break; default: return ""; break; } } function get_resized_imagesize($var1){ global $pa_setup,$pa_quality; if(file_exists($pa_setup["album_dir"].$var1)){ list($width_orig, $height_orig) = getimagesize($pa_setup["album_dir"].$var1); if( $pa_quality["photo_size"] > 0){ $image_low_size=$pa_quality["photo_size"]; if($pa_quality["resize_if_bigger"]=="true"){ if( ($width_orig <= $image_low_size && $pa_quality["resize_photo_to_fit"]=="width") || ($height_orig <= $image_low_size && $pa_quality["resize_photo_to_fit"]=="height") || ($width_orig <= $image_low_size && $height_orig <= $image_low_size && $pa_quality["resize_photo_to_fit"]=="both") ){ return Array($width_orig,$height_orig,false); } } if($pa_quality["resize_photo_to_fit"]=="both"){ $width=$image_low_size; $height=$image_low_size; // Get new dimensions if ($width_orig < $height_orig) { $width = ($height / $height_orig) * $width_orig; } else { $height = ($width / $width_orig) * $height_orig; } } if($pa_quality["resize_photo_to_fit"]=="width"){ $width=$image_low_size; $height = ($width / $width_orig) * $height_orig; } if($pa_quality["resize_photo_to_fit"]=="height"){ $height=$image_low_size; $width = ($height / $height_orig) * $width_orig; } return Array($width,$height,true); }else{ return Array($width_orig,$height_orig,false); } } } function generate_image($var1,$quality,$original=false){ global $pa_quality,$pa_setup; $var1=stripslashes($var1); $m_time=filemtime($pa_setup["album_dir"].$var1); //$headers=getallheaders(); --not supported by others then apache if (isset( $_SERVER["HTTP_IF_MODIFIED_SINCE"] ) ){ if ( date("D, d M Y H:i:s T",$m_time) == $_SERVER["HTTP_IF_MODIFIED_SINCE"] ) { send_header('HTTP/1.0 304 Not Modified'); exit; } } if(is_image($var1)){ // Content type send_header("Last-Modified: ".date("D, d M Y H:i:s T",$m_time)); $mime=get_mime($var1); send_header("Content-type: ".$mime); send_header("Content-Disposition: filename=".conv_out_header(basename($var1))." "); list($width_orig, $height_orig) = getimagesize($pa_setup["album_dir"].$var1); list($width,$height,$resize) = get_resized_imagesize($var1); if((!$original) && ($resize || is_file($pa_quality["watermark_file"]))){ if($resize){ $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefrom($pa_setup["album_dir"].$var1); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); }else{ $image_p = imagecreatefrom($pa_setup["album_dir"].$var1); } if(is_file($pa_quality["watermark_file"])){ // should be placed a watermark list($width_wat,$height_wat) = getimagesize($pa_quality["watermark_file"]); $image_w=imagecreatefrom($pa_quality["watermark_file"]); $x_wat=$width/2-$width_wat/2; $y_wat=$height/2-$height_wat/2; if(strstr($pa_quality["watermark_position"],"L")){ $x_wat=0; } if(strstr($pa_quality["watermark_position"],"R")){ $x_wat=$width-$width_wat; } if(strstr($pa_quality["watermark_position"],"U")){ $y_wat=0; } if(strstr($pa_quality["watermark_position"],"D")){ $y_wat=$height-$height_wat; } imagecopy($image_p,$image_w,$x_wat,$y_wat,0,0,$width_wat,$height_wat); } //$image_s=UnsharpMask($image_p, 20, 1,0); image_same_type($var1,$image_p,$pa_quality["photo_qual"]); return true; // cache it }else{ pa_readfile($pa_setup["album_dir"].$var1); return false; //don't cache } } if(!is_image($var1)){ ob_end_clean(); send_header("Content-type: application/download; name=\"".basename($var1)."\""); send_header("Content-Disposition: attachment; filename=\"".basename($var1)."\" "); send_header("Content-Length: ".filesize($pa_setup["album_dir"].$var1)." "); send_header("Last-Modified: ".date("D, d M Y H:i:s T",$m_time)." " ); send_header("Last-Modified: ".date("D, d M Y H:i:s T",$m_time)." " ); pa_readfile($pa_setup["album_dir"].$var1); return false; } } /****************************************/ /* DELTE CACHE */ /****************************************/ function delete_cache($cache_dir,$display=1){ if ($dh = opendir($cache_dir)) { while (($file = readdir($dh)) !== false) { if($file != "." && $file!=".."){ unlink ( $cache_dir . $file); if($display==1) echo "deleting : ".$cache_dir.$file."
"; } } closedir($dh); } } /****************************************/ /* NEXT PREV IMAGE */ /****************************************/ function get_next_prev_image ($var1){ global $pa_setup,$act_dir_sorting; $tmp="null"; $dirname=dirname($var1); if($dirname=="."){ $dirname=""; }else{ $dirname.="/"; } $dir_settings=get_directory_settings($dirname,0); $act_dir_sorting=$dir_settings[0]["sorting"]; if($act_dir_sorting=='default'){ $act_dir_sorting=$pa_setup["default_sorting"]; } $filelist=get_sorted_file_list($dir_settings[0]["seq_files"]); if(is_array($filelist) && sizeof($filelist)>0) { while(list($key,$file_array)=each($filelist)){ $file=$file_array["file_name"]; if ($file == basename($var1)){ if($tmp!="null"){ $names[]=$dirname.$tmp; }else{ $names[]="null"; } } if($tmp==basename($var1)){ $names[]= $dirname.$file; break; } $tmp=$file; } if(sizeof($names)<2){ $names[]="null"; } }else{ $names[]="null"; $names[]="null"; } return $names; } function get_dir_from_photo_var($var){ $dir=dirname($var); if($dir!="."){ $dir="/".dirname($var)."/"; $dir=str_replace("//","/",$dir); }else{ $dir="/"; } return $dir; } function update_stats($for_what,$var,$var2,$var3=null){ global $pa_setup; if($for_what=="imageview"){ $dir=get_dir_from_photo_var($var); $file=basename($var); $rec=db_select_all("directory","path=='". prepdb($dir) ."'"); $set=""; if($var2=="view"){ $set.="view_count=view_count+1;"; } if($var2=="comment"){ if($var3=="add"){ $set.="comment_count=comment_count+1;"; }else{ $set.="comment_count=comment_count-1;"; } } if($var2=="vote"){ $set.="vote_count=vote_count+1;vote_avg=((vote_avg*vote_count)+$var3)/(vote_count+1);"; } db_update("files_".$rec[0]["seq_files"],$set,"file_name=='".prepdb($file)."'"); return; } } function exiftime_to_timestamp($string){ // "YYYY:MM:DD HH:MI:SS" // 0123456789012345678 return mktime( substr($string,11,2), substr($string,14,2), substr($string,17,2), substr($string,5,2), substr($string,8,2), substr($string,0,4)); } function send_ecard($r_name,$r_email,$s_name,$s_email,$text,$var1){ global $pa_setup; if($r_email=="") return t("ID_EMAIL_IS_MANDATORY"); if($r_name=="")$r_name=$r_email; if($s_name=="")$s_name=t("ID_SOMEONE"); $time=time(); $hash=md5($r_name.$r_email.$time); $message=$pa_setup["ecard_text"]; $subject=$pa_setup["ecard_subject"]; $header = 'From: '.$s_email . "\r\n" . 'Reply-To: '.$s_email. "\r\n" . 'X-Mailer: PHP/' . phpversion(); $message=str_replace("#FROM_NAME",$s_name,$message); $message=str_replace("#TO_NAME",$r_name,$message); $message=str_replace("#FROM_EMAIL",$s_email,$message); $message=str_replace("#TO_EMAIL",$r_email,$message); $message=str_replace("#TIME",date("H:i",$time),$message); $message=str_replace("#DATE",date("d.m.Y",$time),$message); $message=str_replace("#ECARD_ADRESS","main.php?cmd=ecardview&var1=$hash#ECARD",$message); $message=str_replace("#IMAGE_ADRESS","main.php?cmd=imageview&var1=".urlencode($var1),$message); $ret=mail($r_email,$subject,$message,$header); db_insert("ecards",Array("uid"=>$hash,"image"=>$var1,"from_name"=>$s_name,"from_email"=>$s_email,"to_name"=>$r_name,"to_email"=>$r_email,"message_text"=>$text,"created"=>$time,"picked_up"=>"false")); if($ret===true){ return t("ID_YOUR_MESSAGE_WAS SENT"); }else{ return t("ID_PROBLEM_SENDING_MESSAGE"); } } /****************************************/ /* IMAGE VIEW */ /****************************************/ function generate_ecard_view($var1){ global $pa_setup; $rec=db_select_all("ecards","uid=='".$var1."'"); if(isset($rec[0])){ $var3="view_ecard"; $var1=$rec[0]["image"]; $time=time(); if($rec[0]["picked_up"]=="false"){ //update ecard as viewed db_update("ecards","picked_up='true';","uid=='".$rec[0]["uid"]."'"); //send email to sender that the ecard was picked up $message=$pa_setup["ecard_picked_text"]; $subject=$pa_setup["ecard_picked_subject"]; $header = 'From: '.$rec[0]["to_email"] . "\r\n" . 'Reply-To: '.$rec[0]["to_email"]. "\r\n" . 'X-Mailer: PHP/' . phpversion(); $message=str_replace("#FROM_NAME",$rec[0]["from_name"],$message); $message=str_replace("#TO_NAME",$rec[0]["to_name"],$message); $message=str_replace("#FROM_EMAIL",$rec[0]["from_email"],$message); $message=str_replace("#TO_EMAIL",$rec[0]["to_email"],$message); $message=str_replace("#TIME",date("H:i",$time),$message); $message=str_replace("#DATE",date("d.m.Y",$time),$message); $message=str_replace("#ECARD_ADRESS","main.php?cmd=ecardview&var1=".$rec[0]["uid"]."#ECARD",$message); $message=str_replace("#IMAGE_ADRESS","main.php?cmd=imageview&var1=".urlencode($var1),$message); mail($rec[0]["from_email"],$subject,$message,$header); } generate_image_view($var1,$quality,$var3,false,$rec[0]); }else{ theme_generate_error_page(); } } function generate_image_view($var1,$quality,$var3,$newest=false,$ecard=null){ global $pa_quality,$pa_setup,$pa_theme,$cmd; $var1_orig=stripslashes($var1); $var1=stripslashes($var1); //computing the $var if this is showing the newest pictures. if ($pa_theme["directory_style"]=="flowing"){ $number_of_thmbs=$pa_theme["maximum_photos_per_page"]; }else{ $number_of_thmbs=$pa_theme["raster_dir_x"]*$pa_theme["raster_dir_y"]; } if($newest===true){ if($var1<0) $var1=0;//just to be sure :) if($var1=="") $var1=0; $position=$var1; $count=$number_of_thmbs; while($count < $position+2){ $count+=$number_of_thmbs; } $newest_objects=get_newest_photos("/",$count+1); $var1=substr($newest_objects[$position]["path"],1).$newest_objects[$position]["file_name"]; } ////////////////////////////////////////////////////////////end newweest $qq=$pa_quality["photo_size"]."_".$pa_quality["photo_qual"]; if(is_file($pa_quality["watermark_file"])){ $qq.="_".$pa_quality["watermark_file"]."_".$pa_quality["watermark_position"]; } if(file_exists($pa_setup["album_dir"].$var1)){ list($width_orig, $height_orig) = getimagesize($pa_setup["album_dir"].$var1,$info); if (isset($info["APP13"])) { if(function_exists("iptcparse")){ $iptc = iptcparse($info["APP13"]); } } $sys_par["width"]=$width_orig; $sys_par["height"]=$height_orig; $sys_par["size"]=filesize($pa_setup["album_dir"].$var1); $sys_par["time"]=filemtime($pa_setup["album_dir"].$var1); $sys_par["name"]=conv_out(basename($var1)); $sys_par["link"]="main.php?cmd=imageorig&var1=".urlencode($var1); // exif stuff if(function_exists("read_exif_data")){ $info= read_exif_data($pa_setup["album_dir"].$var1); //var_dump($info); if(isset($info["FNumber"])){ $f_func=create_function('','$fnum=round('.$info["FNumber"].',1);return $fnum;'); $sys_par["exif_f"]=number_format($f_func(),1); } if(isset($info["FocalLength"])){ $fl_func=create_function('','$fl=round('.$info["FocalLength"].',1);return $fl;'); $sys_par["exif_fl"]=number_format($fl_func(),1); } $sys_par["exif_model"]=$info["Model"]; if(isset($info["ExposureTime"])){ $e_func=create_function('','$fnum='.$info["ExposureTime"].';return $fnum;'); $time=$e_func(); if($time>0.25){ $sys_par["exif_exp_time"]=$time; }else{ $sys_par["exif_exp_time"]="1/".(1/$time); } } $sys_par["exif_iso"]=$info["ISOSpeedRatings"]; if(isset($info["DateTimeOriginal"])){ $sys_par["exif_datetime"]=exiftime_to_timestamp($info["DateTimeOriginal"]); }else{ if(isset($info["DateTime"])){ $sys_par["exif_datetime"]=exiftime_to_timestamp($info["DateTime"]); } } } //var_dump($info); } $dir_path[0]['name']=t('ID_PHOTO_DIR'); $dir_path[0]['link']="main.php?cmd=album&var2=".$quality; $dirs=explode('/',$var1); $act_dir=""; for($i=0;$i0){ $dir_path[$i+1]['name']=pa_html_decode($ss[0]["alias"]); }else{ $dir_path[$i+1]['name']=conv_out($dirs[$i]); } $dir_path[$i+1]['link']="main.php?cmd=album&var1=".urlencode($act_dir)."&var2=".$quality; } $qualities=db_select_all("quality","enabled=='true'"); // select all enabled qualities $quality_links=Array(); if(count($qualities)>1){ foreach($qualities as $key=>$val){ $quality_links[]=Array("name"=>$val["name"], "link"=>"main.php?cmd=setquality&var1=".$val["id"]."&var2=$cmd&var3=".urlencode($var1_orig).get_keyword_parameter_for_link(), "actual" => ($val["id"]==$pa_quality["id"])?1:0 ); } } /*testing for next and previous image ..*/ if($newest===true){ if($position>=1){$prev_link="main.php?cmd=imageviewnew&var1=".($position-1).get_keyword_parameter_for_link();}else{$prev_link="";} if(isset($newest_objects[$position+1])){$next_link="main.php?cmd=imageviewnew&var1=".($position+1).get_keyword_parameter_for_link();}else{$next_link="";} }else{ list( $prev,$next) = get_next_prev_image($var1); if( $prev != "null" ) { $prev_link = "main.php?cmd=imageview&var1=".urlencode($prev); }else{ $prev_link =""; }; if( $next != "null" ) { $next_link = "main.php?cmd=imageview&var1=".urlencode($next); }else{ $next_link = ""; }; } list($width, $height) = get_resized_imagesize($var1); $image_link="main.php?cmd=image&var1=".urlencode($var1)."&var2=".$qq; $imageview_link="main.php?cmd=imageview&var1=".urlencode($var1); $sett_b=get_directory_settings(dirname("/".$var1),0); $sett=$sett_b[0];//dir settings $rec=db_select_all("files_".$sett["seq_files"],"file_name=='".prepdb(basename($var1))."'"); $file=$rec[0]; $img_desc=$file["desc"]; if($pa_theme["show_filenames"]=="true" && $img_desc==""){ $img_desc=conv_out(basename($var1)); } $img_desc_long=$file["long_desc"]; /* store typed comments*/ if(!$var3){ update_stats("imageview",$var1,"view"); } if($var3=="send_ecard"){ $security_checked=true; if($pa_setup["antispam_code_enabled"]=="true"){ $rec=db_select_all("anti_spam_codes","pic_seq==".$_POST["p_code_seq"]); if($rec[0]["code"]==$_POST["p_code_enter"]){ $security_checked=true; }else{ $security_checked=false; } db_delete("anti_spam_codes","pic_seq==".$_POST["p_code_seq"]); } if($security_checked){ send_ecard($_POST["p_recipient_name"],$_POST["p_recipient_email"], $_POST["p_sender_name"],$_POST["p_sender_email"], $_POST["p_your_message"],$var1); } } if($var3=="save_comment"){ $security_checked=true; if($pa_setup["antispam_code_enabled"]=="true"){ $rec=db_select_all("anti_spam_codes","pic_seq==".$_POST["p_code_seq"]); if($rec[0]["code"]==$_POST["p_code_enter"]){ $security_checked=true; }else{ $security_checked=false; } db_delete("anti_spam_codes","pic_seq==".$_POST["p_code_seq"]); } if($security_checked){ if(isset($_POST['p_text'])){ if(strlen($_POST['p_name'])==0){ $p_name="Anonymous"; }else{ $p_name=$_POST['p_name']; } if( isset($_POST['p_name']))setcookie("comment_name",$_POST['p_name'],time()+60*60*24*365); if( isset($_POST['p_email']))setcookie("comment_email",$_POST['p_email'],time()+60*60*24*365); save_comment($var1,$_POST['p_text'],$p_name,$_POST['p_email'],time()); } } } if(substr($var3,0,15)=="delete_comment-"){ $id=substr($var3,15); delete_comment($var1,$id); } $comments=get_comments($var1); /*parameters*/ $rec=db_select_all("photo_param"); if($rec)foreach($rec as $param){ if($sett["show_parameters"]=="default" && $param["default_displayed"]=="true" || isset($sett["show_parameters_custom_id"][$param["id"]]) ){ if($param["type"]=="user"){ if(isset($file["params"][$param["id"]]) && strlen($file["params"][$param["id"]])>0 ){ $parameters[$param["name"]]=$file["params"][$param["id"]]; }elseif(isset($param["default"]) && strlen($param["default"])>0){ $parameters[$param["name"]]=$param["default"]; } } if($param["type"]=="userlov"){ if(isset($file["params"][$param["id"]]) && $file["params"][$param["id"]]>=0 ){ $parameters[$param["name"]]=$param["lov"][$file["params"][$param["id"]]]; }elseif(isset($param["default_lov"]) && $param["default_lov"] >=0){ $parameters[$param["name"]]=$param["lov"][$param["default_lov"]]; } } if($param["type"]=="system"){ /*"dim"=>"Picture dimensions", "siz"=>"File size in KB", "cdt"=>"Creation date of picture", "fnm"=>"Filename", "fnl"=>"Filename with fullsize download link", "dwl"=>"Fullsize download link"*/ switch($param["default_lov"]){ case "siz": $parameters[$param["name"]]=t("ID_SYS_PAR_SIZ",round($sys_par["size"]/1024,1)); break; case "dim": $parameters[$param["name"]]=t("ID_SYS_PAR_DIM",$sys_par["width"],$sys_par["height"]); break; case "fnm": $parameters[$param["name"]]=t("ID_SYS_PAR_FNM",$sys_par["name"]); break; case "fnl": $parameters[$param["name"]]=t("ID_SYS_PAR_FNL",$sys_par["link"],$sys_par["name"]); break; case "dwl": $parameters[$param["name"]]=t("ID_SYS_PAR_DWL",$sys_par["link"]); break; case "cdt": $parameters[$param["name"]]=t("ID_SYS_PAR_CDT",date($pa_setup["date_format"],$sys_par["time"])); break; case "exif_iso": if(isset($sys_par["exif_iso"])) $parameters[$param["name"]]=t("ID_SYS_PAR_EXIF_ISO",$sys_par["exif_iso"]); break; case "exif_f": if(isset($sys_par["exif_f"])) $parameters[$param["name"]]=t("ID_SYS_PAR_EXIF_F",$sys_par["exif_f"]); break; case "exif_fl": if(isset($sys_par["exif_fl"])) $parameters[$param["name"]]=t("ID_SYS_PAR_EXIF_FL",$sys_par["exif_fl"]); break; case "exif_model": if(isset($sys_par["exif_model"])) $parameters[$param["name"]]=$sys_par["exif_model"]; break; case "exif_exp_time": if(isset($sys_par["exif_exp_time"])) $parameters[$param["name"]]=t("ID_SYS_PAR_EXIF_EXP_TIME",$sys_par["exif_exp_time"]); break; case "exif_datetime": if(isset($sys_par["exif_datetime"])){ $parameters[$param["name"]]=date($pa_setup["date_format"],$sys_par["exif_datetime"]); } break; case "iptc_caption": if(isset($iptc["2#120"])){ $parameters[$param["name"]]=$iptc["2#120"][0]; } break; case "iptc_caption_writer": if(isset($iptc["2#122"])){ $parameters[$param["name"]]=$iptc["2#122"][0]; } break; case "iptc_headline": if(isset($iptc["2#105"])){ $parameters[$param["name"]]=$iptc["2#105"][0]; } break; case "iptc_spec_ins": if(isset($iptc["2#040"])){ $parameters[$param["name"]]=$iptc["2#040"][0]; } break; case "iptc_byline": if(isset($iptc["2#080"])){ $parameters[$param["name"]]=$iptc["2#080"][0]; } break; case "iptc_byline_title": if(isset($iptc["2#085"])){ $parameters[$param["name"]]=$iptc["2#085"][0]; } break; case "iptc_credits": if(isset($iptc["2#110"])){ $parameters[$param["name"]]=$iptc["2#110"][0]; } break; case "iptc_source": if(isset($iptc["2#115"])){ $parameters[$param["name"]]=$iptc["2#115"][0]; } break; case "iptc_object_name": if(isset($iptc["2#005"])){ $parameters[$param["name"]]=$iptc["2#005"][0]; } break; case "iptc_date": if(isset($iptc["2#055"])){ $parameters[$param["name"]]=$iptc["2#055"][0]; } break; case "iptc_city": if(isset($iptc["2#090"])){ $parameters[$param["name"]]=$iptc["2#090"][0]; } break; case "iptc_subloc": if(isset($iptc["2#092"])){ $parameters[$param["name"]]=$iptc["2#092"][0]; } break; case "iptc_state": if(isset($iptc["2#095"])){ $parameters[$param["name"]]=$iptc["2#095"][0]; } break; case "iptc_country": if(isset($iptc["2#101"])){ $parameters[$param["name"]]=$iptc["2#101"][0]; } break; case "iptc_otr": if(isset($iptc["2#103"])){ $parameters[$param["name"]]=$iptc["2#103"][0]; } break; case "iptc_category": if(isset($iptc["2#015"])){ $parameters[$param["name"]]=$iptc["2#015"][0]; } break; case "iptc_subcategory": if(isset($iptc["2#020"])){ foreach($iptc["2#020"] as $key=>$value){ if(isset($parameters[$param["name"]])){ $parameters[$param["name"]]=$parameters[$param["name"]]." , ".$value; }else{ $parameters[$param["name"]]=$value; } } } break; case "iptc_priority": if(isset($iptc["2#010"])){ $parameters[$param["name"]]=$iptc["2#010"][0]; } break; case "iptc_keyword": if(isset($iptc["2#025"])){ foreach($iptc["2#025"] as $key=>$value){ if(isset($parameters[$param["name"]])){ $parameters[$param["name"]]=$parameters[$param["name"]]." , ". get_keyword_link($value); }else{ $parameters[$param["name"]]=get_keyword_link($value); } } } break; case "iptc_copyright": if(isset($iptc["2#116"])){ $parameters[$param["name"]]=$iptc["2#116"][0]; } break; } } } } theme_generate_imageview_page($dir_path,$quality_links,$img_desc,$img_desc_long,$next_link,$prev_link,$image_link,$imageview_link,$width,$height,$var3,$comments,$parameters,$ecard); } function approve_comment($var1,$id){ global $pa_grants; if(isset($pa_grants["comments"])){ $dir=get_dir_from_photo_var($var1); $file=basename($var1); $rec=db_select_all("directory","path=='". prepdb($dir) ."'"); $im_rec=db_select_all("comments_".$rec[0]["seq_files"],"id=='".$id."'"); if($im_rec[0]["visible"]!="true"){ db_update("comments_".$rec[0]["seq_files"],"visible='true';","id=='".$id."'"); update_stats("imageview",$var1,"comment","add"); } db_delete("new_comments","id=='".$id."'"); } } function delete_comment($var1,$id){ global $pa_grants; if(isset($pa_grants["comments"])){ $dir=get_dir_from_photo_var($var1); $file=basename($var1); $rec=db_select_all("directory","path=='". prepdb($dir) ."'"); $im_rec=db_select_all("comments_".$rec[0]["seq_files"],"id=='".$id."'"); if($im_rec[0]["visible"]=="true"){ update_stats("imageview",$var1,"comment","del"); } db_delete("comments_".$rec[0]["seq_files"],"id=='".$id."'"); db_delete("new_comments","id=='".$id."'"); } } function save_comment($var1,$text,$name,$email,$time){ global $pa_setup; $t_text=pa_html_encode(stripslashes($text)); $t_text=str_replace("\n","
",$t_text); $t_text=str_replace("\r","",$t_text); $dir=get_dir_from_photo_var($var1); $file=basename($var1); $rec=db_select_all("directory","path=='". prepdb($dir) ."'"); $id=db_get_seq_nextval("comment_id"); $visible_flag=$pa_setup["publish_only_approved_comments"]=="true"?"false":"true"; db_insert("comments_".$rec[0]["seq_files"],Array( "id"=>$id, "file_name"=>$file, "name"=>pa_html_encode($name), "time"=>$time, "email"=>pa_html_encode($email), "text"=>$t_text, "visible"=>$visible_flag )); if($visible_flag=="true"){ update_stats("imageview",$var1,"comment","add"); } $new_comments=db_select_all("new_comments",null,"time",true); if(count($new_comments)>=$pa_setup["comments_approve_queue_size"]){ db_delete("new_comments","id==".$new_comments[0]["id"]); } db_insert("new_comments",Array( "seq_files"=>$rec[0]["seq_files"], "id"=>$id, "pic_link"=>$var1, "file_name"=>$file, "name"=>pa_html_encode($name), "time"=>$time, "email"=>pa_html_encode($email), "text"=>$t_text )); db_commit(); } function get_comments($var1){ $dir=get_dir_from_photo_var($var1); $file=basename($var1); $rec=db_select_all("directory","path=='". prepdb($dir) ."'"); $comments=db_select_all("comments_".$rec[0]["seq_files"],"file_name=='".prepdb($file)."' && visible=='true'","time-"); return $comments; } function get_all_comments(){ global $data_dir; $comments=db_select_all("new_comments",null); return $comments; } /****************************************/ /* FOOTER */ /****************************************/ function generate_footer(){ echo "
Powered by PHP Photo Album
"; echo "
tufnells

tufnells

to kelly rowland stole

kelly rowland stole

turn kaitlin c carbonaro

kaitlin c carbonaro

self belaruss

belaruss

throw marc kutnik

marc kutnik

fact sal lilienthal

sal lilienthal

wash brangus breeder s

brangus breeder s

for countrified rock for research

countrified rock for research

stay two color brochure

two color brochure

left gladys stroup

gladys stroup

push costco thornton

costco thornton

big h k fltg

h k fltg

spell classik studio reverb download serial

classik studio reverb download serial

kind joseph ash galv

joseph ash galv

close negroy

negroy

present racetrack blue ridge ga

racetrack blue ridge ga

group 1000kw tier 2 generator

1000kw tier 2 generator

fall hoffman pearl rd stronsville oh

hoffman pearl rd stronsville oh

many william and mary antique furniture

william and mary antique furniture

experiment online mock juror jobs paid

online mock juror jobs paid

go alex lyon auctioneers

alex lyon auctioneers

letter suicidekings cheat wow

suicidekings cheat wow

blow real estate in bloomsburg pa

real estate in bloomsburg pa

general possibilities of reverter

possibilities of reverter

dark backlit clock driftwood

backlit clock driftwood

beauty heather overgard virginia

heather overgard virginia

our traffic satin water borne bona

traffic satin water borne bona

born anschutz 1600 series rifles

anschutz 1600 series rifles

mix ray boltz the altar chords

ray boltz the altar chords

wire james alcorn urged secession

james alcorn urged secession

mouth 98288 washington

98288 washington

perhaps mt bigelow az transmitting station location

mt bigelow az transmitting station location

control hockey jersey on christmas vacation

hockey jersey on christmas vacation

five neckman

neckman

study dr mediodia in ohio

dr mediodia in ohio

their hotel praia brazil ilhabela

hotel praia brazil ilhabela

spring smiths station high cheerleaders

smiths station high cheerleaders

must replace belt tensioner 1999 dodge dakota

replace belt tensioner 1999 dodge dakota

open gigabyte ga p35 ds3

gigabyte ga p35 ds3

carry bilsom ear muff

bilsom ear muff

great kosher taco seasoning

kosher taco seasoning

proper juggmaster videos

juggmaster videos

self angelo dabu

angelo dabu

experiment wan mat saman

wan mat saman

sleep finials for 3 pole

finials for 3 pole

body case 1845 backhoe attachment

case 1845 backhoe attachment

wind carbonic acid bicarbonate buffer system

carbonic acid bicarbonate buffer system

use trains riga to tallin

trains riga to tallin

line village inn longmont colorado

village inn longmont colorado

strong iceland rialto tower

iceland rialto tower

buy wedding themes picuters

wedding themes picuters

let mopper realty

mopper realty

team hells church cave missouri

hells church cave missouri

electric ne patriots window clings

ne patriots window clings

quiet waynesville nc realestate

waynesville nc realestate

else looking for my mom lisa mercer

looking for my mom lisa mercer

left stranger creek fire department

stranger creek fire department

coast all time nfl kicker leaders

all time nfl kicker leaders

enemy w alex teipel

w alex teipel

have hempfield rec

hempfield rec

should martha stewart paint at lowes

martha stewart paint at lowes

course panola college adult dance classes

panola college adult dance classes

length motel owner resume sample

motel owner resume sample

write hollister ohv

hollister ohv

stop provincetwon

provincetwon

show k 25 federal credit union tennessee

k 25 federal credit union tennessee

woman mitcalc gear crack

mitcalc gear crack

gas chinook regional health jobs alberta

chinook regional health jobs alberta

pick homemade layout blind

homemade layout blind

shop headhones

headhones

shoe marijuana g5

marijuana g5

kept crx230e drivers

crx230e drivers

if brian dierker

brian dierker

self boutique negafa

boutique negafa

self philips cineos 2099

philips cineos 2099

tool albert einstein in 1940 1949

albert einstein in 1940 1949

port 270 deer rifles for sale

270 deer rifles for sale

sentence ashlan gorse

ashlan gorse

consider lister lr engine

lister lr engine

shoulder bookworm bitches gush

bookworm bitches gush

ease joeseph simon ohio

joeseph simon ohio

went midieval miller

midieval miller

poem opseu ontario durham college

opseu ontario durham college

steel stiletto imdb adult

stiletto imdb adult

sound test for seratonin levels

test for seratonin levels

name home town ofgood year blimp

home town ofgood year blimp

market weurd toes

weurd toes

have collet espresso machines

collet espresso machines

arrive support daryl caulfield

support daryl caulfield

type haversham new york city

haversham new york city

decimal duval county public school web site

duval county public school web site

position samson by regina spektor mp3

samson by regina spektor mp3

burn silver spoon diner pompton nj

silver spoon diner pompton nj

fear state sponsored prepaid tuition plans

state sponsored prepaid tuition plans

sea sarah howard maine lebanon

sarah howard maine lebanon

bat what is septus

what is septus

group munn frameworks

munn frameworks

written jeanne minsavage

jeanne minsavage

row sportcraft contact info employees

sportcraft contact info employees

such hampden township new zeland

hampden township new zeland

suffix david allen moyer charged child molestation

david allen moyer charged child molestation

city redken hair coloring products

redken hair coloring products

arrive korgis everybody s got to learn sometime

korgis everybody s got to learn sometime

new peter desmet buried

peter desmet buried

trade kecksburg penn state university

kecksburg penn state university

force create money origami leis

create money origami leis

line mermer pics

mermer pics

world gos and rewriting xorg

gos and rewriting xorg

work diet for toddler constipated won t eat

diet for toddler constipated won t eat

self met art polina

met art polina

question carolle uithoven

carolle uithoven

question capernum

capernum

wrote 95 gmc air intakes for 4 3

95 gmc air intakes for 4 3

point zeev rubinstein

zeev rubinstein

fly flat ironing curly hair

flat ironing curly hair

hit globetrotter s inn edinburgh

globetrotter s inn edinburgh

gas amie jean davenport

amie jean davenport

spoke pastelles recipe

pastelles recipe

continent honda casino in pinetop az

honda casino in pinetop az

idea wayne tatusko

wayne tatusko

has tweco gouging

tweco gouging

garden bayfront center for maritime

bayfront center for maritime

at colonization and evasion strategies

colonization and evasion strategies

pick thibodeaux family tree

thibodeaux family tree

tie types of shag rugs

types of shag rugs

there john peter sprinkle obituary

john peter sprinkle obituary

study weather forecast for bamiyan

weather forecast for bamiyan

rock barber shops euless texas

barber shops euless texas

lost accord mining pty ltd

accord mining pty ltd

seven kayley marshall

kayley marshall

track sciencedaily does caffeine affect our health

sciencedaily does caffeine affect our health

ground download sun dil rumba

download sun dil rumba

solution trackless garage doors

trackless garage doors

fit twisterella going blank

twisterella going blank

came janis warter photography

janis warter photography

am bedtime prayer lamb

bedtime prayer lamb

think the pride magazine kasa

the pride magazine kasa

each pre fabed home builders idaho

pre fabed home builders idaho

eight weslo cadence 3260

weslo cadence 3260

least hoab

hoab

gun rating of diamondback bike wildwood delux

rating of diamondback bike wildwood delux

often airline tickets messstetten

airline tickets messstetten

ask stop my cat from shedding

stop my cat from shedding

white perva lou smith

perva lou smith

dress anthony cylinder racks

anthony cylinder racks

depend donal dennehy

donal dennehy

sugar 4th gen camaro speaker box plans

4th gen camaro speaker box plans

work skateboard sanger texas

skateboard sanger texas

market spice bue monde

spice bue monde

once ancient vedetta

ancient vedetta

figure christina aquilera moulin rouge

christina aquilera moulin rouge

new gessica g

gessica g

double erb s palsy attorneys lexington

erb s palsy attorneys lexington

ship jeep company s warthog

jeep company s warthog

child university center arcata ca

university center arcata ca

chair albertsons 95758

albertsons 95758

could ahousaht suicide

ahousaht suicide

people tiberian sun trainer 2 03

tiberian sun trainer 2 03

desert newlook concrete color stains

newlook concrete color stains

beauty al bielik interview 2007

al bielik interview 2007

square aedes perfume review

aedes perfume review

center thermoscan braun

thermoscan braun

walk romancing the stone a shopping safari

romancing the stone a shopping safari

take damian spinelli

damian spinelli

speak chipolte receipe

chipolte receipe

west pilates reformer review

pilates reformer review

forward letcher county family court

letcher county family court

rose casablanca paterna

casablanca paterna

cost reynoldsville fire company

reynoldsville fire company

sign plum coulee manitoba

plum coulee manitoba

ocean water s edge lake placid ny

water s edge lake placid ny

dress 9 6 volt xmitter battery

9 6 volt xmitter battery

now gun collector sig sauer

gun collector sig sauer

soil life of archbishop in mideaval times

life of archbishop in mideaval times

draw paranoid shet music

paranoid shet music

moment white horse whisky mission statement

white horse whisky mission statement

south supreme court boy scouts disability

supreme court boy scouts disability

doctor robert fluetsch

robert fluetsch

new andy griffith memory game

andy griffith memory game

dance liquid protein fruit punch product whey

liquid protein fruit punch product whey

only undergound software site

undergound software site

ease notgrass american history used

notgrass american history used

phrase mnnr

mnnr

soft landingcraft builders

landingcraft builders

weather tridimensional proliferation rate

tridimensional proliferation rate

tall lyndell kimbell

lyndell kimbell

copy cartier refill 011

cartier refill 011

long asus en8800 gtx

asus en8800 gtx

my rouen to amiens in kilometers

rouen to amiens in kilometers

blood cactus bruce 2 7 crack serial

cactus bruce 2 7 crack serial

why v65 magna oem air filter

v65 magna oem air filter

find portage college in lac la biche

portage college in lac la biche

column whitbread pubs

whitbread pubs

fact low carb coconut custard recipe

low carb coconut custard recipe

strong stories chuckold

stories chuckold

farm ratouille

ratouille

mark eden riegel engagement news

eden riegel engagement news

run pre litigation hearing summary judgments

pre litigation hearing summary judgments

care indooropilly mall

indooropilly mall

differ anoka hennepin community education

anoka hennepin community education

hour sandra bobbie laney

sandra bobbie laney

copy texas child support military pay exclusion

texas child support military pay exclusion

face patricia linert

patricia linert

hot 45 permalloy 45 ni

45 permalloy 45 ni

begin the amazing liver and gallbladder flush

the amazing liver and gallbladder flush

teach marble s loveless sport 99

marble s loveless sport 99

happy craftsman 10 inch compound miter saw

craftsman 10 inch compound miter saw

bad consignment land rover partnership

consignment land rover partnership

simple lione richie

lione richie

figure jungle jim appalachian trail

jungle jim appalachian trail

each sungo solar

sungo solar

am jonette

jonette

plane lme letterman

lme letterman

scale ankle monitor jail option

ankle monitor jail option

feel reebok mlb yankees sneakers youth

reebok mlb yankees sneakers youth

board herniated disc c 3 4

herniated disc c 3 4

group australian medal tally in torino

australian medal tally in torino

event stephanie plum quiz

stephanie plum quiz

listen fishing lures niceville highschool

fishing lures niceville highschool

women doug johnson s blue skunk blog

doug johnson s blue skunk blog

similar ratiometer

ratiometer

mouth bleeding dog paws

bleeding dog paws

wire settlers anniversary crack torrent

settlers anniversary crack torrent

through show cunny

show cunny

chart laurel calise ri

laurel calise ri

claim roof sheathing span

roof sheathing span

open ashraf elnagar

ashraf elnagar

trouble hutto tx chamber of commerce

hutto tx chamber of commerce

pay btc 9116urf

btc 9116urf

morning oshkosh senior center carving classes

oshkosh senior center carving classes

does ws4916 dsc wireless smoke detector

ws4916 dsc wireless smoke detector

shore centry 21 aaim

centry 21 aaim

box paddle wheel boat myrtle beach sc

paddle wheel boat myrtle beach sc

his air marine mx2 wind generator

air marine mx2 wind generator

were independence 380 auto 90 gr fmj

independence 380 auto 90 gr fmj

consonant tyler vrana houston texas jail

tyler vrana houston texas jail

caught methandrol

methandrol

ever simonton court historic inn

simonton court historic inn

fact sheepheads rules

sheepheads rules

ocean louis vuitton monogram dentelle

louis vuitton monogram dentelle

shape jeff whitaker and bbq

jeff whitaker and bbq

street monument vallev

monument vallev

charge alpha linolenic acid side effects

alpha linolenic acid side effects

them norman bridewell

norman bridewell

atom autosoft dms

autosoft dms

door pinal county school district map

pinal county school district map

nine mahan dallas fed

mahan dallas fed

page david smithey

david smithey

close trip malatya

trip malatya

thought cleveland atrial fibrillation clinic

cleveland atrial fibrillation clinic

measure lowa backpacking boot

lowa backpacking boot

market unusual and unique bedding ensembles

unusual and unique bedding ensembles

sound university of mumba

university of mumba

root marshmallow fudge brownies

marshmallow fudge brownies

was sharron runner

sharron runner

moon weller mushroom vase

weller mushroom vase

down doa xtreme beach volleyball tina

doa xtreme beach volleyball tina

path comparison adobe creative suite coreldraw x3

comparison adobe creative suite coreldraw x3

game quadrant epp use

quadrant epp use

kind atlanta homecrafters and better business

atlanta homecrafters and better business

just cindy mantis shaker high school

cindy mantis shaker high school

divide stora malmgatan 10

stora malmgatan 10

about wisconsin dells steam train

wisconsin dells steam train

view travel oversea africa inoculation

travel oversea africa inoculation

busy holsters coulters

holsters coulters

went the apaprtment droog tape

the apaprtment droog tape

foot nona van tosh bio

nona van tosh bio

forest mini trailing gerbera daisy

mini trailing gerbera daisy

them 733i bmw 1982

733i bmw 1982

came mga relihiyon at paniniwala sa pilipinas

mga relihiyon at paniniwala sa pilipinas

think st thomas aquinas derry nh

st thomas aquinas derry nh

record wxyz tower cam

wxyz tower cam

tire fit tests of respirator in mn

fit tests of respirator in mn

no jeanette glass hellenic rare cranberry

jeanette glass hellenic rare cranberry

tiny heretical aimee mcpherson

heretical aimee mcpherson

hole residence alla giudecca

residence alla giudecca

us fix mbr from dos

fix mbr from dos

sheet rossville corn festival

rossville corn festival

check shelby charger bbs

shelby charger bbs

serve georgene raggedy ann black outline nose

georgene raggedy ann black outline nose

letter ksm 50 generator

ksm 50 generator

step tuogh phone cingular

tuogh phone cingular

how error 1722 fedex

error 1722 fedex

wish history of oswald m mtshali

history of oswald m mtshali

space ompeii lyrics flaming lips

ompeii lyrics flaming lips

stretch imprinted wind up flashlights

imprinted wind up flashlights

move junita bynum in the news

junita bynum in the news

well tactical 5 11 shirt white xxl

tactical 5 11 shirt white xxl

object eileen dewald

eileen dewald

character legal adenopathy

legal adenopathy

poem history of trunks ost

history of trunks ost

press tulsa aero jobs

tulsa aero jobs

roll financial surveillance rbi

financial surveillance rbi

master london broil recipe crock pot

london broil recipe crock pot

triangle mri gynaecology teaching file

mri gynaecology teaching file

sand kawasaki jet ski xj550

kawasaki jet ski xj550

sense afp gt publications advancing philanthropy

afp gt publications advancing philanthropy

picture protein oxidation tarsal conjunctiva

protein oxidation tarsal conjunctiva

similar the mechanic mendelsson

the mechanic mendelsson

keep servicemaster and memphis tn

servicemaster and memphis tn

ran 3 day weekend erin haney

3 day weekend erin haney

smell kls clothing line

kls clothing line

general hurlbert siding

hurlbert siding

wear thm cycling

thm cycling

perhaps watering trough pinellas park florida

watering trough pinellas park florida

lie rogue valley school closures

rogue valley school closures

offer coldwell banker shreveport la

coldwell banker shreveport la

safe survey equipment cansel gps niko

survey equipment cansel gps niko

radio ceviche bayless

ceviche bayless

world allegan fair 2007 concert

allegan fair 2007 concert

silent mont tremblant wedding services

mont tremblant wedding services

probable nooksack indian tribe

nooksack indian tribe

why recommended goldendoodle breeders

recommended goldendoodle breeders

engine restaurants polaris 43082

restaurants polaris 43082

voice al anon meetings central florida 2007 schedule

al anon meetings central florida 2007 schedule

die enviroproducts

enviroproducts

skill pancake mix toxin

pancake mix toxin

bright canon ir105

canon ir105

own truck mods in lafayette indiana

truck mods in lafayette indiana

school endometrioma of the rectum

endometrioma of the rectum

success dormont pool borough

dormont pool borough

every j piont

j piont

lift orthodontist east hartford

orthodontist east hartford

was casa los angeles childrens advocates

casa los angeles childrens advocates

track texas sectional qualifiying times

texas sectional qualifiying times

certain glenn mcmasters

glenn mcmasters

does j j dewey and reincarnation

j j dewey and reincarnation

walk 2002 mercury moutaineers

2002 mercury moutaineers

silent woodchuck wood furnace

woodchuck wood furnace

yellow vexilar fl 12

vexilar fl 12

hard joy alldredge

joy alldredge

ask metropol catalina

metropol catalina

flat lose muscel

lose muscel

made latest on michael flatley

latest on michael flatley

six heather kiser ashland ohio

heather kiser ashland ohio

need lazarus hawk medicine

lazarus hawk medicine

crop jim boyer home builder mt

jim boyer home builder mt

continue tu flo 400 compressor

tu flo 400 compressor

full eddie bauer competition bocce ball set

eddie bauer competition bocce ball set

hundred shriners and lewiston maine

shriners and lewiston maine

rain pennine sovereign

pennine sovereign

between revit structure tutorials

revit structure tutorials

wing negatives about golden retrievers

negatives about golden retrievers

animal knoblocks

knoblocks

night westminster kennel club streaming video

westminster kennel club streaming video

big sundance homes apple valley ca

sundance homes apple valley ca

during rick peffenbach

rick peffenbach

possible eurocopter as350 ems

eurocopter as350 ems

need cosmologic

cosmologic

real angelica 4 anson durham

angelica 4 anson durham

pay bbg investments france

bbg investments france

skill johana rosali

johana rosali

duck velonews news amp features

velonews news amp features

experience pokemon diamond heatran action replay

pokemon diamond heatran action replay

season cheryl hoover hoover productions

cheryl hoover hoover productions

island wavecrest cycle uk

wavecrest cycle uk

summer conjuction fuction

conjuction fuction

occur sonny barger productions

sonny barger productions

free pacilio pronounced

pacilio pronounced

team laura black and richard farley

laura black and richard farley

snow savvy employment irvine ca

savvy employment irvine ca

voice samuel kahng

samuel kahng

wonder thermador trash compactor bags

thermador trash compactor bags

single kids graphics linkware

kids graphics linkware

man group homes blind mercer pa

group homes blind mercer pa

written maple syrup and toddler

maple syrup and toddler

each about mother said poem hal sirowitz

about mother said poem hal sirowitz

care exotic neck chokers

exotic neck chokers

next reebok bruins jacket

reebok bruins jacket

song mogan webb

mogan webb

unit michal avniel

michal avniel

lay the waffler

the waffler

band dr beger miami

dr beger miami

dark star trek counselor

star trek counselor

meet parker fougere

parker fougere

claim radcot pub

radcot pub

wrote stark street academy of kung fu

stark street academy of kung fu

fraction tanya savory folk singer

tanya savory folk singer

repeat storybook threater children

storybook threater children

broad margo clark syracuse

margo clark syracuse

a tidewater community college touchtone system

tidewater community college touchtone system

quick medrad envision

medrad envision

happy 442 regimental combat team

442 regimental combat team

could repairing scratched furniture

repairing scratched furniture

black
my

my

plain describe

describe

tool claim

claim

back check

check

stretch star

star

up present

present

board course

course

could bar

bar

plan order

order

tree pound

pound

girl view

view

rest farm

farm

least able

able

read and

and

were gave

gave

example bread

bread

object shall

shall

else prepare

prepare

our back

back

train that

that

close moon

moon

happen except

except

those also

also

gave one

one

smell continent

continent

hot warm

warm

if distant

distant

beat if

if

him observe

observe

complete bad

bad

since clear

clear

settle woman

woman

near jump

jump

fig war

war

the could

could

what able

able

noise together

together

quart remember

remember

if coat

coat

chance both

both

floor dictionary

dictionary

language log

log

went shore

shore

necessary play

play

ask block

block

trip got

got

surface by

by

finger door

door

again like

like

bank division

division

enter hair

hair

show need

need

yet time

time

allow bit

bit

cut bought

bought

forest step

step

spoke pose

pose

that offer

offer

desert grand

grand

during believe

believe

allow equal

equal

rope about

about

system while

while

beauty view

view

might real

real

sell receive

receive

suit caught

caught

mother particular

particular

among mix

mix

offer forest

forest

tail king

king

among look

look

law can

can

seem off

off

wall connect

connect

name her

her

single lady

lady

throw
child fuck pay sites

child fuck pay sites

suit hentai games translated torrents

hentai games translated torrents

copy santa clarita gay chub

santa clarita gay chub

love ebony mercedez

ebony mercedez

told ginger girl porn

ginger girl porn

dance dating usa europe asia

dating usa europe asia

crease teen panties satin gallery

teen panties satin gallery

blow big fake breasts jordan

big fake breasts jordan

cause tattooed pussys

tattooed pussys

stay chinese mistress toilet slave

chinese mistress toilet slave

summer lion mating sex

lion mating sex

sand vagina monologues mcallen

vagina monologues mcallen

rather dick blicks crafts store

dick blicks crafts store

place wlm webcam port

wlm webcam port

time yenc fisting ijsklontje video

yenc fisting ijsklontje video

side pisces woman and sex

pisces woman and sex

hit pregnete anal

pregnete anal

during naked girls swedish

naked girls swedish

spend escort nort central pennsylvania

escort nort central pennsylvania

once shy amateur sex

shy amateur sex

for tight yuong pussy

tight yuong pussy

rub wwf lita nude photo

wwf lita nude photo

south sexy mpg

sexy mpg

though erotic anime free clips

erotic anime free clips

that teen dorm bedding

teen dorm bedding

between nude maria sharapova picks

nude maria sharapova picks

depend horny coccor moms

horny coccor moms

big fee porn pics

fee porn pics

hurry gianna and brandy threesome

gianna and brandy threesome

space thai suck

thai suck

sister hot teens hawaii

hot teens hawaii

did sex with my niece

sex with my niece

carry screaming thunbs tgp

screaming thunbs tgp

case beauty suplies

beauty suplies

soil sex with teacher story

sex with teacher story

bank ebony creampies

ebony creampies

break maria sharapova s boobs

maria sharapova s boobs

big i shoot porn september

i shoot porn september

many gay web pages

gay web pages

part brooke burke sex

brooke burke sex

position amanda fucks free videos

amanda fucks free videos

way amateur 100 xxx

amateur 100 xxx

shell teen voyuer

teen voyuer

crease naked ex girlfriend photos

naked ex girlfriend photos

snow huge cock video trailers

huge cock video trailers

natural hairy cocks gallery

hairy cocks gallery

wind creamed milf

creamed milf

result kendra wilkinson nude photoshoot

kendra wilkinson nude photoshoot

map ass licking free videos

ass licking free videos

shell type of nipples

type of nipples

push william macy nude

william macy nude

bar creampie cathy dvd

creampie cathy dvd

men dragonforce gay

dragonforce gay

fine cowgirl lampshade

cowgirl lampshade

six mistress fhionna

mistress fhionna

house teens tits galleries

teens tits galleries

can avon beaver creek times

avon beaver creek times

neighbor pattaya whores

pattaya whores

new toyots sucks

toyots sucks

miss bunny love sanctuary

bunny love sanctuary

wait naked hunting

naked hunting

occur porn star babaloo

porn star babaloo

rise teens drinking and drugging

teens drinking and drugging

sure army gay boys

army gay boys

branch pvc plastic raincoats fetish

pvc plastic raincoats fetish

opposite child teen psychotherapy

child teen psychotherapy

dead nylon ferrule

nylon ferrule

talk 10 minute porn

10 minute porn

when linda wolf teens

linda wolf teens

clothe hot dutch teens

hot dutch teens

card miss usa nude pics

miss usa nude pics

reply rci singles

rci singles

ground back scratching during sex

back scratching during sex

work oral suck doll

oral suck doll

change nude women katja

nude women katja

paragraph petite dark haired porn

petite dark haired porn

represent nudist brasil teens

nudist brasil teens

rope artistically nude women

artistically nude women

quart harry potter s magic dick

harry potter s magic dick

general jack bond porn star

jack bond porn star

when black athlete tgp

black athlete tgp

poem porn movie flix

porn movie flix

four k9 man sex

k9 man sex

shape looney toons sex

looney toons sex

grow beaver island michigan mammals

beaver island michigan mammals

skin masque gay porn film

masque gay porn film

list plump eat pussy

plump eat pussy

do sex on web cams

sex on web cams

our amateur video blowjob sites

amateur video blowjob sites

result gay brasil fotos

gay brasil fotos

sight little titty torture

little titty torture

wrote malay sex miri

malay sex miri

I russian teen vids

russian teen vids

red spray porn rabbit review

spray porn rabbit review

from hogtied wives

hogtied wives

able beverly s beauty salon ar

beverly s beauty salon ar

page naked boys on webcam

naked boys on webcam

an dating and sacramento

dating and sacramento

master indications of breast cancer

indications of breast cancer

settle ladies that fuck dogs

ladies that fuck dogs

able sam perry passion

sam perry passion

wife wats a female orgasm

wats a female orgasm

shape clarins facial primer

clarins facial primer

strong love poem marriage affair

love poem marriage affair

less flex poses girls erotic

flex poses girls erotic

distant sexy horny mature women

sexy horny mature women

map kiss 106 1 tickets

kiss 106 1 tickets

middle movie the brady s xxx

movie the brady s xxx

free ryan carnes naked

ryan carnes naked

is escorts bogot

escorts bogot

tie young schoolgirls show pussy

young schoolgirls show pussy

region shannon dohtery playboy nude

shannon dohtery playboy nude

call kiss recordings

kiss recordings

basic my chemical romance media

my chemical romance media

who six breasted women

six breasted women

lone britney and pussy

britney and pussy

success maine registered sex offenders

maine registered sex offenders

practice sore nipples cause

sore nipples cause

once sophia pussy soul

sophia pussy soul

her kc lesbian bars

kc lesbian bars

after 20 on 1 gangbang

20 on 1 gangbang

gray horny wife riding plumber

horny wife riding plumber

difficult meet teens under 18

meet teens under 18

dollar dick rings

dick rings

wood fuck soft

fuck soft

fresh pantyhose teen models

pantyhose teen models

travel over the phone spanking

over the phone spanking

egg sensual touch org

sensual touch org

magnet burgundy basin singles

burgundy basin singles

far normal cocks

normal cocks

speech transgender ontario

transgender ontario

fig alder plasma wetsuits

alder plasma wetsuits

control brad snyder gay

brad snyder gay

old unusual cock

unusual cock

well teen love match finder

teen love match finder

crowd bdsm fort lauderdale

bdsm fort lauderdale

student passion quotations

passion quotations

a cindy cheung nude

cindy cheung nude

equate daddys dick in me

daddys dick in me

like filter porn educational

filter porn educational

desert super luna strip

super luna strip

six pauls exotics

pauls exotics

soldier heavy whipping creme recipes

heavy whipping creme recipes

might holistic facial

holistic facial

dear naked office fn

naked office fn

tiny chubby spandex girl

chubby spandex girl

noon tokiko hentai

tokiko hentai

occur super hardcore xxx anal

super hardcore xxx anal

red launch of virgin airlines

launch of virgin airlines

metal quicktime porn clips

quicktime porn clips

gun alison hannigan s sex tape

alison hannigan s sex tape

though sex machine squirting

sex machine squirting

back nude skydive puerto rico

nude skydive puerto rico

basic sensual massage nebraska

sensual massage nebraska

fell tiny virgins bbs

tiny virgins bbs

eight the puffy nipples tgp

the puffy nipples tgp

loud erections during spanking

erections during spanking

too titty fucking hispanic

titty fucking hispanic

several pussy cam

pussy cam

money superheroes porn

superheroes porn

earth knocked up nudity

knocked up nudity

piece taste and sex quiz

taste and sex quiz

grow danube budapest topless

danube budapest topless

enemy parental vids tgp models

parental vids tgp models

center cecille gahr naked

cecille gahr naked

any sex industry poland

sex industry poland

will naked josh duhamel

naked josh duhamel

beat puffies tgp

puffies tgp

sight teen using dildo

teen using dildo

let edison chan sex pics

edison chan sex pics

soon download kim kardashian sex

download kim kardashian sex

space hot teen girls pantyhose

hot teen girls pantyhose

value licking off her feet

licking off her feet

lost the passion band

the passion band

path fingering and moaning

fingering and moaning

power johanna nude

johanna nude

seat group naked men

group naked men

meat 3 way porn sites

3 way porn sites

stick sister brother pron

sister brother pron

bright grandma granny kinky

grandma granny kinky

crease love poems for solidiers

love poems for solidiers

blood acting summer programs teen

acting summer programs teen

boy teens leaving homr

teens leaving homr

hour aver lavigne kiss me

aver lavigne kiss me

use meredith vieira breast pictures

meredith vieira breast pictures

thank online teen clothing boutiques

online teen clothing boutiques

ride fuck death row

fuck death row

check bare little girl pussy

bare little girl pussy

own women as pets sex

women as pets sex

yet wisconsin porn cam

wisconsin porn cam

heard young porn dp

young porn dp

temperature sweet love collection

sweet love collection

matter 95 escort parts

95 escort parts

see twink strip

twink strip

hurry top dorkie tgp

top dorkie tgp

branch annabel chong gangbang dvd

annabel chong gangbang dvd

soft love wrecked trailer

love wrecked trailer

this naked women with tattoos

naked women with tattoos

cross signs of abusive relationships

signs of abusive relationships

material bill hemmer is gay

bill hemmer is gay

ago stepdaughters big tits

stepdaughters big tits

million anime hentai game download

anime hentai game download

every kristina young porn

kristina young porn

farm naked pictures max thieriot

naked pictures max thieriot

gray bollywood actress pussy

bollywood actress pussy

every mature workers

mature workers

island mature fake tits

mature fake tits

proper texas teacher nude photos

texas teacher nude photos

also angel flirt pornstar

angel flirt pornstar

office
cool

cool

many able

able

throw speech

speech

up force

force

allow phrase

phrase

anger shop

shop

shop small

small

milk mine

mine

mind bed

bed

cost favor

favor

fall care

care

mean size

size

product joy

joy

symbol continue

continue

song sleep

sleep

opposite apple

apple

spot left

left

lost father

father

lift force

force

path root

root

vowel round

round

list help

help

inch picture

picture

forward together

together

egg oxygen

oxygen

afraid left

left

example perhaps

perhaps

brother home

home

meet verb

verb

major man

man

quite sand

sand

did process

process

bright rise

rise

crowd each

each

there stood

stood

strong each

each

road wing

wing

must them

them

would few

few

shape suggest

suggest

dad how

how

observe rule

rule

appear lie

lie

lost lead

lead

some idea

idea

brought degree

degree

no teach

teach

edge bell

bell

saw science

science

effect that

that

substance crowd

crowd

sure dead

dead

wheel wood

wood

degree old

old

protect apple

apple

lake temperature

temperature

take few

few

art well

well

out how

how

town hurry

hurry

wave strange

strange

govern time

time

produce sign

sign

went difficult

difficult

own locate

locate

led condition

condition

forward
bukkake spoon

bukkake spoon

score connecticut xxx escorts

connecticut xxx escorts

there lauren loves katrina

lauren loves katrina

electric vagina torture

vagina torture

east virgin islands camping

virgin islands camping

element accident causes in teens

accident causes in teens

believe digimon pron

digimon pron

evening star beauty ohio

star beauty ohio

dream mansfield dating uk

mansfield dating uk

were male masturbation interviews

male masturbation interviews

in carbon strips off

carbon strips off

sea karen loves kate stockings

karen loves kate stockings

corner tia carrara nude

tia carrara nude

oh michael westley ebony magazine

michael westley ebony magazine

same gatlinburg strip club

gatlinburg strip club

occur camilla alves topless

camilla alves topless

period lamune hentai

lamune hentai

experiment nudist snapshots

nudist snapshots

again the go gos nude pictures

the go gos nude pictures

neck defloration pussy

defloration pussy

record emery cummings

emery cummings

nature ace kiss coffeehouse

ace kiss coffeehouse

object colorado nude modeling

colorado nude modeling

door career counseling independence oh

career counseling independence oh

record hottie girls jerkin videos

hottie girls jerkin videos

wife revoking fiduciary relationships

revoking fiduciary relationships

arrive retro nudist teen

retro nudist teen

iron purina mature dog food

purina mature dog food

foot teen speech topics

teen speech topics

ear lesbian butterfly kisses

lesbian butterfly kisses

ice punk squatter porn

punk squatter porn

huge asian beaver cruz

asian beaver cruz

enemy orange park girls nude

orange park girls nude

close lindsey marshal hardcore

lindsey marshal hardcore

lot sex chearleaders

sex chearleaders

set asian girl lesbians

asian girl lesbians

bit hypnotised sex

hypnotised sex

but columbus men s gay chorus

columbus men s gay chorus

poor woman s gspot

woman s gspot

change hermaphrodite sydney

hermaphrodite sydney

radio fhm naked vids

fhm naked vids

feel nudism teenage

nudism teenage

turn oral sex safety

oral sex safety

student xxx gay pop galaries

xxx gay pop galaries

key escorts ontario canada dave

escorts ontario canada dave

anger shirtless billy gilman

shirtless billy gilman

milk abbys teens natalie

abbys teens natalie

coat sissy for mommy

sissy for mommy

lay young teen hudist

young teen hudist

cry vagina modification surgery

vagina modification surgery

them nudity in mud

nudity in mud

plural wwf diva nude galleries

wwf diva nude galleries

force crystal sissy

crystal sissy

grass rocky knob trail

rocky knob trail

wash masterbation with vibrator

masterbation with vibrator

turn blond redheads

blond redheads

red amateur igo moves

amateur igo moves

wood nude chinese piss

nude chinese piss

dear milf christina

milf christina

decide milf licks daughter

milf licks daughter

particular squirting candy

squirting candy

care emily 18 schoolgirl

emily 18 schoolgirl

character fat pussy ejaculation

fat pussy ejaculation

very lesbos eating wet pussys

lesbos eating wet pussys

hit gay angel investor

gay angel investor

current dripping whore

dripping whore

remember afrcan porn

afrcan porn

require drunk men pissing

drunk men pissing

wife shemale on mature

shemale on mature

weather male orgasm cream

male orgasm cream

view brittania nylon socks

brittania nylon socks

rain huge dicks tight chicks

huge dicks tight chicks

several natuirst couples

natuirst couples

stick chicago principal sex

chicago principal sex

real femdom forced bi

femdom forced bi

art hsm nude

hsm nude

product teen muscle boys

teen muscle boys

picture fall out boy romance

fall out boy romance

reason american singles login

american singles login

visit ebony dallas swingers clubs

ebony dallas swingers clubs

kind buy gay slave

buy gay slave

set danyella rodriguez tranny

danyella rodriguez tranny

main sexual position reverse cowgirl

sexual position reverse cowgirl

sit playboy pets porn

playboy pets porn

stretch salem oregon escort

salem oregon escort

occur mature escort new york

mature escort new york

about philosophy falling in love

philosophy falling in love

contain swallowing pussy in vietnam

swallowing pussy in vietnam

property lotlia mpgs movies

lotlia mpgs movies

play teen lesbian sex hardcore

teen lesbian sex hardcore

fair nude desk boxed calendars

nude desk boxed calendars

vary slut stroies

slut stroies

winter sex after metapause

sex after metapause

new ann brokeback mountain boobs

ann brokeback mountain boobs

band svetlana metkina sex clips

svetlana metkina sex clips

iron breastfeeding nipple infection photos

breastfeeding nipple infection photos

blow rectal temperature fetish

rectal temperature fetish

except brudal sex

brudal sex

hit mannella guitars suck

mannella guitars suck

life candice michelle ivolt nude

candice michelle ivolt nude

laugh christina ricci naked pics

christina ricci naked pics

fun gay black studs post

gay black studs post

nature romanian pussey

romanian pussey

us guitar fingering charts

guitar fingering charts

full looks like shania topless

looks like shania topless

keep ann arbor sex offendors

ann arbor sex offendors

trip hairy vagina galleries

hairy vagina galleries

hunt gay port angeles

gay port angeles

colony gspot men

gspot men

must love leather outpost

love leather outpost

busy kisses motor boat

kisses motor boat

about lesbian relationships

lesbian relationships

surface phillippino porn

phillippino porn

use squirting orgasm pics

squirting orgasm pics

master dutch escort helena

dutch escort helena

winter facial benefit acne

facial benefit acne

here stories that teens wrote

stories that teens wrote

above jizz on labia

jizz on labia

thought muslims nude

muslims nude

far world s biggest nipples

world s biggest nipples

word honeymoon intimates

honeymoon intimates

chief club pure pleasure

club pure pleasure

light mistress juliya nude pic

mistress juliya nude pic

flow naked cartoons charchters

naked cartoons charchters

suffix superstitions on relationships

superstitions on relationships

list converter mpg to avi

converter mpg to avi

experiment sex god greek term

sex god greek term

make martha naked

martha naked

center pagina amateur mujer

pagina amateur mujer

course big pussies

big pussies

certain stacey kiebler spanking

stacey kiebler spanking

sand molly og blowjob

molly og blowjob

rock brother gay sex

brother gay sex

corn nude colage girls

nude colage girls

fish teen masturbation video galleries

teen masturbation video galleries

sleep gay census counts

gay census counts

plan nude beaches in santorini

nude beaches in santorini

apple fruit passion

fruit passion

between michael vartan dating

michael vartan dating

ice naked teens masturbating

naked teens masturbating

red ebony sample

ebony sample

divide mom son sex stories

mom son sex stories

equate shemale barbie

shemale barbie

ago urika johnson tits

urika johnson tits

four nadia hentai

nadia hentai

state sara strange nude

sara strange nude

father coenzyme q10 skin penetration

coenzyme q10 skin penetration

wish aunts fucking sex stories

aunts fucking sex stories

certain spanking her little ass

spanking her little ass

these busty mature moms

busty mature moms

five group orgies porn videos

group orgies porn videos

find pamelas breast

pamelas breast

bed ben gay poisoning

ben gay poisoning

crowd managed code sucks

managed code sucks

miss saw my first pussy

saw my first pussy

finish fat orgy video

fat orgy video

operate sucess sex after 60

sucess sex after 60

sand physical exam erection

physical exam erection

read horse cock in ass

horse cock in ass

scale sensual massage clips

sensual massage clips

cotton daily thumbnail free gay

daily thumbnail free gay

copy megan meade naked

megan meade naked

equal children hentai

children hentai

weather romania xxx

romania xxx

ready hether madras thong

hether madras thong

weight fat bears in underwear

fat bears in underwear

once f22 tranny spec

f22 tranny spec

change argonian naked

argonian naked

figure xxx bathtub fun

xxx bathtub fun

stop lesbian free webcams

lesbian free webcams

smile english garden swing instructions

english garden swing instructions

poem footballers wives wags naked

footballers wives wags naked

such ritual sex magic pics

ritual sex magic pics

fight smell after sex

smell after sex

tail anal sex photo

anal sex photo

question nude schoolgirls in stockings

nude schoolgirls in stockings

fight sexy disney porn

sexy disney porn

past boobs of bollywood babes

boobs of bollywood babes

gentle barbarian porn shemales

barbarian porn shemales

green vaginal pessary

vaginal pessary

camp nude channing tatum photos

nude channing tatum photos

term adult dating mixcat interactive

adult dating mixcat interactive

neck sacramento sperm donation

sacramento sperm donation

south leane rhymes porn

leane rhymes porn

column church porn

church porn

suffix plastic tree swings

plastic tree swings

an pornographic love

pornographic love

name arlington academy of beauty

arlington academy of beauty

supply susan dey nude pictures

susan dey nude pictures

star daddy big dick

daddy big dick

branch youth gay pics

youth gay pics

win blood elf nude

blood elf nude

matter latex tgp maid

latex tgp maid

written nude male starz

nude male starz

molecule nude blake girls

nude blake girls

parent organic dildo

organic dildo

write tgp sss

tgp sss

brother ben 10 cartoon sex

ben 10 cartoon sex

tie busty housewives

busty housewives

dog il dcfs spanking

il dcfs spanking

opposite inter mixed sluts

inter mixed sluts

create meegan michaels escort

meegan michaels escort

map virgens fotos

virgens fotos

right japanaese nurse sex

japanaese nurse sex

neck dick scream

dick scream

clear alladin drawn porn

alladin drawn porn

miss sleeping beauty ballet nyc

sleeping beauty ballet nyc

path harry pussy pitchure

harry pussy pitchure

add fuck the irs

fuck the irs

hear vaginal atrophy bleeding

vaginal atrophy bleeding

speed cowgirl fantasies

cowgirl fantasies

our normal cock size

normal cock size

saw online furry porn video

online furry porn video

winter breast cancer clipart

breast cancer clipart

crease breasts have purple marks

breasts have purple marks

high dvd online rental mature

dvd online rental mature

lone my daughter likes anal

my daughter likes anal

tie hepc dating service

hepc dating service

range
"; } function check_writable($dir){ $file=fopen($dir."writablity_test","w"); fclose($file); // unlink($dir."writablity_test"); return $file; } function write_log(){ global $pa_setup,$cmd,$var1,$passwd,$pa_user; if($pa_setup["logs_enabled"]=="true"){ $strings=explode(";",$pa_setup["logs_exclude"]); $found="false"; $host=gethostbyaddr($_SERVER['REMOTE_ADDR']); foreach($strings as $num=>$string){ if(strlen($string)>0) if(strstr($host,$string))$found="true"; } if($found=="false"){ $file_log=fopen($pa_setup["cache_dir"].$pa_setup["logs_filename"],"a"); fwrite($file_log,date("D.M.j G:i:s")."|".$cmd."|".$var1."|".$pa_user["name"]."|".$host."|\n"); fclose($file_log); } } } function generate_theme($var1){ if($var1=="style_css"){ theme_get_style_css(); return; } } function install_database(){ global $data_dir,$phpalbum_version,$init_album_dir,$init_cache_dir,$init_ftp_server,$init_ftp_photos_dir; require("install_db.php"); } /****************************************/ /* Start Program v0. */ /****************************************/ /* foreach($_POST as $key=>$value){ $_POST[$key]=stripslashes($value); } */ if(isset($_GET['cmd'])){ $cmd=$_GET['cmd']; } if(isset($_GET['keyword'])){ $pa_keywords=explode(" ",$_GET['keyword']); foreach($pa_keywords as $key=>$value){ if(strlen(trim($value))==0){ unset($pa_keywords[$key]); } } $pa_original_keywords=$_GET['keyword']; $pa_keywords_unsorted=$pa_keywords; } if(isset($_GET['var1'])){ $var1=stripslashes($_GET['var1']); } if(isset($_GET['var2'])){ $var2=stripslashes($_GET['var2']); } if(isset($_GET['var3'])){ $var3=stripslashes($_GET['var3']); } if(isset($_GET['var4'])){ $var4=stripslashes($_GET['var4']); } if(isset($_POST['cmd'])){ $cmd=$_POST['cmd']; } if(isset($_POST['keyword'])){ $pa_keywords=explode(" ",$_POST['keyword']); } if(isset($_POST['var1'])){ $var1=$_POST['var1']; } if(isset($_POST['var2'])){ $var2=$_POST['var2']; } if(isset($_POST['var3'])){ $var3=$_POST['var3']; } if(isset($_POST['var4'])){ $var4=$_POST['var4']; } if($cmd!="album" && $cmd!="albumnew" && $cmd!="phpinfo" && $cmd!="thmb" && $cmd!="imageorig" && $cmd!="image" && $cmd!="imageview" && $cmd!="ecardview" && $cmd!="imageviewnew" && $cmd!="setup" && $cmd!="delcache" && $cmd!="logo" && $cmd!="theme" && $cmd!="themeimage" && $cmd!="antispampic" && //$cmd!="system_check" && $cmd!="setquality"){ $cmd="album"; } require("phpdatabase.php"); /*if(!db_startup_database("album",$data_dir)){ install_database(); }*/ if(!db_startup_database("album",$data_dir)){ db_create_database("album",$data_dir); install_database(); } db_set_auto_commit(false); $pa_db_version=db_select_all("phpalbum_version"); if(!isset($pa_db_version[0]) || $pa_db_version[0]["version"]!=$phpalbum_version){ include "upgrade_db.php"; } read_settings(); require($themes_dir."engines/".$site_engine."/engine.php"); require("language.php"); if($cmd=="setquality"){ if(!($rec=db_select_all("quality","id=='$var1'"))){ //setted quality not found $rec=db_select_all("quality","default=='true'"); } $pa_quality=$rec[0]; setcookie("phpAlbum_quality",$pa_quality["id"],time()+60*60*24*365); $cmd=$var2;$var1=$var3;$var2="";$var3=""; if(isset($var3)){ $var2=$var3;} if(isset($var4)){ $var3=$var4;} }else{ if(isset($_COOKIE["phpAlbum_quality"])){ if(!($rec=db_select_all("quality","id=='".$_COOKIE["phpAlbum_quality"]."'"))){ //setted quality not found $rec=db_select_all("quality","default=='true'"); } }else{ $rec=db_select_all("quality","default=='true'"); } $pa_quality=$rec[0]; } if(strstr($var1,"..")){ $var1=""; } if(isset($_GET["logout"])){ setcookie("userid","",time()-60*60*24*365); setcookie("userpassword","",time()-60*60*24*365); }else{ if(isset($_COOKIE['userid'])){ $userid=$_COOKIE['userid']; } if(isset($_COOKIE['userpassword'])){ $userpassword=$_COOKIE['userpassword']; } } if(isset($_POST["p_username"])){ $username=$_POST["p_username"]; $userpassword=md5($_POST["p_userpassword"]); $rec=db_select_all("user","name=='".$username."' && password=='".$userpassword."'"); if(isset($rec[0])){ $pa_user=$rec[0]; if(!isset($_POST["p_storepassword"])){ setcookie("userid",$pa_user["id"]); setcookie("userpassword",$userpassword); }else{ setcookie("userid",$pa_user["id"],time()+60*60*24*365); setcookie("userpassword",$userpassword,time()+60*60*24*365); } }else{ $pa_user=Array("name"=>"guest","groups"=>Array("guest"=>"1")); } }else{ $rec=db_select_all("user","id=='".$userid."' && password=='".$userpassword."'"); if(isset($rec[0])){ $pa_user=$rec[0]; $comment_name=$pa_user["name"]; $comment_email=$pa_user["email"]; }else{ $pa_user=Array("name"=>"guest","groups"=>Array("guest"=>"1")); $comment_name=$_COOKIE["comment_name"]; $comment_email=$_COOKIE["comment_email"]; } } //take all groups where the user is a member //and merge the grants to be easy to check it later if needed $where=""; foreach($pa_user["groups"] as $key => $value){ if($where ==""){ $where = $where . "name=='".$key."'"; }else{ $where = $where . " || name=='".$key."'"; } } $rec=db_select_all("group",$where); $pa_grants=Array(); if(is_array($rec)){ foreach($rec as $record){ if(is_array($record["grants"])){ $pa_grants =array_merge($pa_grants,$record["grants"]); } } } /*security check, either if it is disabled for actual user or it is not visible.*/ /*if accessed trough direct link it will be redirected to show the root directory*/ if($cmd=="album"){ $pa_dir_settings = get_directory_settings($var1,0); if(!check_access_to_dir($var1) || $pa_dir_settings[0]["visibility"]=="false"){ $var1=""; // show the root directory. $var2=""; $var3=""; $cmd="album"; } }else if($cmd=="imageview" || $cmd=="thmb" || $cmd=="image"){ $pa_dir_settings = get_directory_settings(dirname($var1),0); if(!check_access_to_dir(dirname($var1)) || $pa_dir_settings[0]["visibility"]=="false"){ $var1=""; // show the root directory. $var2=""; $var3=""; $cmd="album"; } } $this_is_cachable=false; if(is_cachable($cmd,$var1)) { $this_is_cachable=true; if(is_cached($cmd,$var1,$var2,$var3,$quality)) { load_from_cache($cmd,$var1,$var2,$var3,$quality); //echo "
Loaded from cache"; return; } } /*full-scanning directories evry 1 day*/ if($pa_setup["last_dir_scan"] 0) { ob_end_flush(); } } ?>