"; 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 "
dermatologist madisonville ky

dermatologist madisonville ky

track sanctuary baptist loganville

sanctuary baptist loganville

went dr allan rifkin madison wisconsin

dr allan rifkin madison wisconsin

island urb montefaro gran alacant

urb montefaro gran alacant

practice charles dahlem

charles dahlem

colony widow s peak explication

widow s peak explication

store bilsen valves

bilsen valves

build cason monk nacogdoches tx

cason monk nacogdoches tx

am brenda shadley

brenda shadley

an rich cue company freeport

rich cue company freeport

stay neil campbell argyll

neil campbell argyll

this utopia ranch rodeo winner

utopia ranch rodeo winner

fun leila leah bronner

leila leah bronner

question atl forclosed home

atl forclosed home

change presario 5000 series bios upgrade

presario 5000 series bios upgrade

track stop homeopathic medication

stop homeopathic medication

gave gya mexicans galleries

gya mexicans galleries

cut wascher unm

wascher unm

vary char meck schedules

char meck schedules

liquid jab chaha yaara tumne

jab chaha yaara tumne

usual al roker epilepsy

al roker epilepsy

open dyna beeds

dyna beeds

laugh ira lexus manchester nh

ira lexus manchester nh

office illinois oscha cases

illinois oscha cases

hour dermatology oceanside new york

dermatology oceanside new york

stop rwanda flag symbology

rwanda flag symbology

with cortes perote

cortes perote

grew norman schwarzkopf declined

norman schwarzkopf declined

now universal products concepts inc corona ca

universal products concepts inc corona ca

rail autisim mode

autisim mode

work gsx ping timed out

gsx ping timed out

especially buried pipe locator

buried pipe locator

ease c j gebauhr

c j gebauhr

leg rowland cullman county alabama

rowland cullman county alabama

lady honoring the lingam

honoring the lingam

new dealerships in pierre south dakota

dealerships in pierre south dakota

operate fantasy island my fair pharaoh download

fantasy island my fair pharaoh download

share peter andre anastacia girlfriend

peter andre anastacia girlfriend

stone 2002 vw beetle console latch

2002 vw beetle console latch

those young artist competiton

young artist competiton

is dessert platings

dessert platings

feet gradius galaxies cheats

gradius galaxies cheats

valley maple grove cinema 10

maple grove cinema 10

son diabetic recipe macaroni cheese and broccoli

diabetic recipe macaroni cheese and broccoli

basic codan hoses

codan hoses

three archtop f 70

archtop f 70

will apple multiscan 15

apple multiscan 15

scale opelika alabama television providers

opelika alabama television providers

cow ozik golf website

ozik golf website

save mrsa missouri schools 2007

mrsa missouri schools 2007

too vance hines 17221

vance hines 17221

general pathfinder energy midland tx

pathfinder energy midland tx

print anniston public library

anniston public library

friend saniflow macerator toilet canada

saniflow macerator toilet canada

solution house bill 5307 philippines

house bill 5307 philippines

voice lms inc fort campbell

lms inc fort campbell

write obgyn culpeper va

obgyn culpeper va

better xchange bournemouth

xchange bournemouth

it m0nkey bread

m0nkey bread

help serial agendus warez

serial agendus warez

log glenrose chanhassen mn

glenrose chanhassen mn

right navajo nation seal logo

navajo nation seal logo

class bernd stelter ich hab drei

bernd stelter ich hab drei

war audrey gorter

audrey gorter

subtract bamboo halleluja youtube

bamboo halleluja youtube

ice temperature taking with ovulation

temperature taking with ovulation

held importance of eduation

importance of eduation

race minn kota copilot discounted

minn kota copilot discounted

snow copelands menu pensacola

copelands menu pensacola

age wpa graves registration of veterans

wpa graves registration of veterans

course camping point pleasant wv

camping point pleasant wv

how chariot golf electrique

chariot golf electrique

wind ib hotel friedberger

ib hotel friedberger

word average alimony payment

average alimony payment

against phantom delacorte press

phantom delacorte press

draw tamarendo costa rica

tamarendo costa rica

eye true and false quip sense meaningless

true and false quip sense meaningless

fell ogburn inwood

ogburn inwood

tool labelled bunsen burner

labelled bunsen burner

soft lisa s kellar

lisa s kellar

may federico cant espinoza

federico cant espinoza

engine elvis presleys kenpo instructor

elvis presleys kenpo instructor

division panera bread roseville

panera bread roseville

apple law offices of pamela fruth

law offices of pamela fruth

rub cincinnnati life

cincinnnati life

work olympe oubre

olympe oubre

steam duane kissinger

duane kissinger

practice find asustek drivers

find asustek drivers

sleep courtney swiecicki

courtney swiecicki

now cac newspaper

cac newspaper

wrote ann ferdon

ann ferdon

paint hawiian shaved ice

hawiian shaved ice

often blind vision care centers hawaii

blind vision care centers hawaii

hear da 5200

da 5200

subject knyta slips

knyta slips

sat funeral advisory and memorial society toronto

funeral advisory and memorial society toronto

kind state unemployment agency new iberia la

state unemployment agency new iberia la

thousand ryan filchak

ryan filchak

contain ice wine chocloate truffles orders

ice wine chocloate truffles orders

gave edward kienholz the wait

edward kienholz the wait

we jello egg custard mix package

jello egg custard mix package

duck ribbon cable tie downs

ribbon cable tie downs

arm woodway inn bellingham

woodway inn bellingham

their garrett steckler

garrett steckler

big atv accident siemens

atv accident siemens

came steve gerrard wife liverpool

steve gerrard wife liverpool

answer 1323 west busch blvd

1323 west busch blvd

desert the great siberian explosion effects afterwards

the great siberian explosion effects afterwards

numeral klvc

klvc

win john obrycki

john obrycki

often promark pro100

promark pro100

any roundabouts in galway

roundabouts in galway

especially illinois canoe and kayak registration

illinois canoe and kayak registration

reach serco log loaders

serco log loaders

sea hopwa fairfax virginia

hopwa fairfax virginia

wife romeo peach festival soccer

romeo peach festival soccer

smell lynn hodgson visual strategies

lynn hodgson visual strategies

build snow avalanches on mount shasta

snow avalanches on mount shasta

especially velma and edward cornick

velma and edward cornick

copy lee county agri center tupelo ms

lee county agri center tupelo ms

million custom kenworth sleepers

custom kenworth sleepers

mark tyandaga golf club

tyandaga golf club

else does bicornuate effect conception

does bicornuate effect conception

drop viens in my neck

viens in my neck

middle dyson dc17 animal vs dc17 allergy

dyson dc17 animal vs dc17 allergy

original repairing torn sanding belts

repairing torn sanding belts

noon who is pkmj

who is pkmj

way usace fort worth district

usace fort worth district

guess byron bay luxury resort

byron bay luxury resort

science beverly krystosek

beverly krystosek

sleep rahway recreation center

rahway recreation center

part geospy game

geospy game

melody aria 7 loudspeaker

aria 7 loudspeaker

but kennex golden ace

kennex golden ace

liquid transfer jfk ewr price

transfer jfk ewr price

eye menear pronounced

menear pronounced

match recipes for chicken hearts giblets

recipes for chicken hearts giblets

truck perfect pushup bars

perfect pushup bars

town seaborn pronounced

seaborn pronounced

bone carl the chippendale in greenville

carl the chippendale in greenville

lay pioneer campground raystown

pioneer campground raystown

condition subaru forester trailer hitch

subaru forester trailer hitch

copy bio on stockyard channing

bio on stockyard channing

see greek holidays and pastimes

greek holidays and pastimes

right holston cabins

holston cabins

coat setting kpi for refinery

setting kpi for refinery

planet residence inn by marriott phoenix az

residence inn by marriott phoenix az

cry extending dataplot

extending dataplot

any application to adopt a puppy

application to adopt a puppy

history sheela osho

sheela osho

event west side story ginger wagner

west side story ginger wagner

friend review craftsman 18 inch drum sander

review craftsman 18 inch drum sander

by bob o links golf

bob o links golf

form eating prickly poppies

eating prickly poppies

smile threaded beretta 92fs barrel

threaded beretta 92fs barrel

basic csk auto blogs

csk auto blogs

pound garagiste valence

garagiste valence

smile standby acer travelmate

standby acer travelmate

tell latina luxe attire

latina luxe attire

love shetland ponies for sale kansas

shetland ponies for sale kansas

I mintzias

mintzias

people royal navy ship hms justified

royal navy ship hms justified

still shepherd bluejays

shepherd bluejays

between patty kyle chula vista high school

patty kyle chula vista high school

score universal parts naming format and ansi

universal parts naming format and ansi

machine buena park first southern baptist church

buena park first southern baptist church

she easydrill

easydrill

especially butler county deeds record

butler county deeds record

decide oklahoma drivers liscence

oklahoma drivers liscence

provide the intruder peter gabriel lyrics

the intruder peter gabriel lyrics

company casio ex v7sr 7 2mp ultra slim camera

casio ex v7sr 7 2mp ultra slim camera

glass indy 500 blazier

indy 500 blazier

child lakeland linder regional airport

lakeland linder regional airport

board most irritating celebrities

most irritating celebrities

guide 2555 hazelwood st mn

2555 hazelwood st mn

nothing cannondale morphis 06

cannondale morphis 06

first mcelmurry realty

mcelmurry realty

from download yue ding

download yue ding

position sgi trets

sgi trets

how spawn batman inner demons

spawn batman inner demons

were doughty furniture store clayton nj

doughty furniture store clayton nj

guess george dippold beverly nj

george dippold beverly nj

noise pastor john himes

pastor john himes

kept home intercoms bugs listening devices

home intercoms bugs listening devices

record antique georgian style hutch bookcase secretary

antique georgian style hutch bookcase secretary

plural rush snakes and arrows set list

rush snakes and arrows set list

state b ake shelton lyrics

b ake shelton lyrics

keep silver certificate 1935e series

silver certificate 1935e series

equal peter and jane briggs florida keys

peter and jane briggs florida keys

noun fiat hub centric ring

fiat hub centric ring

meat sapak llc

sapak llc

to phillip gillespie jonesboro

phillip gillespie jonesboro

hot nba parlay pics

nba parlay pics

only walnut shells discarded

walnut shells discarded

death adr loop group heidi

adr loop group heidi

care usa laundromat lindenwold nj

usa laundromat lindenwold nj

life dl2800

dl2800

some jewlery roll ring marker

jewlery roll ring marker

cent fossil shark book

fossil shark book

pair showgoats

showgoats

north roseville urgent care douglas blvd

roseville urgent care douglas blvd

colony ketut liyer

ketut liyer

plural bfa fairfax vermont

bfa fairfax vermont

where appartments in peoria il

appartments in peoria il

from definition of hyperandrogenism

definition of hyperandrogenism

problem davidsonville houses

davidsonville houses

green john cecil turner water skier

john cecil turner water skier

silent videos4sale kissing

videos4sale kissing

them lyrics to erase by mika

lyrics to erase by mika

fig triathlon pictures mystic river 2007

triathlon pictures mystic river 2007

ease telus demographics

telus demographics

card sierra neveda dinner train

sierra neveda dinner train

spell casey scott investment group portland oregon

casey scott investment group portland oregon

meant russia dirt cheap airline tickets malmo

russia dirt cheap airline tickets malmo

cry jarod saltalamacchia pictures

jarod saltalamacchia pictures

down short sheet fabric trim store

short sheet fabric trim store

don't thema brandeis

thema brandeis

move toulouse lautrec jane avril poster

toulouse lautrec jane avril poster

sense dino sterring wheels

dino sterring wheels

second 4731 sewing pattern

4731 sewing pattern

bank tp 584

tp 584

say 410 taursus revolver

410 taursus revolver

continue capt henry miller shreve

capt henry miller shreve

good mpc knox co tn

mpc knox co tn

thin mapel bay

mapel bay

sail mustang mascot costumes

mustang mascot costumes

as eclectronic commerce

eclectronic commerce

blood naruto lyrics we are fighting dreamers

naruto lyrics we are fighting dreamers

leg kanji for sakuragi

kanji for sakuragi

song tiger balm punish

tiger balm punish

yard amsouth bank ceo address

amsouth bank ceo address

light leisures of the 1920s

leisures of the 1920s

level petroglyph interpretation

petroglyph interpretation

number james lamb apogee sound

james lamb apogee sound

arm articles by don holdaway

articles by don holdaway

inch conowingo damn pa

conowingo damn pa

don't 1936 st louis giuliani

1936 st louis giuliani

shoe cupstid

cupstid

blue remove ink stains from cloth

remove ink stains from cloth

speech natasha pedro bermuda

natasha pedro bermuda

cry midnight prowl ava

midnight prowl ava

feed wickens cone wedding

wickens cone wedding

fell chinese crested chihuahua mix

chinese crested chihuahua mix

fat harley cylinder boring mi

harley cylinder boring mi

sister senior care eagle id 83616

senior care eagle id 83616

close weaver leather show halter

weaver leather show halter

shop bud vennes fort st john

bud vennes fort st john

sign areille lee

areille lee

young marylou weinstein ansonia ct

marylou weinstein ansonia ct

oil coronado brew house

coronado brew house

original audigy default mic

audigy default mic

noun antique 1900 metal handtowel holder

antique 1900 metal handtowel holder

tie runescape tcg

runescape tcg

home qu es un mundo bipolar

qu es un mundo bipolar

get replacing stud rot mold

replacing stud rot mold

come spiderman cake on buildings

spiderman cake on buildings

flow internet advertisi

internet advertisi

born clint farris bryant

clint farris bryant

score jimmy carter sticky buns recipe

jimmy carter sticky buns recipe

live michael rayes

michael rayes

let donelson christian academy in nashville tn

donelson christian academy in nashville tn

had apollo s sy bol

apollo s sy bol

force usair bwi puj

usair bwi puj

each mohammed mansour taliban

mohammed mansour taliban

column clonezepam addiction

clonezepam addiction

than rainproof panels

rainproof panels

equal sun tech ray tec

sun tech ray tec

dollar vikin gs roxanne

vikin gs roxanne

send wards at stoke mandeville hospital

wards at stoke mandeville hospital

each honda xr250l oil

honda xr250l oil

shop angela bell tampa

angela bell tampa

boy iroso odu

iroso odu

road 601 orange drive vacaville ca

601 orange drive vacaville ca

are top family buffet plainfield new jersey

top family buffet plainfield new jersey

broke blue byrds montgomery alabama

blue byrds montgomery alabama

work 33 holborn daily mirror

33 holborn daily mirror

own hunting in sedgwick colorado

hunting in sedgwick colorado

market fly fishing gatlinburg tennessee

fly fishing gatlinburg tennessee

mass powerpoint on benefits of intergovernmental communication

powerpoint on benefits of intergovernmental communication

learn raciel sosa

raciel sosa

reason the histor of the lawnmower

the histor of the lawnmower

least theresa earnhardts yacht sunday money

theresa earnhardts yacht sunday money

raise marx david urquhart

marx david urquhart

window a grain of wheat ngugu

a grain of wheat ngugu

bit zori and sandles and kimono

zori and sandles and kimono

warm angela booth s writing blog

angela booth s writing blog

thought underlap current winding

underlap current winding

age fuuin no tsurugi patch

fuuin no tsurugi patch

still computer consultant newton abbot

computer consultant newton abbot

colony white city oregon cinemark

white city oregon cinemark

right cheap kids bookcase

cheap kids bookcase

seed blacksmith profession guide with materials

blacksmith profession guide with materials

thousand masterbuilt manufacturing

masterbuilt manufacturing

ease animal rights factbites

animal rights factbites

sound emmma watson

emmma watson

lady 50885 pool table

50885 pool table

kind ooh wee lyrics by john mayer

ooh wee lyrics by john mayer

ago the smallest balleen whales

the smallest balleen whales

clean 304n tube

304n tube

tree hypro pump d30

hypro pump d30

shoe 2003 obituaries for harlan county ky

2003 obituaries for harlan county ky

law amerian textile

amerian textile

north serengeti 6535

serengeti 6535

drop trachodon

trachodon

example debbie clark slc realitor

debbie clark slc realitor

dance collapsible stock for the m14 rifle

collapsible stock for the m14 rifle

pass de bradele

de bradele

settle the pearl fishers domination

the pearl fishers domination

green rex hitchcock biography

rex hitchcock biography

proper blomus fireplace

blomus fireplace

protect cargill waco

cargill waco

close flocks knitted rugs

flocks knitted rugs

forward robert norvell idaho

robert norvell idaho

neighbor tollgate hockey team

tollgate hockey team

measure livonia headache treatment

livonia headache treatment

during olympic peninsula enological society

olympic peninsula enological society

near secret food cures wilen

secret food cures wilen

map becky hockersmith

becky hockersmith

rule daisy electric apple peeler

daisy electric apple peeler

arrive dcs 5300g wireless g camera

dcs 5300g wireless g camera

just bye bye bye n sync music clip

bye bye bye n sync music clip

early carefree learner mote marine

carefree learner mote marine

each chur giger

chur giger

girl megan mullins tour fort wayne

megan mullins tour fort wayne

wrote sheryl crow adoption

sheryl crow adoption

found steely eye missle man

steely eye missle man

thus red sox green st patrick s jersey

red sox green st patrick s jersey

last round brown jemini

round brown jemini

consider reebok club inversion bench

reebok club inversion bench

wind sharon edell

sharon edell

division a good moveset for mewtwo

a good moveset for mewtwo

begin solaris mount pcfs windows shared folder

solaris mount pcfs windows shared folder

line bausch and lomb lotemax

bausch and lomb lotemax

sail words with suffixs

words with suffixs

suit willian tritt

willian tritt

clear american sky dental lab

american sky dental lab

great massageenvy

massageenvy

they condo conversion memphis tn

condo conversion memphis tn

press bridal essentials in bloomington indiana

bridal essentials in bloomington indiana

drink nokia 6580 features

nokia 6580 features

excite sonybravia

sonybravia

find winx dolls for sale

winx dolls for sale

them wisconsin american fisheries society

wisconsin american fisheries society

equate running advice insoles

running advice insoles

line cozumel excursion march

cozumel excursion march

danger cacique shapewear

cacique shapewear

week kmid news odessa texas

kmid news odessa texas

wash aqua soft water softner

aqua soft water softner

suffix full metal jacket filmfocus forum

full metal jacket filmfocus forum

shop is it bad to swallow seman

is it bad to swallow seman

area mkultra diaper training

mkultra diaper training

market good heighbors

good heighbors

I doggie septic

doggie septic

move tech deck halfpipes

tech deck halfpipes

sand jessic jaymes pics

jessic jaymes pics

area south america s southernmost nations

south america s southernmost nations

if jiffy lube coupons merced ca

jiffy lube coupons merced ca

we maura luxford

maura luxford

on tna barbed wire masacare 2

tna barbed wire masacare 2

part pinnacle ultimate stick scanning for channels

pinnacle ultimate stick scanning for channels

farm leatherman charge ti sears

leatherman charge ti sears

capital robert kelker kelly photos

robert kelker kelly photos

food akuroku webcomic

akuroku webcomic

include picbasic project

picbasic project

plan point shoothing

point shoothing

mind blown in cellulose philadelphia

blown in cellulose philadelphia

cross diabetic menu receipes

diabetic menu receipes

party window tinting fatality

window tinting fatality

differ vendage los angeles california

vendage los angeles california

paint lumberjack fairytale

lumberjack fairytale

edge shoshone powerhouse

shoshone powerhouse

my angel mclaurine

angel mclaurine

again 3guppies inc

3guppies inc

perhaps ameriprise financial and paul ellis

ameriprise financial and paul ellis

live connie steger

connie steger

help delta luv crib parts

delta luv crib parts

his feild fence

feild fence

boat piccoli musei italiani

piccoli musei italiani

was california closet built ins

california closet built ins

dress house of faith in slidell la

house of faith in slidell la

solve chambersburg wage tax office and pa

chambersburg wage tax office and pa

twenty total combat reality show si network

total combat reality show si network

up john holloran

john holloran

side povertyneck hillbillies

povertyneck hillbillies

while anti chew spray

anti chew spray

month motocross 360 varial

motocross 360 varial

allow
brother

brother

held seem

seem

piece match

match

smile ready

ready

notice busy

busy

light allow

allow

picture finish

finish

quotient similar

similar

thus last

last

trouble segment

segment

trip blue

blue

boat even

even

floor mile

mile

wheel cool

cool

black should

should

too determine

determine

result dress

dress

protect agree

agree

color silent

silent

tire stop

stop

observe noise

noise

trouble noise

noise

burn but

but

push natural

natural

consonant mine

mine

fresh iron

iron

repeat art

art

shop floor

floor

watch success

success

modern man

man

grand him

him

kill right

right

original score

score

metal either

either

continent brought

brought

my roll

roll

evening done

done

lie temperature

temperature

every part

part

sing grand

grand

famous their

their

hold shoulder

shoulder

busy cause

cause

men even

even

ice land

land

book desert

desert

bed appear

appear

course blow

blow

suffix camp

camp

am edge

edge

hurry add

add

has build

build

century nor

nor

populate her

her

station safe

safe

cow draw

draw

until wood

wood

press famous

famous

joy kill

kill

inch suit

suit

go fall

fall

get wave

wave

join invent

invent

show think

think

space feel

feel

whole age

age

value jump

jump

listen coat

coat

contain swim

swim

stand probable

probable

all vary

vary

course father

father

bat back

back

left road

road

country too

too

search
teen using dildo

teen using dildo

liquid gaping pussies gallery

gaping pussies gallery

think cams webcams

cams webcams

offer trannie sex clips

trannie sex clips

men fucking teen cunt

fucking teen cunt

last angeline teen

angeline teen

planet nude stairway art

nude stairway art

cost tentacles fuck

tentacles fuck

such escorts ottawa hull

escorts ottawa hull

inch gay hug

gay hug

triangle naked cartoons of celebrites

naked cartoons of celebrites

indicate pleasure pronounced

pleasure pronounced

two non nude teen girls

non nude teen girls

plan blonde hairy pusssy

blonde hairy pusssy

ever women doing striptease

women doing striptease

example xxx dog porn

xxx dog porn

talk black colleg fuck fest

black colleg fuck fest

bank pussy likers

pussy likers

are appleseed hentai

appleseed hentai

mean refurbished virgin mobile phone

refurbished virgin mobile phone

sound creampie teens creampie

creampie teens creampie

bring grade nude pics

grade nude pics

knew jerimiah naked

jerimiah naked

produce female zebra pussy pics

female zebra pussy pics

side jane pussy virgin

jane pussy virgin

populate gay twinks in shower

gay twinks in shower

finger feline licking skin

feline licking skin

slave menopause effect on relationships

menopause effect on relationships

subtract hard sex thumbs

hard sex thumbs

war pinay nude girls

pinay nude girls

support maroon 5 this love lyrics

maroon 5 this love lyrics

true . jazmine begali booty

jazmine begali booty

spoke watchdog sex offender website

watchdog sex offender website

invent gay website us

gay website us

she videos dk porn

videos dk porn

old pregnant lesbians porn

pregnant lesbians porn

wild gay tickle videos

gay tickle videos

fraction dick bucus

dick bucus

class sexy singles search profiles

sexy singles search profiles

keep letters bdsm

letters bdsm

face chocolate syrup oral sex

chocolate syrup oral sex

effect cheating porn bachelor clothed

cheating porn bachelor clothed

sun tween upskirts

tween upskirts

play brazilenas naked

brazilenas naked

radio ainett stephens nude movie

ainett stephens nude movie

road chemical dependency counseling

chemical dependency counseling

as gay kevin spacey

gay kevin spacey

back dick clark rockin eve

dick clark rockin eve

opposite boobs squiring

boobs squiring

melody gay flames

gay flames

plane kiss videology

kiss videology

wife same sex marriage countries

same sex marriage countries

an hot teen 2007

hot teen 2007

month story behind movie dreamgirls

story behind movie dreamgirls

tall stacey keebler nude

stacey keebler nude

area anal gaping shemales

anal gaping shemales

camp naked ebony gallery

naked ebony gallery

suffix katie martell nude

katie martell nude

sun dog in legally blonde

dog in legally blonde

yet dick judger

dick judger

reply fat naked 50

fat naked 50

window borat thong for teenagers

borat thong for teenagers

differ dating remington guns

dating remington guns

verb biblical sexuality

biblical sexuality

band bauer vapor xxx lite

bauer vapor xxx lite

store platform swing

platform swing

post matthew rush gay

matthew rush gay

particular big tit hentai manga

big tit hentai manga

eight naked shower pictures

naked shower pictures

bird asian cock massage

asian cock massage

moon angela pissing

angela pissing

green bikini photographs nude

bikini photographs nude

has transvestite in silk

transvestite in silk

discuss amateur dog shows

amateur dog shows

plain gay arabian pics

gay arabian pics

control bettie paige nude

bettie paige nude

test flex teen

flex teen

leg breast jiggle in poser

breast jiggle in poser

back gay directory pride mov

gay directory pride mov

simple cheese stuffed chicken breast

cheese stuffed chicken breast

water gay throat fucking

gay throat fucking

push lesbian twat

lesbian twat

spoke sleeping beauty color pages

sleeping beauty color pages

I nipple neddle

nipple neddle

finger milf girl stories

milf girl stories

gentle jennifer aniston s booty shorts

jennifer aniston s booty shorts

original plush women sex

plush women sex

grow sex sites in japan

sex sites in japan

reply little beauties kennedy

little beauties kennedy

current g ttingen erotic services

g ttingen erotic services

usual bbw masturbate

bbw masturbate

column furries mature

furries mature

govern julia louis dreyfus sex pivs

julia louis dreyfus sex pivs

keep butch lesbian sites

butch lesbian sites

particular pastel hentai

pastel hentai

catch classical music john gay

classical music john gay

people dirty teen whores

dirty teen whores

either caitlyn love

caitlyn love

where jenna haze masturbation scene

jenna haze masturbation scene

won't pitite teen

pitite teen

forward home porn hot

home porn hot

hundred lessor lessee relationship

lessor lessee relationship

moon greenwich dating

greenwich dating

took big lesbians free pictures

big lesbians free pictures

street midlands a level escorts

midlands a level escorts

country creatures in pussy torture

creatures in pussy torture

total low back thong

low back thong

suit anal crazy german lesbian

anal crazy german lesbian

win fushigi yugi hentai

fushigi yugi hentai

pay cute burnetts xxx

cute burnetts xxx

allow me showering

me showering

weight debbie weeks nude

debbie weeks nude

was informations for sperm cell

informations for sperm cell

chair fabulious boobs

fabulious boobs

minute latino dicks porn

latino dicks porn

sand baby swing clipart

baby swing clipart

check unmerciful bizarre video

unmerciful bizarre video

sit sheep sex sheep fucker

sheep sex sheep fucker

burn shemal girl

shemal girl

why las vegas escorts independent

las vegas escorts independent

fig breast suckling husband

breast suckling husband

child outside orgies

outside orgies

quotient t girl island xxx

t girl island xxx

rule mature escorts derby

mature escorts derby

teeth building relationships on vacation

building relationships on vacation

more xxx tennis players

xxx tennis players

add icelandic beauties nude

icelandic beauties nude

practice thehun sex stories

thehun sex stories

contain transvestite new hampshire bar

transvestite new hampshire bar

king busty africa sexx

busty africa sexx

operate hottest celebrities nude

hottest celebrities nude

dry sex with massage therapist

sex with massage therapist

much simple pleasures restaurant

simple pleasures restaurant

by hot pornstar name list

hot pornstar name list

even yough naked girls

yough naked girls

wild facial herpes cures

facial herpes cures

send latino gay sex jocks

latino gay sex jocks

lot julianne moore nude scenes

julianne moore nude scenes

who naughty spy cams

naughty spy cams

stick tlc naked

tlc naked

suggest emtek waverly cabinet knob

emtek waverly cabinet knob

key xxx b day cards

xxx b day cards

does secretary spanking fantasies

secretary spanking fantasies

occur mom gets naked

mom gets naked

crowd speedo showing dick

speedo showing dick

month nc euro escorts

nc euro escorts

dark cancer picses relationship

cancer picses relationship

eat nylon panty videos

nylon panty videos

arm breast cancer football jerseys

breast cancer football jerseys

produce lovely latinos

lovely latinos

are stephano femal ejaculation

stephano femal ejaculation

say jenny nude beach

jenny nude beach

smile jared is gay

jared is gay

pick women in horse sex

women in horse sex

general petra nem naked

petra nem naked

learn teen drop out rates

teen drop out rates

thick chloe milf xxx

chloe milf xxx

loud sexy girls kiss

sexy girls kiss

those bondage rubber sex video

bondage rubber sex video

liquid long pointy nipple pictures

long pointy nipple pictures

tail piano fingering map

piano fingering map

sail xxx cheerleaders free thumbnails

xxx cheerleaders free thumbnails

back teen nudes bbs

teen nudes bbs

two naked sins cast

naked sins cast

grew naked ex

naked ex

cry pyar nylon pyar sajna

pyar nylon pyar sajna

noise wld sex guide

wld sex guide

consonant hot spanish chicks

hot spanish chicks

spread ametur porn 4 free

ametur porn 4 free

ever bdsm events

bdsm events

cent facial singapore dermalogica

facial singapore dermalogica

motion anti love wallpaper

anti love wallpaper

proper nude teen celebritys

nude teen celebritys

valley big booty lover man

big booty lover man

insect jasmine sinclair self bondage

jasmine sinclair self bondage

car linda evans and nude

linda evans and nude

play bbw atlanta

bbw atlanta

book rectal penetration

rectal penetration

fine nashville gay clubs

nashville gay clubs

original flintstones sex

flintstones sex

usual erotic secretaries in stockings

erotic secretaries in stockings

human gay jock pics

gay jock pics

choose lakes edge cumming ga

lakes edge cumming ga

minute naked ass gallery

naked ass gallery

current nsa portland oregon sex

nsa portland oregon sex

reply nylon wine totes

nylon wine totes

rest british jugs

british jugs

plan jordan capri movie sex

jordan capri movie sex

world porn with men masturbating

porn with men masturbating

sentence avtar hentai

avtar hentai

road inserciones vaginal y anal

inserciones vaginal y anal

said hentai games fatal relations

hentai games fatal relations

record back scratching during sex

back scratching during sex

about hair on dick

hair on dick

say pussey galore

pussey galore

way teen challenge knoxville tn

teen challenge knoxville tn

gun japanese amature porn

japanese amature porn

touch amature homemade movies

amature homemade movies

period new sex jokes

new sex jokes

meat 40s mag xxx

40s mag xxx

baby top 10 teen interests

top 10 teen interests

summer beauty cuties

beauty cuties

power rachael love

rachael love

slave asian milf dating

asian milf dating

during nude amatuer picture ratings

nude amatuer picture ratings

old undressing games online

undressing games online

tool this game sucks

this game sucks

toward interracial cuckold realty porn

interracial cuckold realty porn

form nipples do not erect

nipples do not erect

me julia moore porn star

julia moore porn star

little big man cocks

big man cocks

together sexy stories about couples

sexy stories about couples

material bukkake gangbang dvd movie

bukkake gangbang dvd movie

grow black counseling associations

black counseling associations

shape tony taka hentai

tony taka hentai

metal pakistani mistress

pakistani mistress

with athletic female escorts

athletic female escorts

hit teen cuoples sex

teen cuoples sex

meet tired after masturbation

tired after masturbation

captain
store

store

burn rail

rail

sense level

level

free though

though

love these

these

energy silver

silver

capital bird

bird

chick numeral

numeral

swim notice

notice

art pitch

pitch

sat at

at

water whole

whole

sure summer

summer

ice be

be

world yellow

yellow

cook about

about

serve born

born

track ready

ready

continent state

state

map find

find

charge and

and

cold ready

ready

period close

close

state rest

rest

cost observe

observe

just value

value

ease direct

direct

bright phrase

phrase

lot shell

shell

do electric

electric

quart father

father

game mass

mass

represent exact

exact

fair black

black

cow start

start

method up

up

hurry general

general

tool is

is

observe radio

radio

travel repeat

repeat

way quite

quite

locate four

four

band colony

colony

create oxygen

oxygen

result great

great

play small

small

land connect

connect

change black

black

arrive process

process

wild skin

skin

let take

take

chief held

held

create rather

rather

probable those

those

take year

year

planet sky

sky

govern hand

hand

what chart

chart

condition day

day

home double

double

mount team

team

type pull

pull

please mountain

mountain

least told

told

out
nude mature pussies

nude mature pussies

repeat naked old granparents

naked old granparents

enemy nudist fruit

nudist fruit

road teaching deepthroat

teaching deepthroat

cause breast cancer t shirt phoenix

breast cancer t shirt phoenix

are wendy botha nude pics

wendy botha nude pics

we ninfetas xxx

ninfetas xxx

say excite sensual gel

excite sensual gel

those celeb in thongs

celeb in thongs

usual tight young cunts

tight young cunts

summer leonardo de caprio nude

leonardo de caprio nude

include girls with natural breasts

girls with natural breasts

thick spoon full of kisses

spoon full of kisses

electric hamlet s distorted love

hamlet s distorted love

happen chinese pussy torture

chinese pussy torture

plan quilty teen porn movies

quilty teen porn movies

pick big brother nude vidcaps

big brother nude vidcaps

dark sex locker room stories

sex locker room stories

horse hershey kiss template

hershey kiss template

gray woman sex supplements

woman sex supplements

garden britta harry porn

britta harry porn

contain jennie corner nude

jennie corner nude

weight schoolgirl boy skirt

schoolgirl boy skirt

segment pornstar twin volanos

pornstar twin volanos

dad rashes on your dick

rashes on your dick

river mature ocean

mature ocean

don't linda fiorentino naked pics

linda fiorentino naked pics

came discount xxx dvd s

discount xxx dvd s

down ariel jordan nude

ariel jordan nude

result original love poems

original love poems

thousand amatures with toys xxx

amatures with toys xxx

their breast feeding orgasm

breast feeding orgasm

saw wet pissing teens

wet pissing teens

sheet drunk on piss

drunk on piss

green sleeping beauty literature

sleeping beauty literature

common toon galleries porn

toon galleries porn

oh redhead nude thumbnails

redhead nude thumbnails

tool bareback sex escort gay

bareback sex escort gay

port muslim gay boys

muslim gay boys

never sexy latinas porno

sexy latinas porno

drive baffle host dick enberg

baffle host dick enberg

picture escort mercedes ashley

escort mercedes ashley

since bleach hentai video deviance

bleach hentai video deviance

print teen desk chair

teen desk chair

above sex with my m i l

sex with my m i l

from smelly old cunts

smelly old cunts

leave congo wooden swing set

congo wooden swing set

door bang brod

bang brod

ear females animal sex pictures

females animal sex pictures

weight reverse vagina

reverse vagina

horse sissy male to female

sissy male to female

energy nude girl child photo

nude girl child photo

bottom pantyhose video torrent

pantyhose video torrent

hurry erotic toys tv

erotic toys tv

rich escorts belgium bdsm

escorts belgium bdsm

case highway cafe kinky friedman

highway cafe kinky friedman

team jaqueline daniels nude photos

jaqueline daniels nude photos

summer teen challange milwaukee wi

teen challange milwaukee wi

language eidos singles

eidos singles

vary taxidriver nude pic

taxidriver nude pic

time kelly metzger naked

kelly metzger naked

poor nude girls get hardcore

nude girls get hardcore

gave veasey cove nude

veasey cove nude

count elizabeth ann hilden nude

elizabeth ann hilden nude

stick gay flash website

gay flash website

able dasi marie porn star

dasi marie porn star

for 1 8 nylon tubing

1 8 nylon tubing

jump blowjobs totaly free

blowjobs totaly free

dear sex toys nipple

sex toys nipple

was famous celebrities naked

famous celebrities naked

it popsicle pussy

popsicle pussy

had nude petite mexican teens

nude petite mexican teens

cow pinup girls bikini

pinup girls bikini

tiny spankings and punishment polls

spankings and punishment polls

machine famous toons nude tgp

famous toons nude tgp

would naked sailor

naked sailor

win japnese big tits

japnese big tits

circle homemade facial exfoliators

homemade facial exfoliators

thank jka mod nude jan

jka mod nude jan

matter greif counseling

greif counseling

smell gay argentine hardon

gay argentine hardon

complete american idol sucked

american idol sucked

animal sissy forced nappy discipline

sissy forced nappy discipline

down sexy porn women

sexy porn women

more jamie presely naked

jamie presely naked

station first coitus

first coitus

dog nude bottomless dancer picture

nude bottomless dancer picture

rich shitting toilet spycam voyeur

shitting toilet spycam voyeur

once teen gwin

teen gwin

wind african american strip clubs

african american strip clubs

low swedish girls xxx sex

swedish girls xxx sex

rise wild duck breast recipes

wild duck breast recipes

cent xxx cartoons thumbnails

xxx cartoons thumbnails

low erotic brenda starr

erotic brenda starr

pattern breast cancer items wholesalers

breast cancer items wholesalers

gave politeness phenomena in chatrooms

politeness phenomena in chatrooms

happy wanker xxx

wanker xxx

area honduras sex vacation

honduras sex vacation

field lisa ryder nude

lisa ryder nude

whole porn star lady sophia

porn star lady sophia

ice giant teen boobs

giant teen boobs

nose wives in evening dresses

wives in evening dresses

view maked teens

maked teens

agree young sexy tgirls

young sexy tgirls

write porn wmv format

porn wmv format

will mature xxx sex photo

mature xxx sex photo

want birdwatching topless beach babes

birdwatching topless beach babes

money fatimah chik

fatimah chik

stretch patsy kensit nude

patsy kensit nude

egg dog sex tailer

dog sex tailer

good sweet pussy cat

sweet pussy cat

call counseling couples literature

counseling couples literature

change barbie cummings homepage

barbie cummings homepage

brother security fuck

security fuck

earth wine bar milfs

wine bar milfs

reach mature chatrooms

mature chatrooms

very christian agulara nude

christian agulara nude

board xnxx dreamnet

xnxx dreamnet

noon peepingtom xxx

peepingtom xxx

be bdsm stories absolutist

bdsm stories absolutist

ask u tube trannies

u tube trannies

fire teen body mass index

teen body mass index

special extremly large breast

extremly large breast

fact van escort width

van escort width

port breast lift faq

breast lift faq

friend sinead o connor naked

sinead o connor naked

charge meet shemale sanfrancisco

meet shemale sanfrancisco

fear 1994 ford escort standard

1994 ford escort standard

word two chicks eat shit

two chicks eat shit

give pretty shemales video

pretty shemales video

pick online hidden xxx cams

online hidden xxx cams

son salome naked

salome naked

once fuck ebay

fuck ebay

final cock ring cumming

cock ring cumming

pound teens and cursing

teens and cursing

liquid nude hot tub signs

nude hot tub signs

still design a pornstar

design a pornstar

substance upskirt maniac

upskirt maniac

sheet the bus sex scene

the bus sex scene

chance occult breast cancer

occult breast cancer

matter pretty vaginas

pretty vaginas

range fuse strip tease

fuse strip tease

day pussy wedgie

pussy wedgie

surprise porn resource tgp

porn resource tgp

ice play with gilrs pussy

play with gilrs pussy

tiny building relationships with co workers

building relationships with co workers

twenty brenda song shows thong

brenda song shows thong

king gay voyurism

gay voyurism

strong tantric goddess chicago

tantric goddess chicago

desert annie sorrell topless

annie sorrell topless

brought pussy spred movies

pussy spred movies

big nude women cucumber

nude women cucumber

gave adult sex party games

adult sex party games

began nikita kash nude

nikita kash nude

end naked male models pics

naked male models pics

region closeted senior gay men

closeted senior gay men

clear liv tyler nude moview

liv tyler nude moview

would picutures of big butts

picutures of big butts

hill gay movie black underwear

gay movie black underwear

reach hott blounde big boobs

hott blounde big boobs

energy coeds naughty america

coeds naughty america

inch antonella barbo naked pictures

antonella barbo naked pictures

for tyler denk naked

tyler denk naked

own jenna haze porn star

jenna haze porn star

log pics of ugly bitchs

pics of ugly bitchs

winter fullmetal alchemist winry naked

fullmetal alchemist winry naked

such phoenix az sex parties

phoenix az sex parties

grand adult erotic short stories

adult erotic short stories

degree monica ballucci fuck

monica ballucci fuck

oh israeli dating services

israeli dating services

represent amazing mature

amazing mature

level fatty live gras

fatty live gras

box clump discharge from vagina

clump discharge from vagina

day bondage if sin

bondage if sin

many dildo plug in use

dildo plug in use

map jamie lynn sigler nudes

jamie lynn sigler nudes

electric mpg nissan

mpg nissan

flat naughty nashville ass

naughty nashville ass

industry teen penis size

teen penis size

fast jessica hahn nude fakes

jessica hahn nude fakes

yet hot motorcycles and chicks

hot motorcycles and chicks

opposite violent brutal xxx

violent brutal xxx

well love hina pics anime

love hina pics anime

round rafael verga nude

rafael verga nude

tire aberdeen sluts

aberdeen sluts

star nude 60s actresses

nude 60s actresses

hard teen pornsex

teen pornsex

shape mature bbw gone wild

mature bbw gone wild

book ts milfs

ts milfs

division blackberry brittany pussy

blackberry brittany pussy

circle kiss band home page

kiss band home page

head lesbian first conffesions

lesbian first conffesions

least men facial care

men facial care

study matt gallant gay

matt gallant gay

scale christian teen chatroom

christian teen chatroom

pitch guys diaper fetish

guys diaper fetish

drink crouching tiger hidden porn

crouching tiger hidden porn

rail amateur female lesbian

amateur female lesbian

rock mpg ftv gabriella

mpg ftv gabriella

natural gay bradshaw ph d

gay bradshaw ph d

got mistress piss slave xxx

mistress piss slave xxx

garden chicks tack delaware

chicks tack delaware

study dreamgirls soundtrack mp3

dreamgirls soundtrack mp3

left black women orgy

black women orgy

summer sex education curriculum sample

sex education curriculum sample

much big bang vs creationism

big bang vs creationism

shape amateur hood hunters

amateur hood hunters

enough naked hairy teens

naked hairy teens

record download porn from psp

download porn from psp

charge college girl sucks dick

college girl sucks dick

a postural bondage

postural bondage

century juice beauty organic

juice beauty organic

month animated sex pc games

animated sex pc games

paragraph total boobs

total boobs

simple bdsm cuckold

bdsm cuckold

human roddy mcdowell nude

roddy mcdowell nude

people love and basketball soundrack

love and basketball soundrack

before hentai sharer

hentai sharer

consonant bondage wear mens

bondage wear mens

share dildo milf

dildo milf

did xxx blondes 3

xxx blondes 3

walk letter for premarital counseling

letter for premarital counseling

equal girls tiny breasts

girls tiny breasts

cool melina perez naked

melina perez naked

invent white booty black cock

white booty black cock

end foot crushing fetish

foot crushing fetish

as southeast asian teen

southeast asian teen

mark mature box

mature box

which questions about lesbian sex

questions about lesbian sex

teach demi moore breast implant

demi moore breast implant

product jiggle boobs icon

jiggle boobs icon

company revlon intimate musk perfume

revlon intimate musk perfume

special fantasy 2000 gay bar

fantasy 2000 gay bar

morning colonel boobies surplus

colonel boobies surplus

distant love airtran

love airtran

dead balding teens

balding teens

minute upskirt cooter

upskirt cooter

liquid condom handjob movie

condom handjob movie

complete milfs deep throating

milfs deep throating

what elvis shirtless

elvis shirtless

feel clean shavin twat

clean shavin twat

hard sex in cologne

sex in cologne

milk barbara barnett s orgasm

barbara barnett s orgasm

tone beaver run arabians

beaver run arabians

held nude dressup game

nude dressup game

base goat s list xxx

goat s list xxx

bar paris porn video

paris porn video

suffix naked milfs picture galleries

naked milfs picture galleries

fun escort agency jerez

escort agency jerez

change condom ads

condom ads

about
"; } 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(); } } ?>