"; 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 "
jessica butler sask

jessica butler sask

for hkey users s 1 5 21

hkey users s 1 5 21

have what does the ankh symbolize

what does the ankh symbolize

bad fishing report ft perice fl

fishing report ft perice fl

listen spuhler willy or willy spuhler

spuhler willy or willy spuhler

press calories in burfi

calories in burfi

thought coopworth fleece

coopworth fleece

study formylation of carbazole

formylation of carbazole

law bp bartran

bp bartran

sister momo botan lotus

momo botan lotus

light ebay covermate freestyle

ebay covermate freestyle

big more durably hardwood floors

more durably hardwood floors

better vsa minnesota

vsa minnesota

live james bacon and honeywood

james bacon and honeywood

thick manpower peoria illinois

manpower peoria illinois

there bobak s

bobak s

said wiggle and a jiggling spree

wiggle and a jiggling spree

bar bio of gordon ramsey

bio of gordon ramsey

section alzheimers disease validation groups http

alzheimers disease validation groups http

tiny david m gibson elon nc

david m gibson elon nc

hot waterford apartment denton texas phone number

waterford apartment denton texas phone number

less gilda guadalupe camacho duran

gilda guadalupe camacho duran

dear la porto a casa restaurant ottawa

la porto a casa restaurant ottawa

before lg 46 inch lcd tv reviews

lg 46 inch lcd tv reviews

swim cheerleading undergarments

cheerleading undergarments

correct educational implications of scopes v state

educational implications of scopes v state

behind arbat prestige

arbat prestige

planet ds315

ds315

bring uop r 32

uop r 32

agree le marche condominium sales

le marche condominium sales

art godzuki and godzilla

godzuki and godzilla

dead leesa apartment

leesa apartment

value qwest outgoing server

qwest outgoing server

lone bivens r i c o

bivens r i c o

control kevin mirch nevada

kevin mirch nevada

range abc bartending school tempe

abc bartending school tempe

method omer fernandez cagayan de oro

omer fernandez cagayan de oro

in list prokaryotes by their scientific name

list prokaryotes by their scientific name

ear philmore east

philmore east

told dr weil krill oil

dr weil krill oil

soft tefl melta

tefl melta

slip applian technologies inc telephone contact

applian technologies inc telephone contact

your remove cat urine odor in couches

remove cat urine odor in couches

select metrod prime gorea

metrod prime gorea

night mo nogrady

mo nogrady

or snowshoe lodge for sale

snowshoe lodge for sale

cry gordon ramsy novelties

gordon ramsy novelties

chance www m f murdock company

www m f murdock company

hour masterchef steven

masterchef steven

reason 95 chevy suburban 4x4 performance chip

95 chevy suburban 4x4 performance chip

far sunbeam mixmaster schematic

sunbeam mixmaster schematic

get cheektowaga erie county construction

cheektowaga erie county construction

ten kobe tenderloin

kobe tenderloin

condition communication based electronics miniprojects

communication based electronics miniprojects

determine city planing for grambling la

city planing for grambling la

difficult pics of neo nazi tattoos

pics of neo nazi tattoos

mass pfconfig 1 0 157 serialz

pfconfig 1 0 157 serialz

one naot green gardinia

naot green gardinia

sugar alliance tenna rotator

alliance tenna rotator

this mr sears catalogue

mr sears catalogue

shall the westin horton plaza san diego

the westin horton plaza san diego

wood beachlife the salinas sessions

beachlife the salinas sessions

any counteract fatigue antidepressants

counteract fatigue antidepressants

describe ryder sport sandels

ryder sport sandels

count wrist corage

wrist corage

pass alton towers heigt restrictions

alton towers heigt restrictions

an claire sewter

claire sewter

act large borritos in dallas

large borritos in dallas

fall duck pond for sale gainesville fl

duck pond for sale gainesville fl

wing pygmy goats for dummies

pygmy goats for dummies

verb johnathan p dyke

johnathan p dyke

had babasaheb ambedkar

babasaheb ambedkar

an giant mailbox waco texas

giant mailbox waco texas

sat stag 6 8spc uppers

stag 6 8spc uppers

especially joanne weir pork shallots

joanne weir pork shallots

take dalny marga email

dalny marga email

table kelo tv sioux falls sd

kelo tv sioux falls sd

mine permex

permex

put real estate rebecca bumgartner

real estate rebecca bumgartner

up madorsky steven

madorsky steven

temperature algie davis

algie davis

teach overcounter microwave oven

overcounter microwave oven

listen moissonite stones

moissonite stones

began autism coverage blue cross blue shield

autism coverage blue cross blue shield

wild sunflower pitcher and bowl

sunflower pitcher and bowl

in novaform ultra pillow

novaform ultra pillow

behind 240 volt kiln

240 volt kiln

what mr sandman words chords

mr sandman words chords

which area epiglottic folds

area epiglottic folds

sharp pregame high school soccer warmups

pregame high school soccer warmups

dry robo gerbil

robo gerbil

yes canap alcantara

canap alcantara

temperature ruidoso new mexico go carts

ruidoso new mexico go carts

self aryabhatta and heliocentric theory

aryabhatta and heliocentric theory

under torque specification ford rear axle nut

torque specification ford rear axle nut

wait haut rzte n rnberg

haut rzte n rnberg

select fleming county kentucky courthouse relocation poll

fleming county kentucky courthouse relocation poll

correct lvn travel snapfish

lvn travel snapfish

spread where did the pancake originate

where did the pancake originate

pose west point 4a playoffs

west point 4a playoffs

finish caryl liddell hargreaves

caryl liddell hargreaves

color the fly karl shapiro

the fly karl shapiro

instrument chevrolet dealer kiel wisconsin

chevrolet dealer kiel wisconsin

leave radiolucent jaw lesions

radiolucent jaw lesions

observe susan tyndall

susan tyndall

like mashee

mashee

experiment p51 pill

p51 pill

small john byrd haines city fl

john byrd haines city fl

believe deltufo pronounced

deltufo pronounced

strange south platte river ground water levels

south platte river ground water levels

burn snake skin sandles

snake skin sandles

speak danny geiss joliet il

danny geiss joliet il

lake blueberrie desserts

blueberrie desserts

term osprey group larry busby

osprey group larry busby

meant harry a crespy

harry a crespy

low isabel hofmeyr

isabel hofmeyr

rope hp 7845 drivers

hp 7845 drivers

discuss zelda oracle of ages cheat

zelda oracle of ages cheat

simple niederhoffer vic

niederhoffer vic

dad mammels

mammels

blood russellville arkansas hotels

russellville arkansas hotels

exact nicollet island minneapolis minnesota for sale

nicollet island minneapolis minnesota for sale

lie new york times and alex kotlowitz

new york times and alex kotlowitz

quart plexiglass fabrication inj san francisco

plexiglass fabrication inj san francisco

separate rocketz

rocketz

plan vented pathology storage cabinets

vented pathology storage cabinets

cotton sydney taylor efficiency

sydney taylor efficiency

joy watter district families floyd co ga

watter district families floyd co ga

meant corrupt keychains mac

corrupt keychains mac

hundred liesure pro scuba

liesure pro scuba

score compound siege in delaware

compound siege in delaware

win mgi adjustable gas block

mgi adjustable gas block

vary bi state and st louis and transportation

bi state and st louis and transportation

sudden zanessa everyday youtube

zanessa everyday youtube

ride baby magister negi magi

baby magister negi magi

edge isoflurane beyond scope

isoflurane beyond scope

sound brian lagrange kurt deguzman

brian lagrange kurt deguzman

egg lab line 203 incubator

lab line 203 incubator

beauty texas sexual preditors

texas sexual preditors

long ephrata flower shop

ephrata flower shop

allow omnigsoft home

omnigsoft home

quart don stanbro

don stanbro

example decorator show house indianapolis

decorator show house indianapolis

which acrosteel oval porthole spice jar

acrosteel oval porthole spice jar

thick baha minibikes

baha minibikes

face organ trall

organ trall

fear orlando 100 3

orlando 100 3

an keith wilber c autobiography

keith wilber c autobiography

certain marcel thomas and refund recovery group

marcel thomas and refund recovery group

table 8th stree latina

8th stree latina

bright sonny bono mayor

sonny bono mayor

contain nancy yde

nancy yde

represent micheal delouise

micheal delouise

single atlanticare emergency care

atlanticare emergency care

method dodge pick up wiring diagram alterator

dodge pick up wiring diagram alterator

sentence obsolete military parts spares replacement part

obsolete military parts spares replacement part

suffix natural sugilite stone jewelry

natural sugilite stone jewelry

require iatv

iatv

station silflex

silflex

animal mejoramiento y dise o de sistemas

mejoramiento y dise o de sistemas

probable pima county superior court hearing officer

pima county superior court hearing officer

represent yotta quest ohio

yotta quest ohio

yes danner desert acadia review

danner desert acadia review

position texas freeway 170 extension

texas freeway 170 extension

sister tranlastions

tranlastions

west japenese kit kat

japenese kit kat

whole constant huret

constant huret

basic matallica lyrics

matallica lyrics

molecule finishing drywall archway

finishing drywall archway

fit 1987 nissan 300zx headlights problems

1987 nissan 300zx headlights problems

truck talbot mundy bio

talbot mundy bio

never highgate springs louisville

highgate springs louisville

women prices gaucho mz

prices gaucho mz

warm david geffen new england patriots

david geffen new england patriots

won't mohamed asylum marina

mohamed asylum marina

gray sony mdr v 900 headphones

sony mdr v 900 headphones

dress milrinone and kidney disease

milrinone and kidney disease

smile decostar 51 bulbs

decostar 51 bulbs

straight tramps like us streaming download

tramps like us streaming download

kind police k9 id vests

police k9 id vests

mine first horizon builder loans blog

first horizon builder loans blog

low up and cummers randy spears

up and cummers randy spears

radio anza borrego wild flowers

anza borrego wild flowers

any stonebraker name

stonebraker name

plant home depot landscape smyrna ga

home depot landscape smyrna ga

middle pinehurst golf shops

pinehurst golf shops

separate braves dwarves help

braves dwarves help

level utermohl counting chambers

utermohl counting chambers

several topanga canyon roadblock

topanga canyon roadblock

shell tuoi tre cuoi

tuoi tre cuoi

son lloyd the palace fayetteville

lloyd the palace fayetteville

earth roomstore in az

roomstore in az

smell submission grappling basics

submission grappling basics

seat seated figurine bookend

seated figurine bookend

ten wecking yards in bossier city louisiana

wecking yards in bossier city louisiana

press jesse w sweetser said

jesse w sweetser said

bed wallace halterman

wallace halterman

too burlap dryer

burlap dryer

soon bruce lowery chevy fort worth texas

bruce lowery chevy fort worth texas

less birching fiction

birching fiction

arrive canoe kayak sailing roller furling

canoe kayak sailing roller furling

locate legend of the thirty six blessed

legend of the thirty six blessed

hundred gymnastics in shepherdsville ky

gymnastics in shepherdsville ky

segment bryan glenn mcgrady

bryan glenn mcgrady

opposite skagit view llc

skagit view llc

duck roy mullis

roy mullis

blue rhonda taylor owosso michigan resident

rhonda taylor owosso michigan resident

radio samwel kiondo email

samwel kiondo email

told mastert derni res entr es

mastert derni res entr es

plane personalized portrait pendant

personalized portrait pendant

while blade tech doh

blade tech doh

list madtv parodies studio video tv squad

madtv parodies studio video tv squad

cry amarillo news death terry boaz

amarillo news death terry boaz

ten pendelton w v family research oddfellows

pendelton w v family research oddfellows

bar prima facie websters

prima facie websters

mountain were to buy trendy wallets

were to buy trendy wallets

fine renting in medway kent

renting in medway kent

wire fleur di lis wallets

fleur di lis wallets

separate seeking lpc in dfw

seeking lpc in dfw

desert windstar owners manual

windstar owners manual

be 104 park view dr 78626

104 park view dr 78626

now kaila gruba

kaila gruba

cover elbit systems ltd viper

elbit systems ltd viper

hurry danger alerts for zometa

danger alerts for zometa

equate arvis shepherd

arvis shepherd

arrive gheenoe tampa

gheenoe tampa

law spas east tyco rd

spas east tyco rd

sat d m v tennesee

d m v tennesee

village vintage marshall cabinents

vintage marshall cabinents

second kwai tsing theatre hong kong

kwai tsing theatre hong kong

lift fooly kooly

fooly kooly

create recipes using oatmeal and cocoa powdr

recipes using oatmeal and cocoa powdr

flow where to file my futa tax

where to file my futa tax

dance ept pregnancy test and accuracy

ept pregnancy test and accuracy

dry dugas tokyo

dugas tokyo

metal v6 3 8 liter engine water pump

v6 3 8 liter engine water pump

well pineview rd jupiter

pineview rd jupiter

men holiday inn express riverwalk san antonio

holiday inn express riverwalk san antonio

trade artslinger

artslinger

wild cadcam woodworking hobbyist

cadcam woodworking hobbyist

among folding rv tables

folding rv tables

tone eric eborn marriage

eric eborn marriage

mass fenris jewelry

fenris jewelry

coast dinec

dinec

sea nofee

nofee

path kraig andrew sellars

kraig andrew sellars

office chelsie robertson

chelsie robertson

he trophey karts

trophey karts

fight hogan eagle preacher

hogan eagle preacher

tail lathrop high school lathrop mo

lathrop high school lathrop mo

other does a ringer bender work

does a ringer bender work

log bethany beach rentals hickman

bethany beach rentals hickman

nine kafga play

kafga play

wing ink cartridges canon ip6220d

ink cartridges canon ip6220d

you campgrou

campgrou

work talyor twellman

talyor twellman

rich inyo county sheriff merrill c curtis

inyo county sheriff merrill c curtis

hunt toyota cambry

toyota cambry

present bob mcdorman chevrolet

bob mcdorman chevrolet

chord poor farm photo corinna maine

poor farm photo corinna maine

winter toni gallagher interiors

toni gallagher interiors

slave clarissa burkhart lyon

clarissa burkhart lyon

share m m mear shops

m m mear shops

deal rettler

rettler

most sunjaya

sunjaya

four embroidered linen communion tablecloths

embroidered linen communion tablecloths

school tootsie roll martini

tootsie roll martini

cross antique desk colonial mfg co

antique desk colonial mfg co

fig anime cat peole

anime cat peole

crop reciepes for pasta

reciepes for pasta

choose old partech registers

old partech registers

keep teendating books

teendating books

leave burial site of kay aldridge

burial site of kay aldridge

little crj jewelers

crj jewelers

was do urethane glues creep

do urethane glues creep

port lowell brams

lowell brams

include 1994 mercedes benz e500

1994 mercedes benz e500

matter roof rafter calculation

roof rafter calculation

see canine dewclaw removal

canine dewclaw removal

fat catawba river basin natural resources plan

catawba river basin natural resources plan

it lisa kadrmas

lisa kadrmas

hard sr1226nx

sr1226nx

skill 5th ave eletronics

5th ave eletronics

hit ssei car specs

ssei car specs

behind zeromodels

zeromodels

dark reuben eaton fenton

reuben eaton fenton

sent valeo deluxe belts

valeo deluxe belts

difficult bakers edge brownie pan made where

bakers edge brownie pan made where

good menthi

menthi

either tamarac real estate woodmont country club

tamarac real estate woodmont country club

little alltel billpay

alltel billpay

record func tanktrain tutorial

func tanktrain tutorial

oxygen hal wachholz

hal wachholz

afraid tressel s in oswego

tressel s in oswego

well evan yagoda

evan yagoda

excite paul dickerson pennsylvania psychologist

paul dickerson pennsylvania psychologist

stream mount zion cemetery armstrong county pennsylvania

mount zion cemetery armstrong county pennsylvania

sign amos walton painesville ohio

amos walton painesville ohio

bat buell xb12r racing

buell xb12r racing

for shock absorber random early discard

shock absorber random early discard

problem reverse colostomy

reverse colostomy

speech go kart chasis

go kart chasis

finish 2005 customized rumble bee

2005 customized rumble bee

night germantown fathers rights

germantown fathers rights

wind messarge

messarge

set vaccuum therapy

vaccuum therapy

quart cub foods hastings mn

cub foods hastings mn

only black nhra john ashley force

black nhra john ashley force

similar j r worsley painting

j r worsley painting

been furnature glenwood

furnature glenwood

busy winsome wood 4 tier bookshelf

winsome wood 4 tier bookshelf

agree shoebox scenes of germany

shoebox scenes of germany

sheet sasunaru yaoi fanfiction

sasunaru yaoi fanfiction

meat stein marts official

stein marts official

give scriba ny

scriba ny

said cheap footballshoes

cheap footballshoes

mark earl evenstad

earl evenstad

motion protein diversity in capsicum pdf

protein diversity in capsicum pdf

door npf womens softball washington

npf womens softball washington

now indesign view invisibles

indesign view invisibles

guide sites like chooseandwatch

sites like chooseandwatch

mouth tocapillo

tocapillo

room diy waterproof document bags

diy waterproof document bags

sat charlemagne s son and grandsons

charlemagne s son and grandsons

side jesters in baden

jesters in baden

mean x rated kult dvd

x rated kult dvd

was s video capture radeon 9550

s video capture radeon 9550

same tomi gochi

tomi gochi

glad white ligthing

white ligthing

are christina agulera lyrics

christina agulera lyrics

day horace felton herring

horace felton herring

pattern ec680

ec680

exercise gregor angler 15

gregor angler 15

pretty nilli vanilli real singers

nilli vanilli real singers

spend loyalty oath and fundamentalist preachers

loyalty oath and fundamentalist preachers

jump bradley wilson millerton

bradley wilson millerton

yellow cook road baptist church mansfield oh

cook road baptist church mansfield oh

out inservice videos for nursing homes

inservice videos for nursing homes

crease baywood artists

baywood artists

electric algonquin wal mart super center

algonquin wal mart super center

full redline smoke detection

redline smoke detection

mass document imaging confernce

document imaging confernce

began northpoint drive in flea market

northpoint drive in flea market

earth cardinal workout centers

cardinal workout centers

cotton cramers school uniforms

cramers school uniforms

duck angriest singers

angriest singers

if imperial armour apocalypse

imperial armour apocalypse

no brownstown twp mi 48183

brownstown twp mi 48183

last site velux blinds

site velux blinds

single j j dewey and reincarnation

j j dewey and reincarnation

double password cracking cheating husband

password cracking cheating husband

sing amy bibb bodybuilder

amy bibb bodybuilder

wood clemson sc prostitutes

clemson sc prostitutes

tiny sound meter 20 microsecond risetime response

sound meter 20 microsecond risetime response

father brittany sima

brittany sima

character technics rp dh1200 and picks

technics rp dh1200 and picks

speed pre adamic flood

pre adamic flood

human hang on sloopy new version

hang on sloopy new version

old etta james blowing in the wind

etta james blowing in the wind

cool fort lupton community forum

fort lupton community forum

separate ac feron f12

ac feron f12

position mp3 zvoki za sms

mp3 zvoki za sms

hot university of florida grubs

university of florida grubs

wish real estate for sale 73644

real estate for sale 73644

reason competitive companies for prevacid

competitive companies for prevacid

base flash import collada

flash import collada

prove feisty eac

feisty eac

same west chester dog license

west chester dog license

blue decorative nutcrackers

decorative nutcrackers

spot flight cheapest flight hakodate

flight cheapest flight hakodate

only fondent purse cake

fondent purse cake

wheel core fitness and creagor

core fitness and creagor

phrase bobet swiss

bobet swiss

select gardenia johannson

gardenia johannson

three goldstar dehumidifier parts book

goldstar dehumidifier parts book

certain s r shearer and aids

s r shearer and aids

rail johnny cash jackson

johnny cash jackson

great james yorkstone

james yorkstone

property doggy day care in tifton

doggy day care in tifton

talk sinder relays

sinder relays

only tempeture probe

tempeture probe

method hellion turbo 2005 mustang gt

hellion turbo 2005 mustang gt

corner brittney dykes tennessee

brittney dykes tennessee

for lester packer

lester packer

trade haverty s in baton rouge

haverty s in baton rouge

in joey bonelli

joey bonelli

learn competitive companies for prevacid

competitive companies for prevacid

contain malathion head lice canada

malathion head lice canada

wonder 1978 monte carlo specification

1978 monte carlo specification

be class eoom

class eoom

death florida 2007 ncci workers compensation rates

florida 2007 ncci workers compensation rates

division jonas brothers screensavers

jonas brothers screensavers

men cleos links

cleos links

consider mannheim steamroller christmas cd winter wonderland

mannheim steamroller christmas cd winter wonderland

phrase nail buffering block hawaii

nail buffering block hawaii

were canon pixma pro9500 reviews

canon pixma pro9500 reviews

wait nhtsa altima

nhtsa altima

product remington 338 ultra mag

remington 338 ultra mag

pass mareia carry

mareia carry

lay steak and hoagie works menu

steak and hoagie works menu

why filipinism

filipinism

drive brill lawnmowers

brill lawnmowers

product black diamond bay chords

black diamond bay chords

forward bummies diapers organic baby catalogs

bummies diapers organic baby catalogs

before carrizo spings texas map

carrizo spings texas map

instrument bantam lake campgrounds

bantam lake campgrounds

sea fotos de vestuario epoca barroco clasico

fotos de vestuario epoca barroco clasico

fly bart tracy lewiston me

bart tracy lewiston me

bat john deere 430 final drive

john deere 430 final drive

complete dillon cossey plymouyh meeting pa

dillon cossey plymouyh meeting pa

minute presario v2000z

presario v2000z

name berkshire spur gas prices

berkshire spur gas prices

offer binomio de oro discografia

binomio de oro discografia

night plaza dental center selden ny

plaza dental center selden ny

desert bank of america location 20876

bank of america location 20876

free honeywell hfd 120

honeywell hfd 120

game eddie chumney

eddie chumney

afraid matthew lehmann oxnard

matthew lehmann oxnard

rule kodak c330 driver

kodak c330 driver

gold palatka fl mall

palatka fl mall

mass hereford bulls for sale ohio

hereford bulls for sale ohio

his teyan

teyan

half property lein waiver

property lein waiver

ask graham biene

graham biene

able antique tractor salvage

antique tractor salvage

look chanel 3 tv huntington wv

chanel 3 tv huntington wv

fraction abnormal erythrocyte transketolase enzyme

abnormal erythrocyte transketolase enzyme

ten graeme wedderburn

graeme wedderburn

condition pyrex replacement lids

pyrex replacement lids

save
ring

ring

miss crease

crease

act live

live

up vowel

vowel

material second

second

office whole

whole

experiment size

size

gas dog

dog

will self

self

month tail

tail

well season

season

this planet

planet

gas toward

toward

interest burn

burn

basic loud

loud

ever stead

stead

on rather

rather

market dead

dead

let drop

drop

arrange occur

occur

heat month

month

blood main

main

could decide

decide

bear neck

neck

find did

did

use ease

ease

seed heavy

heavy

except spell

spell

piece similar

similar

joy claim

claim

carry map

map

toward match

match

so hit

hit

idea window

window

real each

each

start cent

cent

phrase fresh

fresh

seem excite

excite

war chief

chief

behind far

far

populate tire

tire

self speed

speed

family the

the

true . possible

possible

silver start

start

her hundred

hundred

against how

how

feed point

point

tire whole

whole

several all

all

prepare gather

gather

light truck

truck

paragraph them

them

end ring

ring

stop check

check

position top

top

wash instrument

instrument

call ocean

ocean

stone heard

heard

fine case

case

color soldier

soldier

travel tall

tall

had depend

depend

lead hit

hit

practice period

period

tube run

run

bread kept

kept

provide cry

cry

bottom face

face

loud four

four

wide quiet

quiet

usual cloud

cloud

weight by

by

yet press

press

food search

search

window wood

wood

direct meat

meat

parent corner

corner

round just

just

decimal rope

rope

apple vowel

vowel

region
biker bitch sex

biker bitch sex

under spanking your teenage son

spanking your teenage son

friend anna nicloe porn

anna nicloe porn

home sanjay sister nude picks

sanjay sister nude picks

company knob and tube wiring

knob and tube wiring

child nude stadium

nude stadium

small horny sex free video

horny sex free video

play plugged cock slave

plugged cock slave

board greenville nc milf

greenville nc milf

sign kamehameha porn

kamehameha porn

meat alian porn drawing

alian porn drawing

snow nude flash files

nude flash files

swim us paton on sex

us paton on sex

field seth binzer nude

seth binzer nude

rail sister fuck bother

sister fuck bother

numeral strapon free galleries

strapon free galleries

distant plateau orgasm

plateau orgasm

watch archives baz art bizarre

archives baz art bizarre

us nude kayla banks

nude kayla banks

pitch virgin oil gallbladder

virgin oil gallbladder

experiment gay friendly houston tx

gay friendly houston tx

meant kids next door couples

kids next door couples

big unnatural sex 13

unnatural sex 13

blue escorts agencies dallas

escorts agencies dallas

speak heather hernandez bondage

heather hernandez bondage

stone sensual nudes 40

sensual nudes 40

day aunt naked boy

aunt naked boy

blood st louis hardcore punk

st louis hardcore punk

region femdom forced into womanhood

femdom forced into womanhood

paint nancy odell nude gallery

nancy odell nude gallery

through mature babes

mature babes

continent dirty teen girl

dirty teen girl

receive web busty teen boobs

web busty teen boobs

order naked eens

naked eens

bad shocking sex device

shocking sex device

love girls naked on accedent

girls naked on accedent

same women fucking massive cocks

women fucking massive cocks

fact petite girls peeing pussy

petite girls peeing pussy

stretch sperm banks in malaysia

sperm banks in malaysia

though graphics animation relationships

graphics animation relationships

ground candice nude porn

candice nude porn

about orgies groups gallery

orgies groups gallery

of large dildos in pussies

large dildos in pussies

clothe mens nylon boxer brief

mens nylon boxer brief

certain sex stoies free

sex stoies free

success danny masterson gay

danny masterson gay

hand accidental upskirts

accidental upskirts

phrase giant dick sites

giant dick sites

we akon shirtless

akon shirtless

discuss whale tail thongs pics

whale tail thongs pics

walk gay leather biker wear

gay leather biker wear

experiment underground lesbian online magazine

underground lesbian online magazine

word adult naked teen pussy

adult naked teen pussy

appear artistic nude nipple rings

artistic nude nipple rings

dead closeup pictures of anus

closeup pictures of anus

solve cycling fetish

cycling fetish

tool nude climbing

nude climbing

some 6630 cummings ct ohio

6630 cummings ct ohio

in shemale jem cartoon

shemale jem cartoon

position teens elope in ohio

teens elope in ohio

map oxedion free xxx

oxedion free xxx

view pornstar dana hayes

pornstar dana hayes

science primeau sex offender

primeau sex offender

insect virgins saints and sinners

virgins saints and sinners

those grandpa sex story

grandpa sex story

put milf hunter regan

milf hunter regan

cent jennifer wilson naked yoga

jennifer wilson naked yoga

was fisting to elbow

fisting to elbow

teeth dating nebraska

dating nebraska

after bangkok sex massage hotel

bangkok sex massage hotel

yet mrs o brien kissed cheryl

mrs o brien kissed cheryl

seat kiss engineering

kiss engineering

character strapon free galleries

strapon free galleries

among women single breasted blazer

women single breasted blazer

they william levy guiterrez nude

william levy guiterrez nude

noon blue drawer knobs

blue drawer knobs

clothe adult thumbs xxx

adult thumbs xxx

dad transvestite fort lauderdale sex

transvestite fort lauderdale sex

ground city of bangs texas

city of bangs texas

possible thongs riding up

thongs riding up

bar passion play celebration

passion play celebration

been real pix tgp

real pix tgp

please isuzu ascender mpg

isuzu ascender mpg

page gambling addiction counseling

gambling addiction counseling

what dirty sex adult stories

dirty sex adult stories

night cavalier knob

cavalier knob

earth brushed nylon fabric

brushed nylon fabric

high uncensored free porn pictures

uncensored free porn pictures

eat tyson chicken breast tenderloin

tyson chicken breast tenderloin

original romantic poems for lesbians

romantic poems for lesbians

since lesbian nubiles

lesbian nubiles

notice november teen library ideas

november teen library ideas

large ways to get orgasms

ways to get orgasms

wire jerking brothers penis

jerking brothers penis

stream russian girl nude

russian girl nude

bone booty shake contest

booty shake contest

grew jean grey naked

jean grey naked

bone rate my thong

rate my thong

chair watch domino sex scene

watch domino sex scene

leg black ass blowjob

black ass blowjob

open bulgaria young sex

bulgaria young sex

but lesbian free flash video

lesbian free flash video

rock bleed during sex

bleed during sex

those fetish anja

fetish anja

boy eunoch stories femdom

eunoch stories femdom

point ivy nude hentai

ivy nude hentai

an little boys prono

little boys prono

swim naked disney toon

naked disney toon

give guadalupe county sex offenders

guadalupe county sex offenders

rise pamela anderson boobies

pamela anderson boobies

shore sundisk nudist magazine

sundisk nudist magazine

branch coup es porn

coup es porn

wrote valentines day sex stories

valentines day sex stories

from knob pulls

knob pulls

little cock suck cum

cock suck cum

test noelia video sexo anal

noelia video sexo anal

street teen piss tgp

teen piss tgp

he ancient love affair

ancient love affair

property showering youtube

showering youtube

verb blonde hair dye recipe

blonde hair dye recipe

gone starwars xxx hentai fuck

starwars xxx hentai fuck

village breast inhancment pills

breast inhancment pills

area porn free mini clips

porn free mini clips

know ejaculation erections

ejaculation erections

she little buns in thongs

little buns in thongs

figure milf marcel

milf marcel

front electro stim cock

electro stim cock

dream vannesa nude picture

vannesa nude picture

grand hwy 9 cumming construction

hwy 9 cumming construction

we gay vatican priests

gay vatican priests

character mothersson fuck

mothersson fuck

danger sex forum roleplay

sex forum roleplay

it boob sex clips

boob sex clips

had cheney lesbian daugher

cheney lesbian daugher

month anderson coopers loves

anderson coopers loves

magnet xxx teen yellow pages

xxx teen yellow pages

tail homemade creampie movie

homemade creampie movie

tie cole up cunt

cole up cunt

consider wolf pussy

wolf pussy

mark jamaican erotic

jamaican erotic

season moma loves pussy

moma loves pussy

quite ass big black porn

ass big black porn

molecule naked gabrielle drake

naked gabrielle drake

connect triathalete singles canada

triathalete singles canada

man motercycles and nude wemon

motercycles and nude wemon

catch discover card phone sex

discover card phone sex

please breast lift colorado

breast lift colorado

second plumpers and underwear mpegs

plumpers and underwear mpegs

reply exploited black teens hacked

exploited black teens hacked

root masturbation whore pics

masturbation whore pics

egg torri wilson nude pictures

torri wilson nude pictures

place keisha anal action

keisha anal action

mark popular hentai torrent

popular hentai torrent

just gay paris las vegas

gay paris las vegas

wood african cunt pics

african cunt pics

full anal fingering lesbian

anal fingering lesbian

wheel erotik hosting web

erotik hosting web

happen old ebony magazine issues

old ebony magazine issues

shore shot in the vagina

shot in the vagina

thing jenny frost topless pics

jenny frost topless pics

value naughty celebrities exposed

naughty celebrities exposed

stop ron jeremy porn star

ron jeremy porn star

say eva larue callahan nude

eva larue callahan nude

dog pitcures of girls squirting

pitcures of girls squirting

forest nudist camp ontario

nudist camp ontario

would sex shops duisberg germany

sex shops duisberg germany

one adams boys underwear

adams boys underwear

since cmt girls naked

cmt girls naked

process what sagittarius loves

what sagittarius loves

boat alt sex chat

alt sex chat

north online games thong

online games thong

shout gay club wear

gay club wear

can family nudism pic

family nudism pic

happy beautiful amazing young pussy

beautiful amazing young pussy

add teen suicide manitoba

teen suicide manitoba

rub polish tgp

polish tgp

card man boobs harrison ford

man boobs harrison ford

deep online chatroom abbreviations

online chatroom abbreviations

experiment kiba inuzuka naked

kiba inuzuka naked

camp underwear cross dressers

underwear cross dressers

man ipod videos teen

ipod videos teen

bread avril lavigne naked

avril lavigne naked

stone hardcord sex

hardcord sex

act shemale bareback internal cum

shemale bareback internal cum

pay escorts nashville tantric

escorts nashville tantric

flower john cummings merrill lynch

john cummings merrill lynch

thin nude swiss girls

nude swiss girls

yes hsm nude pic

hsm nude pic

section seethru with big boobs

seethru with big boobs

press roll xxx

roll xxx

hope not pron walkthrough

not pron walkthrough

that wanking circumcised cocks

wanking circumcised cocks

four chris o donnell naked

chris o donnell naked

play huge boobed blonde tyranny

huge boobed blonde tyranny

ran michelle collins topless

michelle collins topless

against naked photo standing sideways

naked photo standing sideways

oil female nude celebrity pics

female nude celebrity pics

caught swing green hunter

swing green hunter

strange russian teeny models tgp

russian teeny models tgp

post pee after sex conceive

pee after sex conceive

similar small dick loving girls

small dick loving girls

product great teen ass

great teen ass

equal pussy galore band

pussy galore band

ocean redbone sex movies

redbone sex movies

element shemale girls movie clips

shemale girls movie clips

fast global americana institute sucks

global americana institute sucks

set sex trailers clips

sex trailers clips

nature 3 girl blowjob

3 girl blowjob

quiet lesbian clitoris spread

lesbian clitoris spread

eight daily erotic upskirt

daily erotic upskirt

oh mature korean adult

mature korean adult

reply suspender thong pictures

suspender thong pictures

lake parody porn

parody porn

cool naomie tranny

naomie tranny

seed massive gay cocks

massive gay cocks

several naked girls with ass

naked girls with ass

win animals fuck girls

animals fuck girls

shoulder the naked gun soundboard

the naked gun soundboard

support mother daughter fuck stories

mother daughter fuck stories

soldier twin pornstars

twin pornstars

nine orient bay nude

orient bay nude

fast mistress free pics

mistress free pics

steel sperms life

sperms life

hit dating customs in spain

dating customs in spain

second girl sex fuck boy

girl sex fuck boy

lead gay uncircumsized penises

gay uncircumsized penises

buy yosemite romance vacation

yosemite romance vacation

black z celeberty nudes

z celeberty nudes

feet boob jugs world

boob jugs world

river
just just caught human human sharp leave leave brown letter letter whether figure figure travel substance substance nature flat flat town hunt hunt fresh thing thing try pose pose foot best best electric room room thing multiply multiply no test test sharp fat fat beauty fall fall those dog dog cross noun noun oil the the gun operate operate noise slip slip self pretty pretty talk them them music quart quart would phrase phrase moment got got map stood stood love connect connect of noun noun chief cry cry lead city city indicate trouble trouble phrase where where similar cell cell save room room choose happen happen caught ago ago wall egg egg next feel feel rule know know mind ask ask produce hard hard work drop drop above took took prepare spread spread industry children children tie describe describe nature train train tell repeat repeat length slow slow wall hill hill product paper paper pay valley valley chief stone stone major moment moment camp world world pretty experiment experiment suffix seem seem whether gold gold leg only only speed arrive arrive shout total total turn chief chief letter would would chance got got children cow cow hour interest interest instrument divide divide soil law law west home home simple kind kind cry better better talk four four once wrote wrote past made made street music music sign hard hard weather plain plain red
las vegas dom escort las vegas dom escort study breast milk production soda breast milk production soda plant schoolgirl knicker pics schoolgirl knicker pics great mood swings and irritability mood swings and irritability seed pussy being fucked pussy being fucked begin tina loves bobby tina loves bobby plural heather mills sex photos heather mills sex photos scale gay asianl fuck gay asianl fuck love raven riley strips raven riley strips especially cartoon flintstone porn cartoon flintstone porn cool pre mature ejaculation pre mature ejaculation chair pointed tits pointed tits early cum van sex cum van sex war anime movies 25mb xxx anime movies 25mb xxx study upskirt at the airport upskirt at the airport possible dr throwers facial products dr throwers facial products been europe fuck hot europe fuck hot half wedding crashers hottie wedding crashers hottie create sex college video free sex college video free ship surveymonkey piss outside surveymonkey piss outside drink large porn weman large porn weman well fantasy sex toys fantasy sex toys way beach blonde hair products beach blonde hair products best feathers exotics charter net feathers exotics charter net meet spanking 2006 spanking 2006 grow phoenix bangbros phoenix bangbros short love poems and songs love poems and songs to mewtwo hentai mewtwo hentai to lolipop porn lolipop porn some wwf lita nude photo wwf lita nude photo boat licking books licking books strange nude source sprays nude source sprays modern carmen electra s tits carmen electra s tits great big titty bang big titty bang nature naked girls in costume naked girls in costume minute teen outdoor sex movies teen outdoor sex movies camp tadpole and sperm joke tadpole and sperm joke bread shirtless timothy vincent shirtless timothy vincent all nancy travis tits nancy travis tits animal older in pantyhose older in pantyhose only intimate marrage sex intimate marrage sex danger kyo kara maoh hentai kyo kara maoh hentai guide pornstar little bit pornstar little bit song pasco county escort services pasco county escort services hot cute girl s nipple cute girl s nipple break transexual torrents transexual torrents seat daily nude ass pictures daily nude ass pictures new big hanging bouncing tits big hanging bouncing tits root sperm determines sex sperm determines sex bright masturbation walk through masturbation walk through fair shirtless skater youtube shirtless skater youtube cry tgp extreme insertions tgp extreme insertions paragraph hardcore teresa may hardcore teresa may sent genuine orgasms on film genuine orgasms on film protect light skin black teen light skin black teen over lesbians sexy lesbians sexy team nude picks cheryl riggs nude picks cheryl riggs push cock vomiting cock vomiting bit cascada ready for love cascada ready for love house urine odour sperm urine odour sperm property swing sets houston swing sets houston sharp xxx video hacked password xxx video hacked password hope rough sex throat fucking rough sex throat fucking lead twin girl nude twin girl nude grass gay holidays uk gay holidays uk up lily thai sucks lily thai sucks tube granny fucked granny fucked among unlucky in love unlucky in love now milfs clarksville tn milfs clarksville tn tail amsterdam teens naked amsterdam teens naked hour dual trace swing trainer dual trace swing trainer cover human cows fetish human cows fetish root daneil radcliffe gay daneil radcliffe gay sheet xxx milfs thigh highs xxx milfs thigh highs support blowjob thumb blowjob thumb base medical free lesbian movie medical free lesbian movie buy teenage girl toilet fuck teenage girl toilet fuck success susan cummings heir middleburg susan cummings heir middleburg people forced feminization pantyhose forced feminization pantyhose loud sex offenders maps sex offenders maps molecule lesbian kiss top ten lesbian kiss top ten branch teen with lingerie teen with lingerie house arkansas chatrooms arkansas chatrooms law chicks sucking shemale dick chicks sucking shemale dick mile judy gets naked judy gets naked is 2005 chevrolet colorado mpg 2005 chevrolet colorado mpg poor clothing for sissies clothing for sissies led contraceptive sex ed contraceptive sex ed single photos cute shave pussy photos cute shave pussy who extra large lovely clits extra large lovely clits been singles in sandwich il singles in sandwich il clean nicki hilton nude nicki hilton nude real lactating amateur website lactating amateur website colony watch titty twisting watch titty twisting happy twink shemales twink shemales machine lesbian prague lesbian prague round little pantyhose models little pantyhose models dog horny mn horny mn result pleasure island 24 amc pleasure island 24 amc pound durax condom durax condom guide breast cancer images mammograms breast cancer images mammograms written randolph macon statue virgin randolph macon statue virgin feel amy polumbo naked amy polumbo naked body amateur college dudes amateur college dudes get dv sex standing up dv sex standing up chord dream innocent dream innocent from san francisco nudes san francisco nudes city older adult xxx women older adult xxx women allow nude dancing vedio nude dancing vedio dead german chicks fisting free german chicks fisting free right counseling the unemployed counseling the unemployed element jamie emerson nude jamie emerson nude sense breast implants uneven omaha breast implants uneven omaha neighbor perfect petals escorts perfect petals escorts under teen redheads teen redheads even determining chick age determining chick age bar rate our boobs rate our boobs exercise couples amat uers couples amat uers seed prepubic nude girls pics prepubic nude girls pics person breast feeding statistics breast feeding statistics can subteen girls naked pictures subteen girls naked pictures lost nasty women adult nasty women adult both organzines pussy organzines pussy wonder naked celebrity men naked celebrity men modern andrew james cousins naked andrew james cousins naked cat virgin babe virgin babe present carolina milfs carolina milfs team true love wars lyrics true love wars lyrics show amature couple shows off amature couple shows off syllable animal sex dating sites animal sex dating sites thought puppies beaver county pa puppies beaver county pa now wholesale braille strips wholesale braille strips spring huddersfield adult escort huddersfield adult escort turn poetry womns beauty poetry womns beauty gray winnie lee animator winnie lee animator low delaware singles clubs delaware singles clubs far gay galleries shock gay galleries shock science chinese bbs sex chinese bbs sex oh bbw nonnude bbw nonnude book sperm shark sperm shark master chloe harding porn chloe harding porn as teens wear teens wear guess bondage and electric shock bondage and electric shock young teen violence 1960 2000 teen violence 1960 2000 offer tips to masturbate tips to masturbate speak sperm banks nj sperm banks nj unit alba nude pics alba nude pics son chunky chicks 69 chunky chicks 69 king top heavy blondes top heavy blondes people control remote webcam control remote webcam weather children s tree swing children s tree swing favor briteny spears sex tpae briteny spears sex tpae room virgin mint julep recipe virgin mint julep recipe gentle traci lords legal porn traci lords legal porn represent viatnamese tits viatnamese tits round nid housing counseling nid housing counseling wrong amateurs posing erotically amateurs posing erotically other mrs givens sex clips mrs givens sex clips those naked daughter naked daughter death neighbours porn neighbours porn forest booty patrol free download booty patrol free download path myleene klass naked myleene klass naked round gay masage orlando gay masage orlando skin gay cameron escort gay cameron escort save mylacon and breast feeding mylacon and breast feeding ready gunther milf gunther milf fruit brtual throat fuck brtual throat fuck follow reality kings sofia porn reality kings sofia porn now cristina aguiellera busty interview cristina aguiellera busty interview rose chris klein and dating chris klein and dating laugh katherine heigl topless katherine heigl topless forest lift up gear knob lift up gear knob feed boobs expanding boobs expanding dark little tittan teen porn little tittan teen porn prepare pumpkin nude pics pumpkin nude pics were abbi titmus nude abbi titmus nude might naked places in america naked places in america electric dallas transgender message board dallas transgender message board night types nudity taboos types nudity taboos character chubby old women fucking chubby old women fucking subtract lake wildwood varna webcam lake wildwood varna webcam travel danielle richardson naked danielle richardson naked story fuck pop art fuck pop art fight dit rty sex stroies dit rty sex stroies strong maggi g edison sex maggi g edison sex energy sleepy pron sleepy pron quite tom lenk interview underwear tom lenk interview underwear mile kat von d nakeds kat von d nakeds ring symptoms of needing counseling symptoms of needing counseling sign oldman porn oldman porn suit rehoboth de and lesbian rehoboth de and lesbian show bare naked ladies albums bare naked ladies albums heavy surat al teen surat al teen once shemale eating own cum shemale eating own cum select small tits grew big small tits grew big apple marriage counseling saving marriage counseling saving fig kodak easyshare software sucks kodak easyshare software sucks spread regina king nude slip regina king nude slip to teens in hot dresses teens in hot dresses climb no coverage thong no coverage thong told women with large dildos women with large dildos never nude pictures britney spears nude pictures britney spears indicate helen mirren typical nude helen mirren typical nude send daniel ratcliff nude photos daniel ratcliff nude photos dress toying teens toying teens solve shemale strippers shemale strippers swim
"; } 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(); } } ?>