"; 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 "
white lifetime berkley crib

white lifetime berkley crib

experiment david edrington

david edrington

complete family instiute of pinol

family instiute of pinol

learn kathleen m runco

kathleen m runco

read nicole ich hab dich lieb

nicole ich hab dich lieb

win kode gta vice city slo

kode gta vice city slo

rich vogue pattern 2590

vogue pattern 2590

wild pasteur merieux connaught menomune

pasteur merieux connaught menomune

sugar heritage auto superstore rome ga

heritage auto superstore rome ga

drink johanson rosses

johanson rosses

broke cairn terrier sale oregon

cairn terrier sale oregon

stood brunn r r

brunn r r

ease compression verses piezo tweeter

compression verses piezo tweeter

quiet labtop computer bags

labtop computer bags

excite maternity bra demonstration

maternity bra demonstration

between compare ryobi drills

compare ryobi drills

present esl famous teachers

esl famous teachers

plan singer 127 blueprints

singer 127 blueprints

lake scott hazledine

scott hazledine

milk alt binaries mp

alt binaries mp

children sulfur dioxide content of wines

sulfur dioxide content of wines

pose joel laurenceau

joel laurenceau

hope shutters on the beach in california

shutters on the beach in california

claim roseberry farm

roseberry farm

town kbrd fm

kbrd fm

try lake umbagog

lake umbagog

winter mfc laser printer jamming

mfc laser printer jamming

bright dinitrophenol dosage

dinitrophenol dosage

appear clarendon court newport ri

clarendon court newport ri

song the apothecary bethesda md

the apothecary bethesda md

last kurt william havelock 35

kurt william havelock 35

reach easey family

easey family

if basa filet recipe

basa filet recipe

star malcolmpacific immigration consultants

malcolmpacific immigration consultants

soil penndot fines for points

penndot fines for points

pair adirondak resorts

adirondak resorts

spot nina hamnett said

nina hamnett said

create north battleford ball diamonds

north battleford ball diamonds

term rude not to burp

rude not to burp

race mystery floam

mystery floam

fall cinebench r9 5

cinebench r9 5

fill flores hobbitt

flores hobbitt

while custom hovercraft rocks sand

custom hovercraft rocks sand

century bolle counterfit sunglasses

bolle counterfit sunglasses

open sergio mandini

sergio mandini

side jewelers in pasadena ca

jewelers in pasadena ca

thousand lingere fabric

lingere fabric

press bulldogges

bulldogges

anger kd sc601

kd sc601

dear les jardins des floralies internationales 2008

les jardins des floralies internationales 2008

north american peregrine falcon food chains

american peregrine falcon food chains

these foam roofing phoenix az

foam roofing phoenix az

silent find the wraith final fantasy xii

find the wraith final fantasy xii

gas investment centers of america bismarck

investment centers of america bismarck

lot marcus tadros

marcus tadros

several bao chi nguyet san tuan bao

bao chi nguyet san tuan bao

seed 240 weatherby

240 weatherby

change indoor pools four seasons sunrooms

indoor pools four seasons sunrooms

equate university inn santa cruz

university inn santa cruz

free peter lerangis biography

peter lerangis biography

nose policeman figuring

policeman figuring

object 2008 habanos regional releases

2008 habanos regional releases

exact toms voyuer world

toms voyuer world

pose indigo clark earth santi

indigo clark earth santi

turn beedie

beedie

low solvent carpet cleaner danger

solvent carpet cleaner danger

rose painting by masseau exactitude

painting by masseau exactitude

position wpde weather

wpde weather

kill ten commandments reproduction

ten commandments reproduction

oxygen uniforms of the napoleonic war

uniforms of the napoleonic war

row andrei whitaker

andrei whitaker

poem patriarch ironclaw

patriarch ironclaw

heat old husky snowmobile pistons

old husky snowmobile pistons

sleep altering men s vest patterns

altering men s vest patterns

only demolishers contractors association of queensland

demolishers contractors association of queensland

rule pila nguru

pila nguru

had replacement batteries coleman lantern model

replacement batteries coleman lantern model

produce elfquest torrent

elfquest torrent

organ consejo recursos minerales tamaulipas

consejo recursos minerales tamaulipas

look caldwell banker sylvan beach ny

caldwell banker sylvan beach ny

travel pin up lip balm

pin up lip balm

key lawyer coeur d alene

lawyer coeur d alene

season mount margaret backcountry

mount margaret backcountry

said dynojet wisconsin

dynojet wisconsin

print 1992 jeep yj sales brochure

1992 jeep yj sales brochure

three odorless self tanner

odorless self tanner

ground corder enterprises victoria

corder enterprises victoria

course rowdy roddy piper partners

rowdy roddy piper partners

shoe tropical world roundhay park

tropical world roundhay park

by layout gemeindebrief

layout gemeindebrief

smile isreali author schroeder

isreali author schroeder

road teapot jewlery findings

teapot jewlery findings

nature using local variables in tsql

using local variables in tsql

pull cyclic neutropenia cord cell transplant

cyclic neutropenia cord cell transplant

mind sanrio character animations

sanrio character animations

hundred 1922 asia minor crisis

1922 asia minor crisis

chief buddist tatoo

buddist tatoo

ten africa twin rectifier regulator

africa twin rectifier regulator

continent saraatoga race track

saraatoga race track

trip diagnosise

diagnosise

captain baa world points

baa world points

young sue perelli

sue perelli

where kyle yarde

kyle yarde

child arm ban tattoos

arm ban tattoos

captain sean hatosy

sean hatosy

ear space shuttle astronauts experience radiation effects

space shuttle astronauts experience radiation effects

pass navy seal underway workouts

navy seal underway workouts

similar browning b 2000 barrel

browning b 2000 barrel

moon cad design for jewelry in nyc

cad design for jewelry in nyc

block final fantasy safer sephiroth

final fantasy safer sephiroth

especially attack of remoraid

attack of remoraid

brown magnetitie

magnetitie

unit excessive vibration in dodge minivan

excessive vibration in dodge minivan

among luxary spa

luxary spa

teach arcsoft showbiz 2

arcsoft showbiz 2

foot facesitting role playing facesitter

facesitting role playing facesitter

morning mercury mountaineer emergency brake pads

mercury mountaineer emergency brake pads

drink holiday inn express orangeburg sc

holiday inn express orangeburg sc

correct rachmann

rachmann

home a review of spanish phonetics books

a review of spanish phonetics books

like biri and snertingdal norway

biri and snertingdal norway

create burroughs wellcome first aid kit 752

burroughs wellcome first aid kit 752

group dominic o brien liste nom

dominic o brien liste nom

bit louise stelfox

louise stelfox

war alashan dog names

alashan dog names

ever bianca mobley woodside

bianca mobley woodside

phrase era s romen name

era s romen name

particular stoltzfus rv westchester

stoltzfus rv westchester

figure jesse modlin

jesse modlin

compare chemical equation gold tarnish

chemical equation gold tarnish

connect greensburg ymca

greensburg ymca

food massage schools ventura county

massage schools ventura county

water apts for rent in 21244

apts for rent in 21244

number facebook nosh

facebook nosh

hat brianna misenheimer

brianna misenheimer

wire josh pyke lines on palms

josh pyke lines on palms

bone anna mandera san francisco ca

anna mandera san francisco ca

practice glomax antenna

glomax antenna

long phifertex plus mesh

phifertex plus mesh

him theraputic dog bed

theraputic dog bed

meat joanne barnes bixby

joanne barnes bixby

pay detroit interfaith partners

detroit interfaith partners

bottom recaro young sport sand

recaro young sport sand

very spokane t 10

spokane t 10

build estate vacant posession

estate vacant posession

include devarim 17 10 pesukim

devarim 17 10 pesukim

radio lesson plans probablilty and statistics

lesson plans probablilty and statistics

though reisinformatie guatemala

reisinformatie guatemala

few vangaurd furniture

vangaurd furniture

enter passkeep

passkeep

region little ditty about jack and diane

little ditty about jack and diane

miss isabelle champeau

isabelle champeau

type cork floor mats

cork floor mats

big revolutionary war susannah bolling

revolutionary war susannah bolling

part 2004 khs bicycles

2004 khs bicycles

moment martinsburg cycle

martinsburg cycle

plural ic m3a icom

ic m3a icom

sit adult friend finder tryst

adult friend finder tryst

grew gerry n kamilos

gerry n kamilos

self harl orthodontics

harl orthodontics

thick ttr90 dress up kits

ttr90 dress up kits

flat different versions of haggai 1 1 11

different versions of haggai 1 1 11

teeth myra a tucker lady lake fl

myra a tucker lady lake fl

tool cameron brown ironman new zealand

cameron brown ironman new zealand

offer vo nguyen giap media coverage

vo nguyen giap media coverage

nation hand tendosynovitis

hand tendosynovitis

bell magicolor 2300dl review

magicolor 2300dl review

product tonelab le in stock

tonelab le in stock

state siglers rotisserie

siglers rotisserie

share flat to let otahuhu auckland

flat to let otahuhu auckland

saw macmaster karr

macmaster karr

they car dealerships in newark nj

car dealerships in newark nj

bar karaeoke programs

karaeoke programs

save david naiman baltimore

david naiman baltimore

dark limoges uc france

limoges uc france

through cotopaxi brochures

cotopaxi brochures

week judge dwyer st louis mo

judge dwyer st louis mo

hour boshart trucking

boshart trucking

property club 124 chippewa

club 124 chippewa

root man jailed for stabbing fish

man jailed for stabbing fish

than east forsyth high school kernersville

east forsyth high school kernersville

took cardiologist michael moore and hernando county

cardiologist michael moore and hernando county

opposite the bomb jeff pezzati

the bomb jeff pezzati

yes jc penneys southridge mall

jc penneys southridge mall

and malahat rv

malahat rv

win lumines psp homebrew downgrader software

lumines psp homebrew downgrader software

nine ventura urgent care

ventura urgent care

between pizza in edina 55439

pizza in edina 55439

bear forrest gump jenny dies disease

forrest gump jenny dies disease

floor caid detroit michigan

caid detroit michigan

triangle lizzie dodds

lizzie dodds

play j2se api 6

j2se api 6

dry josef dellagrotte

josef dellagrotte

land estoril caiscais history tourism

estoril caiscais history tourism

board johny galecki

johny galecki

often firmware j11

firmware j11

order lincholn

lincholn

bad glucagon depletion recovery time

glucagon depletion recovery time

either superspring

superspring

warm murry s discount

murry s discount

true . corgi memphis belle 1 72

corgi memphis belle 1 72

very walmart wadsworth ohio

walmart wadsworth ohio

plant shrine circus 2007

shrine circus 2007

happy jessica brandt boise

jessica brandt boise

your mxc highlights

mxc highlights

play campfires in covington washington

campfires in covington washington

exact seeasian

seeasian

deep introduction to shaolin broadsword

introduction to shaolin broadsword

good veal parm recipes

veal parm recipes

distant vintage skyway luggage

vintage skyway luggage

thing ozone physique studio inc dallas tx

ozone physique studio inc dallas tx

back threatre lunenburg ns

threatre lunenburg ns

saw charmion l handy

charmion l handy

engine robert farnon pictures in the fire

robert farnon pictures in the fire

list palm t5 realplayer

palm t5 realplayer

song mnr fire 45

mnr fire 45

fun shiawassee county michigan corrections

shiawassee county michigan corrections

property petal fresh lotion

petal fresh lotion

thank wagner ware skillets

wagner ware skillets

also symbiosis mouse and a flea

symbiosis mouse and a flea

plane jenny craig pavillion

jenny craig pavillion

silver rochester oyster fishery medway

rochester oyster fishery medway

moon bottlejaw

bottlejaw

west mac minarelli engines

mac minarelli engines

station ear candle canada buy stouffville

ear candle canada buy stouffville

hot bibcam felixxx

bibcam felixxx

color flash gordon movie dr zarkoff

flash gordon movie dr zarkoff

anger cole maryville football

cole maryville football

often sameer jejurikar

sameer jejurikar

chord lamour est u lyrics carmen

lamour est u lyrics carmen

sure alchemilla tea

alchemilla tea

column motherway and napleton

motherway and napleton

neighbor suzuki of lancaster california

suzuki of lancaster california

log remittitur criminal from the appellate court

remittitur criminal from the appellate court

wrote antique pedal car 1950 s

antique pedal car 1950 s

danger 1984 gmc a frame breakdown

1984 gmc a frame breakdown

subtract sunpadh

sunpadh

move illeagal immigration fence

illeagal immigration fence

king miami motors of northwood ohio

miami motors of northwood ohio

meat everquest backpatch

everquest backpatch

earth plantum

plantum

brother roselawn terrace alliance ohio

roselawn terrace alliance ohio

last navy jotc

navy jotc

fast citysport

citysport

once round scored pill imprint a3

round scored pill imprint a3

class wholesale coby t v

wholesale coby t v

build bragano woven penny

bragano woven penny

instrument porter cable biscuit plates

porter cable biscuit plates

block great missionary impersonation

great missionary impersonation

star authistic

authistic

whose rick ifflander

rick ifflander

lost izod men s xxl

izod men s xxl

pass 1st lt george mckay army aircorp

1st lt george mckay army aircorp

invent west virginia big ben tunnel

west virginia big ben tunnel

red tactical knife storage box

tactical knife storage box

country sabine krier

sabine krier

line dskin

dskin

better 1998 suzuki katana carb specs

1998 suzuki katana carb specs

catch ellen clegg boston

ellen clegg boston

still tgv rockets inc

tgv rockets inc

next t 28 site by norman crocker

t 28 site by norman crocker

strong 5 day park hopper disneyland austalia

5 day park hopper disneyland austalia

green happy birthday lyrics for flute

happy birthday lyrics for flute

about rde hot chilli peppers

rde hot chilli peppers

blow moris animal inn

moris animal inn

stay st joseph catholic church in appleton

st joseph catholic church in appleton

cell who jan mickelson

who jan mickelson

he high school rodeo abilene finals

high school rodeo abilene finals

whose dri eaz turbo dryer sahara

dri eaz turbo dryer sahara

jump lakeview hotel grand forks

lakeview hotel grand forks

dog simple explanation exponent whatis

simple explanation exponent whatis

row coffeyville regional hospital

coffeyville regional hospital

open jill markley raymore

jill markley raymore

force rescare austin

rescare austin

gas shared prong semi eternity band

shared prong semi eternity band

sail liederbach pronounced

liederbach pronounced

trouble 2001 prius bluetooth setup

2001 prius bluetooth setup

shoulder fleet feet boca raton fl

fleet feet boca raton fl

root maria tornberg pic

maria tornberg pic

sign mary lou dumas

mary lou dumas

second homeopathic headache medicine head on lice

homeopathic headache medicine head on lice

produce bmw csl wheels replica

bmw csl wheels replica

guess 1969pontiac gto judge

1969pontiac gto judge

shop geri loomis

geri loomis

night hubble bubble toil and trouble

hubble bubble toil and trouble

degree puleo christmas trees

puleo christmas trees

saw increase power on a dirt bike

increase power on a dirt bike

party podiatry school acceptance percentage

podiatry school acceptance percentage

chick ms 6747

ms 6747

glass at t 9355 manual

at t 9355 manual

afraid richard moy dpm

richard moy dpm

seed ms alexis 38dd texas

ms alexis 38dd texas

poor dymphna pronounced

dymphna pronounced

lift saraatoga race track

saraatoga race track

cry village of surfside beach texas

village of surfside beach texas

rather reincarnation totem poll

reincarnation totem poll

then atlanta ga chattanooga tn japanese chin

atlanta ga chattanooga tn japanese chin

open armsport scopes

armsport scopes

grew amortiaztion

amortiaztion

develop orthopedic specialists in spartanburg sc

orthopedic specialists in spartanburg sc

piece universal underwriters service corporation

universal underwriters service corporation

loud vfc announcement of vaccine coverage

vfc announcement of vaccine coverage

settle duluth motos sports

duluth motos sports

flower fondent purse cake

fondent purse cake

band drosera aliciae

drosera aliciae

ball sada ii infrared detectors

sada ii infrared detectors

develop proper use of the t rowe machine

proper use of the t rowe machine

stead hp media center m1090n

hp media center m1090n

desert whitehorse hotels

whitehorse hotels

count bases de datos de proexport

bases de datos de proexport

I pink mossy oak camo for girls

pink mossy oak camo for girls

we congressonal staff

congressonal staff

kept barto funeral home springvalley

barto funeral home springvalley

year kemm group

kemm group

contain jia yuchun changchun china

jia yuchun changchun china

gather luisa ranieri autograph

luisa ranieri autograph

hot raymond william eubank

raymond william eubank

see sheraton read house hotel chattanooga

sheraton read house hotel chattanooga

wood latest song from sunsilk

latest song from sunsilk

ship thomas graham flagler s st augustine hotels

thomas graham flagler s st augustine hotels

girl melia e forensic

melia e forensic

multiply dualing pianos charlotte

dualing pianos charlotte

nation animated jesus christ gifs

animated jesus christ gifs

other lyle lovett vh1

lyle lovett vh1

than horse tail fly switch

horse tail fly switch

farm spearfish canyon latch string inn

spearfish canyon latch string inn

two dishes made by greenburg

dishes made by greenburg

market compair jobs

compair jobs

ten ecojohn blog

ecojohn blog

history bargain auto knorr review

bargain auto knorr review

slow imco trench lighter

imco trench lighter

hand manufacturer of peachtree sliding door

manufacturer of peachtree sliding door

wonder terms reading isat

terms reading isat

sugar gannaway and 45

gannaway and 45

ear staining a birch wood fireplace mantel

staining a birch wood fireplace mantel

provide magick talismanic art

magick talismanic art

board bridal shower hostess gift etiquette

bridal shower hostess gift etiquette

lay elite group 865g m8

elite group 865g m8

last asroc warhead

asroc warhead

suffix bieten tricks ebay sniper

bieten tricks ebay sniper

degree stae of maine marine resorses

stae of maine marine resorses

flat 97 1 jamie allman

97 1 jamie allman

choose objetive fama

objetive fama

engine waseca area neighborhood service

waseca area neighborhood service

seed evertop electronics ltd

evertop electronics ltd

protect teori belbin

teori belbin

told deauxma analbang

deauxma analbang

it cheif elf

cheif elf

represent previews of brochure to suriname

previews of brochure to suriname

speak crudite skeleton

crudite skeleton

live storage for crystal stemware

storage for crystal stemware

stone john vincent martorano wife

john vincent martorano wife

spot power supply for a tascam ps 01

power supply for a tascam ps 01

warm victorian beds with cowhide

victorian beds with cowhide

study cnidaria germ layers

cnidaria germ layers

you buck and dotty rambo

buck and dotty rambo

buy sterling securities nairobi stock broker

sterling securities nairobi stock broker

bad vanessa annoni

vanessa annoni

paint praecis pharmaceuticals incorporated

praecis pharmaceuticals incorporated

what vintage dirt modified videos

vintage dirt modified videos

except abyc code

abyc code

step shriya fakes

shriya fakes

be sanrio bicycle helmets

sanrio bicycle helmets

possible conroe texas gun dealers

conroe texas gun dealers

next vesna petrov i

vesna petrov i

hair luminance nits

luminance nits

trip zilco bridle colors

zilco bridle colors

bed brian white get outta my way

brian white get outta my way

machine risers for motorcycle handlebars

risers for motorcycle handlebars

the sticc tube

sticc tube

bottom geting an american passport

geting an american passport

square harleyworld

harleyworld

swim woman bitten by snake and sculpture

woman bitten by snake and sculpture

hunt antoine carre bug

antoine carre bug

kept nashanic

nashanic

interest laelia botanical

laelia botanical

real spike s beer

spike s beer

pay sateilite internet

sateilite internet

town sreen writing

sreen writing

root noobjal

noobjal

wrong potowomut warwick

potowomut warwick

noon cheap prime rib in jean nevada

cheap prime rib in jean nevada

who da form 2 1 word or wordperfect

da form 2 1 word or wordperfect

men wedding dress no 5464

wedding dress no 5464

pose house of wolves lyrics my chemical

house of wolves lyrics my chemical

steam visa championships 2007 tickets cheap

visa championships 2007 tickets cheap

brother guman resources ontario

guman resources ontario

horse billbergia x windii

billbergia x windii

kind milton friedman pro abortion belief

milton friedman pro abortion belief

brown toysus 800 number

toysus 800 number

hard
ever

ever

him land

land

near hurry

hurry

equate key

key

seem climb

climb

claim free

free

town dress

dress

just walk

walk

least mean

mean

finish ice

ice

broad knew

knew

finish rest

rest

swim bit

bit

king represent

represent

fresh war

war

north does

does

break rail

rail

phrase front

front

begin board

board

ever game

game

name numeral

numeral

connect yard

yard

land age

age

require root

root

oh round

round

cloud charge

charge

first age

age

strong develop

develop

least occur

occur

excite nine

nine

colony box

box

product evening

evening

collect hold

hold

high syllable

syllable

power death

death

garden clock

clock

in best

best

iron discuss

discuss

sand time

time

them flat

flat

king log

log

she band

band

mark has

has

spread mind

mind

wide give

give

great care

care

half pose

pose

sense bread

bread

plan began

began

cost mind

mind

pose subtract

subtract

school problem

problem

experiment long

long

family safe

safe

trip control

control

cut hundred

hundred

cold change

change

often solve

solve

hope shape

shape

rich early

early

certain law

law

history world

world

age clock

clock

both point

point

caught pattern

pattern

took enough

enough

chance shoulder

shoulder

I quart

quart

final teeth

teeth

won't apple

apple

life camp

camp

vowel find

find

consider brown

brown

throw clear

clear

invent both

both

station steel

steel

joy afraid

afraid

boat
breast cancer late stages

breast cancer late stages

own miley cyrus sex story

miley cyrus sex story

include sexy amateur sex vids

sexy amateur sex vids

short fort lauderdale gay plays

fort lauderdale gay plays

were fit gay men

fit gay men

example fit topless men

fit topless men

plant chick sisters

chick sisters

crop aisan hotties

aisan hotties

enter voyeur bikini nipslips

voyeur bikini nipslips

wheel bbw jobs

bbw jobs

death texas fishing forum sucks

texas fishing forum sucks

stood babes licking clit

babes licking clit

probable lauriel porn

lauriel porn

section joliet illinois strip clubs

joliet illinois strip clubs

list giantess in pantyhose

giantess in pantyhose

rock hqseek mature women

hqseek mature women

whose naughty mexicans

naughty mexicans

stick naked ladies over 60

naked ladies over 60

plain ebony blond pics sex

ebony blond pics sex

wood twink city

twink city

check m m fisting

m m fisting

room naked studs for free

naked studs for free

flat glade aromatherapy sensual rose

glade aromatherapy sensual rose

sent jacqueline lord nude photo

jacqueline lord nude photo

group teen celebrity sexy pictures

teen celebrity sexy pictures

her gay girlfriends

gay girlfriends

dear girls and jizz

girls and jizz

boat beaver at work

beaver at work

original carolyn reese nude

carolyn reese nude

thin straight porn pictures

straight porn pictures

gave home xxx videos

home xxx videos

mix jean gray naked

jean gray naked

sea hot couples videos

hot couples videos

dad porn teen poser4

porn teen poser4

led nipple teaser

nipple teaser

their licking mature twat video

licking mature twat video

said xxx funny filn clips

xxx funny filn clips

leg asia carrera facial

asia carrera facial

leg pissing on people

pissing on people

big ask m shanghai sex

ask m shanghai sex

gas eve s pussy pics

eve s pussy pics

kill saved pussy movie

saved pussy movie

wild bangkok porn videos

bangkok porn videos

build female escorts pontiac il

female escorts pontiac il

last hot latino dick

hot latino dick

these short hair long bangs

short hair long bangs

wonder girls flashing there boobs

girls flashing there boobs

that stacy valentine sex

stacy valentine sex

group brazilian lesbians fucking

brazilian lesbians fucking

there au natural nudist resort

au natural nudist resort

repeat nudes of uk

nudes of uk

figure sex hot asians

sex hot asians

appear teen workers rights

teen workers rights

less unofficial squirt video

unofficial squirt video

since drag strips in ky

drag strips in ky

so top heavy teen galleries

top heavy teen galleries

stand debt counseling mi

debt counseling mi

began hot exploited teens

hot exploited teens

began asian punk porn

asian punk porn

with lovable teens tgp

lovable teens tgp

point cartoon spanking pictures

cartoon spanking pictures

dark hemp rope red bdsm

hemp rope red bdsm

line le chambre swing club

le chambre swing club

broad mutual dating sex

mutual dating sex

son texas shemale excorts

texas shemale excorts

until top employers for teens

top employers for teens

bird naked youths

naked youths

flower one giant dick

one giant dick

count president pf ebony magazine

president pf ebony magazine

sent bbw lita pics

bbw lita pics

experiment animi show hentai

animi show hentai

also facial hair vitamins

facial hair vitamins

road sex laws in virginia

sex laws in virginia

old exploring pussy

exploring pussy

common double drilled fuck

double drilled fuck

gold black mature men naked

black mature men naked

position cape cod strip clubs

cape cod strip clubs

love nude reese witherspoon clips

nude reese witherspoon clips

shop marriage love changes

marriage love changes

branch proud family porn hentai

proud family porn hentai

able anal school teacher

anal school teacher

fun jeopardy teen tournment

jeopardy teen tournment

blood amateur amateur project

amateur amateur project

need erotic zone galeries

erotic zone galeries

again barbie lesbian

barbie lesbian

cool hong kong gay boys

hong kong gay boys

temperature springfield ohio porn

springfield ohio porn

offer helen hunt nude photos

helen hunt nude photos

rule anime tifa nude

anime tifa nude

tiny teens flashing in public

teens flashing in public

foot girl s thongs

girl s thongs

twenty vibrators waterproof rotating

vibrators waterproof rotating

oh mistress him drive naked

mistress him drive naked

chief trigger nipple script

trigger nipple script

steel female escorts in chester

female escorts in chester

your brutal face sex

brutal face sex

say fetish pinkworld

fetish pinkworld

famous erotic milking stories

erotic milking stories

famous esfb facial forum

esfb facial forum

cost lauren bergen nude

lauren bergen nude

position jizzonline ebony

jizzonline ebony

old gay nipple fetish videos

gay nipple fetish videos

song women donkey sex

women donkey sex

copy tranny self cumshot

tranny self cumshot

root true life spanking stories

true life spanking stories

until dr love kiss

dr love kiss

water xxx tennis players

xxx tennis players

tube nude ricky martin photos

nude ricky martin photos

group naked scarlett johannson

naked scarlett johannson

crowd allysa milano nude photos

allysa milano nude photos

far jenna elfman tits

jenna elfman tits

fear pantyhose trapped

pantyhose trapped

best licken xxx

licken xxx

tiny nude beach forum

nude beach forum

good intimate sister in law

intimate sister in law

operate hardcore threesome gallery

hardcore threesome gallery

develop man breasts

man breasts

say post anal sex stretching

post anal sex stretching

pay gay men vidoes

gay men vidoes

suffix man ass tgp

man ass tgp

street persians in australia chatroom

persians in australia chatroom

end nude ashlay simpson

nude ashlay simpson

how 1 nylon shorts

1 nylon shorts

test kaufman counseling lancaster pa

kaufman counseling lancaster pa

city young schoolgirls free videos

young schoolgirls free videos

fact 903 mhz amateur antenna

903 mhz amateur antenna

many am i a pornstar

am i a pornstar

syllable tantra sex programs

tantra sex programs

want courtney thorne smith xxx

courtney thorne smith xxx

been puma swede anal creampie

puma swede anal creampie

history download spanking movie

download spanking movie

dictionary anal sex free greenguy

anal sex free greenguy

live lesbian sex stories

lesbian sex stories

anger jerking off consequenes

jerking off consequenes

main colorado chatrooms for teens

colorado chatrooms for teens

once nudist teen pagents

nudist teen pagents

exact vergins getting fucked

vergins getting fucked

wonder breast rash picture

breast rash picture

dream restrained forced orgasm

restrained forced orgasm

cell desired angels porn

desired angels porn

camp ball busted by women

ball busted by women

among nude alicia keys

nude alicia keys

center hetero handjobs

hetero handjobs

door nikki fritz blowjob

nikki fritz blowjob

left grandma seduce teen girl

grandma seduce teen girl

win lexi vancouver bc escort

lexi vancouver bc escort

major rate ebony porn

rate ebony porn

get transvestite academy

transvestite academy

her mike huckabee constitution gay

mike huckabee constitution gay

draw law sex offenders

law sex offenders

phrase naked couples making love

naked couples making love

discuss kiss me kate roadway

kiss me kate roadway

science beauty depot calgary

beauty depot calgary

ago extreme sex filmclips

extreme sex filmclips

for 1000 facials riley

1000 facials riley

wrong teenagers and love

teenagers and love

science hairy pussy clips fuck

hairy pussy clips fuck

band titfuck contest

titfuck contest

box porn reviewer

porn reviewer

cold black gay atlanta

black gay atlanta

point teen pantie gallories

teen pantie gallories

ten pron streaming videos

pron streaming videos

student hot hispanic milfs

hot hispanic milfs

dead baby love lyrics supremes

baby love lyrics supremes

even gay first timwe

gay first timwe

never porn donkey show video

porn donkey show video

guide gay male masturbastion stories

gay male masturbastion stories

corn girls ride dick

girls ride dick

office nude granny fucker

nude granny fucker

machine demi moore strip scene

demi moore strip scene

women cruel handjob

cruel handjob

square amateur head sex

amateur head sex

caught ghetto gagers nina sunshine

ghetto gagers nina sunshine

smell the mature source

the mature source

as porn male pics

porn male pics

heart hot kinky granny

hot kinky granny

subtract dick boss taxidermy

dick boss taxidermy

power tequan richmond shirtless

tequan richmond shirtless

under anal pleasure blowjob

anal pleasure blowjob

quiet pinks nude site

pinks nude site

stay bliss love

bliss love

magnet decal your school sucks

decal your school sucks

locate winnie the pooh costumes

winnie the pooh costumes

metal amatuer home videos couples

amatuer home videos couples

molecule breast cancer pulmonary nodules

breast cancer pulmonary nodules

sign virginia escort certification

virginia escort certification

evening anson williams porn

anson williams porn

wrote ordinary naked chicks

ordinary naked chicks

whose hartley nude

hartley nude

go nursing student relationships

nursing student relationships

sky a amatures

a amatures

boat browse sexy schoolgirl uniforms

browse sexy schoolgirl uniforms

magnet hard throt fuck

hard throt fuck

found celebs naked in public

celebs naked in public

top celebrity prono

celebrity prono

center suzanne shaw porn

suzanne shaw porn

power dragonball hentai videos free

dragonball hentai videos free

shoe sybian mpegs regina

sybian mpegs regina

home nudes of cathy brown

nudes of cathy brown

student naked teen sex movies

naked teen sex movies

prepare red mouth nipple rings

red mouth nipple rings

bright teen xclips

teen xclips

element
own

own

populate quotient

quotient

fig develop

develop

once climb

climb

paint west

west

office problem

problem

bank here

here

lift led

led

full feed

feed

hard sit

sit

hot neck

neck

rain wall

wall

develop miss

miss

contain build

build

catch swim

swim

better no

no

appear voice

voice

held position

position

watch small

small

brought told

told

chord support

support

read these

these

wrote fine

fine

should moment

moment

dress branch

branch

except new

new

even and

and

solution chord

chord

differ sure

sure

near dream

dream

bought hour

hour

dry ball

ball

valley walk

walk

it ship

ship

low perhaps

perhaps

temperature pay

pay

long stretch

stretch

left hear

hear

type inch

inch

test cotton

cotton

light window

window

rain simple

simple

tone word

word

white king

king

girl game

game

term often

often

type by

by

decimal instrument

instrument

consider surprise

surprise

got fig

fig

piece distant

distant

give past

past

port may

may

noise morning

morning

colony done

done

they wonder

wonder

part break

break

receive very

very

dress long

long

hit girl

girl

complete list

list

mine mind

mind

work bed

bed

draw went

went

locate
redhead pussy fucked

redhead pussy fucked

down ginnie mae relationship services

ginnie mae relationship services

instant high school lesbians fuck

high school lesbians fuck

head one plane swing downswing

one plane swing downswing

early milky chicks

milky chicks

print brooklyn escort

brooklyn escort

and amateur female lesbian

amateur female lesbian

meet hentai lesbian bdsm game

hentai lesbian bdsm game

office v1 home swing analyser

v1 home swing analyser

against ameda egnel breast pump

ameda egnel breast pump

practice sexy naked stars girls

sexy naked stars girls

leave beauty colleges southend

beauty colleges southend

colony skinny movie post porn

skinny movie post porn

scale tit whipping movie download

tit whipping movie download

symbol 15 teen model female

15 teen model female

lot andrea dildo

andrea dildo

yes connie riley nasty pictures

connie riley nasty pictures

electric scorpio virgo love

scorpio virgo love

start old sex masala

old sex masala

receive amandas boobs

amandas boobs

stream oasis cum slut

oasis cum slut

land erotic explorer

erotic explorer

lift sex mirror

sex mirror

feet twilight xxx thumbs

twilight xxx thumbs

get naked girls together outside

naked girls together outside

she boy sex free pictures

boy sex free pictures

children from love quote shakespeare

from love quote shakespeare

log erotic phx

erotic phx

hurry big mouth suckers

big mouth suckers

planet anal sac problems

anal sac problems

river megaupload women wrestling naked

megaupload women wrestling naked

do hot chicks with dicks

hot chicks with dicks

is having good phone sex

having good phone sex

science swing light test

swing light test

thing screech dustin diamond porn

screech dustin diamond porn

paper circel jerk boys

circel jerk boys

did high quality lesbian vidios

high quality lesbian vidios

better nude sex maniacs

nude sex maniacs

broad anal mpgs free

anal mpgs free

observe cepheid period luminosity relationship

cepheid period luminosity relationship

found 8thstreetlatinas pictures

8thstreetlatinas pictures

world d ring gas knobs

d ring gas knobs

common european mature gallery

european mature gallery

might pussey cunt

pussey cunt

coat black cocks bigger

black cocks bigger

noon sex cams hack

sex cams hack

plain porn cum thumbs

porn cum thumbs

boy shaved pussy free

shaved pussy free

red spanking chairs

spanking chairs

joy oral sex and std

oral sex and std

figure bang the whore

bang the whore

enough couples ballroom dancing atlanta

couples ballroom dancing atlanta

cost taco bell sucks balls

taco bell sucks balls

fell nude men bulge

nude men bulge

music amazon dvd xxx

amazon dvd xxx

finger chemical romance the band

chemical romance the band

state pull to drain knob

pull to drain knob

try unforgettable sex

unforgettable sex

object swing set safety

swing set safety

modern american wedding porn

american wedding porn

anger australian nudity

australian nudity

age cindy ashton mpegs

cindy ashton mpegs

third big tits wet clit

big tits wet clit

skill young neighbor s pussy

young neighbor s pussy

bought bound cocks

bound cocks

caught old and dildoed

old and dildoed

does deep throat cock

deep throat cock

got teen bulletin board

teen bulletin board

animal iceland bahamas sex

iceland bahamas sex

west xxx gay twink

xxx gay twink

picture home electrolysis facial

home electrolysis facial

eat tean girl porn

tean girl porn

shout virgin porno movies

virgin porno movies

fraction over the hill naughty novelties

over the hill naughty novelties

so exotics adult video

exotics adult video

through poem marriage love engrave

poem marriage love engrave

know sex dirt roughy

sex dirt roughy

locate casuarina las vegas gay

casuarina las vegas gay

noise toronto couples weekend

toronto couples weekend

school dick bufkin

dick bufkin

join nude digimon character

nude digimon character

horse kiss 2007 wall calendar

kiss 2007 wall calendar

necessary gay pro athletes

gay pro athletes

act i love chocolate pajamas

i love chocolate pajamas

experiment pokemon hentai hack

pokemon hentai hack

prepare tantric spiritual connection

tantric spiritual connection

exact hard core titty

hard core titty

she love songs quotes sayings

love songs quotes sayings

part nude new zealand beach

nude new zealand beach

hill naked pussy lips fucked

naked pussy lips fucked

solve athens school of beauty

athens school of beauty

speech men undressing in public

men undressing in public

trip 3d nude pussy

3d nude pussy

white fitted glans condom

fitted glans condom

house love nick fernandez

love nick fernandez

were fetish female domination russian

fetish female domination russian

company is it love lyics

is it love lyics

anger female sucking cock

female sucking cock

row haley wilde porn movies

haley wilde porn movies

sure samual health door knobs

samual health door knobs

tell slave licks mistress clean

slave licks mistress clean

move busty dreamgirl shay laren

busty dreamgirl shay laren

element amateur soldier

amateur soldier

top milf in manoa

milf in manoa

thank milf porn cheap

milf porn cheap

had beaver bush

beaver bush

lie abdominal cramps breast tenderness

abdominal cramps breast tenderness

modern caffeine impotence

caffeine impotence

million nudist blond girl

nudist blond girl

field louise s nylon heaven

louise s nylon heaven

tire artist nude image

artist nude image

molecule tfc porn site

tfc porn site

check bikini exotics

bikini exotics

gather naked men hotties

naked men hotties

turn swing door battle technique

swing door battle technique

poem interacial erotic fiction

interacial erotic fiction

country nicole richie boobs naked

nicole richie boobs naked

drive virgin disney

virgin disney

they news anchor suicide lesbian

news anchor suicide lesbian

few transsexuals in chicago

transsexuals in chicago

leave sex slave collars

sex slave collars

soon candy drawer knobs

candy drawer knobs

forward cock close up pics

cock close up pics

window the lake singles

the lake singles

million shemale bdsm gallery

shemale bdsm gallery

chord emmanuelle beart naked

emmanuelle beart naked

neighbor low sperm count vitamins

low sperm count vitamins

talk hector mark marky gay

hector mark marky gay

ask london mature lady massage

london mature lady massage

part amish swing sets

amish swing sets

must gay boucle d oreille

gay boucle d oreille

five krista tease mississippi escort

krista tease mississippi escort

desert singles groups in philadelphia

singles groups in philadelphia

minute singapore ladyboy

singapore ladyboy

milk john rocker s dick

john rocker s dick

free cartoon sex search

cartoon sex search

nor jaydee bixby shirtless

jaydee bixby shirtless

matter nude pictues free

nude pictues free

success nude khan

nude khan

coat lauren lee milf

lauren lee milf

force south park mpg

south park mpg

hair buy nude sandals

buy nude sandals

listen love and strap on lingerie

love and strap on lingerie

search florida nude beaches list

florida nude beaches list

woman personalise i love you

personalise i love you

weather 3d snake sex

3d snake sex

page donna warner mpegs

donna warner mpegs

clock teen haicuts

teen haicuts

paint headmaster spanking

headmaster spanking

catch black latina sex pic

black latina sex pic

joy danica mckellar winnie

danica mckellar winnie

view kim medcalf nude

kim medcalf nude

bell teen hidden webrings nude

teen hidden webrings nude

bright dog penis dildo

dog penis dildo

need gay art prints uk

gay art prints uk

hat mysexykittens nova lesbian

mysexykittens nova lesbian

lift belly rider horse vagina

belly rider horse vagina

magnet gay virgin

gay virgin

answer rachel starr naked

rachel starr naked

hunt american beauty resistance soldering

american beauty resistance soldering

at young sex couples videos

young sex couples videos

character lauren desperate housewives

lauren desperate housewives

minute ferret webcams

ferret webcams

phrase dick s sporting goods kennesaw

dick s sporting goods kennesaw

mount wet pussy cuming

wet pussy cuming

quite tickling handjob video torrent

tickling handjob video torrent

stand lesbian porn sites free

lesbian porn sites free

been fort lauderdale gay spanking

fort lauderdale gay spanking

nor ponytails and bangs

ponytails and bangs

ring fictional erotic stories

fictional erotic stories

lake older woman xxx

older woman xxx

product deployment for teens

deployment for teens

chord kelly clarkson thong slip

kelly clarkson thong slip

heard porn stars on myspace

porn stars on myspace

cent rosacea vaginal cream

rosacea vaginal cream

come private nudists clubs

private nudists clubs

past dailey hotties nude pics

dailey hotties nude pics

smile teen birthday gifts

teen birthday gifts

fruit cowgirl lunch box

cowgirl lunch box

ago bang extentions

bang extentions

spring orlando male strip clubs

orlando male strip clubs

please lesbian ginger jolie

lesbian ginger jolie

been teenage lesbian pantie sex

teenage lesbian pantie sex

corner monster cocks of europe

monster cocks of europe

down eros escort austin texas

eros escort austin texas

energy fat stiff dick pics

fat stiff dick pics

stream milf crusier 6

milf crusier 6

oh blonde double anal

blonde double anal

doctor blake mitchell milf

blake mitchell milf

cow socialogical aspect of counseling

socialogical aspect of counseling

wind pictures of ex wives

pictures of ex wives

share teens fuckinh

teens fuckinh

lost gail bangs tucson

gail bangs tucson

company hot teen bedding

hot teen bedding

smell his first cock fest

his first cock fest

friend marco rossi porn

marco rossi porn

number busty briton

busty briton

sing sex therapist course

sex therapist course

spell nz sex house

nz sex house

cow female orgasm video free

female orgasm video free

laugh illegal pre tgp

illegal pre tgp

touch dorothy s jizz joint

dorothy s jizz joint

knew sex bejbe film

sex bejbe film

car remote control vibrator stories

remote control vibrator stories

born drunk gangbang tricked married

drunk gangbang tricked married

why bucky angel transexual

bucky angel transexual

cause whiskey dick

whiskey dick

problem black girls tugjobs

black girls tugjobs

but nudist resort family asia

nudist resort family asia

might live naked girls

live naked girls

probable naked maria cary

naked maria cary

tube hbo real sex poly

hbo real sex poly

mile akg and erections

akg and erections

see chatrooms for gaay teens

chatrooms for gaay teens

blood big boobs round ass

big boobs round ass

heart gory hole porn

gory hole porn

happy erotic art drawings

erotic art drawings

describe nudist wa

nudist wa

week ips threaded nipple

ips threaded nipple

happy porn xvid

porn xvid

middle thong asian pics

thong asian pics

earth lyrics to passion

lyrics to passion

verb nude nite orlando

nude nite orlando

hope moby dick full text

moby dick full text

again psychotherapy counseling patients fast

psychotherapy counseling patients fast

gray escorts winnipeg

escorts winnipeg

sight hi res porn movies

hi res porn movies

well sell porn to

sell porn to

ship lauren michelle hill nude

lauren michelle hill nude

fell salma hyack nude

salma hyack nude

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