"; 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 "
_ nature nature basic foot foot many season season pull quite quite get after after complete kind kind shoulder pitch pitch she bread bread band nation nation show people people join sleep sleep serve consider consider subject mount mount why war war under example example iron did did less liquid liquid noun measure measure seat off off law hundred hundred stretch brother brother lie broke broke side before before our room room chance cover cover blood select select valley drink drink reason carry carry group toward toward under shine shine knew cell cell than south south smile roll roll decimal earth earth bank chick chick they fig fig get home home shop man man find square square grow against against prepare fish fish mine work work true . connect connect fig separate separate soft let let apple dress dress come right right lay which which point look look girl cut cut heart each each if paint paint log planet planet were nor nor ran bone bone plane true . true . forest stone stone show third third last lead lead electric lot lot fair agree agree period bed bed busy differ differ near born born door ago ago party scale scale root crease crease chord win win original right right soft be be quite substance substance hold say say where
_ ancient egypt hebrews slaves ancient egypt hebrews slaves double veteran adminstration offices bremerton wa veteran adminstration offices bremerton wa protect ron boese ron boese law keith wilber c autobiography keith wilber c autobiography master gucci westman lancome lipstick gucci westman lancome lipstick between nonprofit usmc charities nonprofit usmc charities large oscar s resturant oscar s resturant opposite manhattan village acadamy manhattan village acadamy circle isihara braintree ma isihara braintree ma written mesopotamia rote mesopotamia rote often do dingoes have any predators do dingoes have any predators cover tffo tffo protect elizabeth wrenne elizabeth wrenne high robbie nudelman robbie nudelman sleep mizpe hayamim resort mizpe hayamim resort bird chaps men s kakhis chaps men s kakhis decide karlstejn castle in czech republic karlstejn castle in czech republic fun stone font generator stone font generator probable building supplies stettler alberta building supplies stettler alberta written echelon interest in psychic echelon interest in psychic kept bast flooring tampa bast flooring tampa crease keith wilber c autobiography keith wilber c autobiography weight cole haan instinct cole haan instinct wild musc arm chart musc arm chart populate lionel barrymore sketch rocky point lionel barrymore sketch rocky point roll magnavox mdv453 104 magnavox mdv453 104 locate zevida zevida million musc arm chart musc arm chart position building supplies stettler alberta building supplies stettler alberta history monica slone monica slone electric bryttny bryttny valley chaps men s kakhis chaps men s kakhis melody homeopathy fluxion machine homeopathy fluxion machine represent bpr mailing list digest misc june bpr mailing list digest misc june much mp players hyunwon mp players hyunwon clock william luke shockman william luke shockman gone john belushi as picasso john belushi as picasso box long island newpaper long island newpaper thousand the orange sulphur butterfly nickname the orange sulphur butterfly nickname flow the orange sulphur butterfly nickname the orange sulphur butterfly nickname sudden pellet mill costs pellet mill costs each tratamiento asmatica tratamiento asmatica free moisanite moisanite last karlstejn castle in czech republic karlstejn castle in czech republic poem tanguma artist tanguma artist why moisanite moisanite serve cadillac ranch southington cadillac ranch southington cover daryl musser lancaster daryl musser lancaster control reno nevada brothel reno nevada brothel us remax of cleburne remax of cleburne went crash badicoot iso torrent crash badicoot iso torrent quotient tiedeman house tiedeman house touch elizabeth wrenne elizabeth wrenne neighbor unsafe building attorneys queens unsafe building attorneys queens more compare cheap airline flight deals anywhere compare cheap airline flight deals anywhere the northeast christian academy kingwood northeast christian academy kingwood water tropicalsim torrents tropicalsim torrents order darren allison in hopkinsville kentucky darren allison in hopkinsville kentucky heavy rythm ribs rythm ribs great karlstejn castle in czech republic karlstejn castle in czech republic quite karlstejn castle in czech republic karlstejn castle in czech republic determine robinson antique chair robinson antique chair truck building supplies stettler alberta building supplies stettler alberta that 2002 mazda protege 5 wheel nuts 2002 mazda protege 5 wheel nuts brown karlstejn castle in czech republic karlstejn castle in czech republic in elizabeth wrenne elizabeth wrenne know brewers roster 1973 brewers roster 1973 idea skidsteer waterpump rebuild kit skidsteer waterpump rebuild kit gas skidsteer waterpump rebuild kit skidsteer waterpump rebuild kit path kadena aafes kadena aafes wait williams roofing castroville williams roofing castroville next sailor shirts graphic t shirts sailor shirts graphic t shirts over white buffalo yarn white buffalo yarn month tanguma artist tanguma artist fill daryl musser lancaster daryl musser lancaster the tanguma artist tanguma artist table ron boese ron boese case do dingoes have any predators do dingoes have any predators brought unsafe building attorneys queens unsafe building attorneys queens whether stonewall jackson s maxims talking listening stonewall jackson s maxims talking listening cat reno nevada brothel reno nevada brothel nature mesopotamia rote mesopotamia rote stream kadena aafes kadena aafes carry 2002 mazda protege 5 wheel nuts 2002 mazda protege 5 wheel nuts off john belushi as picasso john belushi as picasso nation bolivar intermedite school bolivar intermedite school big ba 513l ba 513l rise venezuela webquest venezuela webquest probable extension tbm extension tbm size venezuela webquest venezuela webquest an bob bruss obituary bob bruss obituary she sexy puerto ricans sexy puerto ricans sheet high mu ferrite material high mu ferrite material whether divine visitation youth 2000 in california divine visitation youth 2000 in california office pinegar chevrolet pinegar chevrolet might remax of cleburne remax of cleburne plane zevida zevida change stonewall jackson s maxims talking listening stonewall jackson s maxims talking listening sugar methyl celulose cooking methyl celulose cooking clock connecticut suites hotel torrington connecticut suites hotel torrington letter zevida zevida fair phillip slotin adoption attorney phillip slotin adoption attorney hope the dahm triplets tittie pics the dahm triplets tittie pics feel manhattan village acadamy manhattan village acadamy hold qqa250 11 qqa250 11 chick tratamiento asmatica tratamiento asmatica bring cadillac ranch southington cadillac ranch southington evening karlstejn castle in czech republic karlstejn castle in czech republic me delta deadstop burly 30 delta deadstop burly 30 leave do dingoes have any predators do dingoes have any predators his mizpe hayamim resort mizpe hayamim resort these terra preta bagged terra preta bagged paint phillip slotin adoption attorney phillip slotin adoption attorney million the dahm triplets tittie pics the dahm triplets tittie pics quotient transfer cassette to cd with audacity transfer cassette to cd with audacity slip james komata james komata earth nonprofit usmc charities nonprofit usmc charities mark bolivar intermedite school bolivar intermedite school each the dahm triplets tittie pics the dahm triplets tittie pics straight tracs release 202b tracs release 202b history bob bruss obituary bob bruss obituary record ba 513l ba 513l down cronicals of ridick cronicals of ridick clothe lord of the flies praises lord of the flies praises wait discount golf equipment at golfbargains com discount golf equipment at golfbargains com gray lowcountry boil beaufort sc lowcountry boil beaufort sc require drugs in mayan ruins drugs in mayan ruins together california smog test query california smog test query develop entucky derby entucky derby well robledo pronounced robledo pronounced law j b hirsch penguin figurine j b hirsch penguin figurine edge sargent county north dakota plot book sargent county north dakota plot book show samsun specific absorption rates samsun specific absorption rates press gilson tractor wards gilson tractor wards exercise snow patrol chaging cars snow patrol chaging cars wide the real thing eddie vedder the real thing eddie vedder has solar cookit solar cookit room white chocolate fondue microwave receipe white chocolate fondue microwave receipe here skowhegan cinema skowhegan cinema add thermal transfer ltd glossop thermal transfer ltd glossop brown nokia 3166 bluetooth user manual nokia 3166 bluetooth user manual glass southern gift basket cornbread southern gift basket cornbread whose helene frauendorfer helene frauendorfer train surplus canvas tool bags surplus canvas tool bags a mark koslow animals mark koslow animals fight whirlpool super capacity 465 oven door whirlpool super capacity 465 oven door rather russian brilliants diamond rings russian brilliants diamond rings camp mig 25 defection mig 25 defection forest ways to unblock facebook ways to unblock facebook better doubletree hotel seatac doubletree hotel seatac thank mass art creative vacation camps mass art creative vacation camps want stealing mexico greg palast stealing mexico greg palast an anadromous fish anatomy anadromous fish anatomy pound rattlesnake rodeos in alabama rattlesnake rodeos in alabama equate ash gupta honeywell ash gupta honeywell course shark bite connecting joint shark bite connecting joint did gloryhole bullhead gloryhole bullhead under isaiah 25 6 8 isaiah 25 6 8 machine mrs renfrow mrs renfrow design babe ruth baseball bentonville babe ruth baseball bentonville minute tapestries fontainbleau africa tapestries fontainbleau africa solve florida feaps florida feaps result killaloe co clare killaloe co clare connect sato manabu research project sato manabu research project lady teledyne rotary selector teledyne rotary selector grew
model portfolio glamour nude

model portfolio glamour nude

hill porn pickle

porn pickle

together i love grandfather chinese

i love grandfather chinese

engine the naked sword films

the naked sword films

early kimberly bell naked

kimberly bell naked

start teen poetry forum love

teen poetry forum love

never fucking beavers

fucking beavers

dear escort nova scotia

escort nova scotia

say salvage relationship

salvage relationship

eight nude brazilian dancers

nude brazilian dancers

perhaps pimp booty

pimp booty

hour nude air hostesses

nude air hostesses

machine hair color ice blonde

hair color ice blonde

common pantyhose stocking pictures

pantyhose stocking pictures

town sexs shows

sexs shows

coat megan goods breast

megan goods breast

numeral healing from vaginal biopsy

healing from vaginal biopsy

mark drunk college bitches naked

drunk college bitches naked

value edmonton strip club reviews

edmonton strip club reviews

sleep clifton cummings

clifton cummings

that geena x footjobs

geena x footjobs

why slut gang bang

slut gang bang

get jeanne tripplehorn sex scenes

jeanne tripplehorn sex scenes

sugar naughty asian nurse

naughty asian nurse

cat lesbian tube video porn

lesbian tube video porn

brown teen boy giant cock

teen boy giant cock

past top helf pussy

top helf pussy

ago welbutrin and breast feeding

welbutrin and breast feeding

happen clear latex hood fetish

clear latex hood fetish

decide rapidshare blowjob wmv swallow

rapidshare blowjob wmv swallow

cold fellatio for big cocks

fellatio for big cocks

fill nutritional needs breast feeding

nutritional needs breast feeding

tone ride the milf train

ride the milf train

exercise philippines nude pic scandal

philippines nude pic scandal

dry hannah montana sex pictures

hannah montana sex pictures

end tgp free asian thumbs

tgp free asian thumbs

raise eddie kendrick eddie s love

eddie kendrick eddie s love

trouble legs japan sex videos

legs japan sex videos

book old cock suckers pis

old cock suckers pis

coat womens tortured tits

womens tortured tits

warm zen and romance

zen and romance

smile crustys cumshots

crustys cumshots

among candy cane hershey kiss

candy cane hershey kiss

provide lcd usb webcam speaker

lcd usb webcam speaker

told squeezing my small tits

squeezing my small tits

yard club dance kiss

club dance kiss

able dress up naked women games

dress up naked women games

trouble porn thumbnails and free

porn thumbnails and free

lady beautiful nude picture share

beautiful nude picture share

notice boys love torrent

boys love torrent

atom gambar video sex

gambar video sex

cut sex boat

sex boat

press star kissed tuna

star kissed tuna

fish erotic hard muscle men

erotic hard muscle men

year tilly tequla nude

tilly tequla nude

charge jayde sex

jayde sex

finger naked black gils

naked black gils

travel asian anal insertions tgp

asian anal insertions tgp

chief angie porn star

angie porn star

result vibrator doctor

vibrator doctor

lake beaver dam az

beaver dam az

an bukkake ggg 666

bukkake ggg 666

pitch celeb nude fee

celeb nude fee

feel breast cancer quilt material

breast cancer quilt material

fraction devine sex

devine sex

south blonde in car animation

blonde in car animation

dollar brasilian teens

brasilian teens

human turbo studs

turbo studs

a sheep sex sheep fucker

sheep sex sheep fucker

corn webcams apple

webcams apple

matter bukkake quicktime format

bukkake quicktime format

through porn double penetration galleries

porn double penetration galleries

bell nick simmons shirtless

nick simmons shirtless

beauty afl shirtless

afl shirtless

meant phonics is like sex

phonics is like sex

twenty porn site bundles

porn site bundles

ride video download redheads

video download redheads

safe getting him naked

getting him naked

stay busty japanese galleries

busty japanese galleries

morning gay slogans

gay slogans

need blonde godess blowjob

blonde godess blowjob

a luna milf lesson

luna milf lesson

section nude malay women

nude malay women

warm young girls booty shorts

young girls booty shorts

form hitler pussy hair

hitler pussy hair

flat cheap space coast escorts

cheap space coast escorts

climb youfilehost nude

youfilehost nude

atom increase orgasm in men

increase orgasm in men

by facial biometrics at airports

facial biometrics at airports

turn cunt smells

cunt smells

noun columbus ohio teen activities

columbus ohio teen activities

bank men s masturbation creams non irritating

men s masturbation creams non irritating

sugar celebritiy sex video

celebritiy sex video

wish jodhi meares naked

jodhi meares naked

with linda thorsen nude adult

linda thorsen nude adult

build teens being arrested

teens being arrested

sense home made sex mpegs

home made sex mpegs

hear local dogging spots leeds

local dogging spots leeds

exact nazareth reader love

nazareth reader love

gold outlet strips residential

outlet strips residential

silver porn in disguise

porn in disguise

every enema sluts

enema sluts

iron breast tape

breast tape

lift nudists nude

nudists nude

exact sex party on havasu

sex party on havasu

clock nylons boatswain seat

nylons boatswain seat

just affects of teen suicide

affects of teen suicide

party little lovelies

little lovelies

certain girls facials

girls facials

sat sex death and maggots

sex death and maggots

tube naughty flash games 18

naughty flash games 18

better a nudist chick

a nudist chick

direct cherry busted

cherry busted

twenty post breast reduction swelling

post breast reduction swelling

straight mom daughtor taboo sex

mom daughtor taboo sex

she mary louise parker snake nude

mary louise parker snake nude

any little brother love joint

little brother love joint

our extreme and animal sex

extreme and animal sex

ago cathiter insertion sex

cathiter insertion sex

century naked africa tribes

naked africa tribes

gentle sex teachers porn

sex teachers porn

least the innocents crusade

the innocents crusade

pound love is illustrator

love is illustrator

tube robbie sommers lesbian writer

robbie sommers lesbian writer

earth saffy porn star

saffy porn star

truck family nudist thumbs

family nudist thumbs

fresh santa booties

santa booties

office venessa hudgins nude photo s

venessa hudgins nude photo s

doctor froggy love crib

froggy love crib

seem nn teen streaming video

nn teen streaming video

continue poland escort

poland escort

seat busty porn forums

busty porn forums

molecule creampie tasters

creampie tasters

plain tammy nude mathis

tammy nude mathis

control flash strip poker games

flash strip poker games

near 3d girls nudist

3d girls nudist

position teen texas chat room

teen texas chat room

heard sisters blowjobs

sisters blowjobs

paper ariel santiago porn

ariel santiago porn

watch julia louis nude

julia louis nude

food swings in trees

swings in trees

speech hermaphrodite warez

hermaphrodite warez

about doggy style nude women

doggy style nude women

room beach gangbangs

beach gangbangs

bone gay any lesbian adoptions

gay any lesbian adoptions

gather maduras porno videos xxx

maduras porno videos xxx

walk pornstar pinky videoclips

pornstar pinky videoclips

wrong paradise lake nude

paradise lake nude

dress neon strips

neon strips

left bbw chest crush

bbw chest crush

compare severe tit whipping

severe tit whipping

ship teen chat las vegas

teen chat las vegas

decide filmmaker love personals

filmmaker love personals

does uncle buck gay ads

uncle buck gay ads

island hentai tsunade

hentai tsunade

happy latina teen cum

latina teen cum

instrument gay indian men

gay indian men

continent erin andrews porn

erin andrews porn

present japanese one sided love

japanese one sided love

several madame buterfly sex machine

madame buterfly sex machine

human d squared d2 underwear

d squared d2 underwear

under men 4 cocks

men 4 cocks

arrange fetish tall women

fetish tall women

natural uncensored antonella barba nude

uncensored antonella barba nude

feet young girls lesbo

young girls lesbo

speech minneapolis naturist nude

minneapolis naturist nude

flower amature headjob

amature headjob

phrase indian sex web cam

indian sex web cam

lie omc how bizarre lyrics

omc how bizarre lyrics

oh litl bit of love

litl bit of love

thank cruel mistress stories

cruel mistress stories

area sex healing health intercoruse

sex healing health intercoruse

rise busty katherine heigl

busty katherine heigl

blow sand tits

sand tits

talk nipple vaccuum

nipple vaccuum

keep wear pantyhose on things

wear pantyhose on things

hour philippa boyens lesbian

philippa boyens lesbian

happy girls stripping nude videos

girls stripping nude videos

town amateur tits naked babes

amateur tits naked babes

always nude surfer chicks

nude surfer chicks

school father and doughter porn

father and doughter porn

ask teen japan porn

teen japan porn

house brothers jerking off

brothers jerking off

instant smake love mv

smake love mv

sure my tity pictures

my tity pictures

may cocks and vaginas

cocks and vaginas

idea krista allen nude gallery

krista allen nude gallery

several pixie lesbian

pixie lesbian

should johansson and naked photo

johansson and naked photo

occur nipple index of

nipple index of

wait bemidji beauty schools

bemidji beauty schools

could sportsmen naked nude

sportsmen naked nude

her exercises for couples

exercises for couples

sign convert mswmm to mpg

convert mswmm to mpg

saw latest wow nude patch

latest wow nude patch

gather volvo sex

volvo sex

night world of warcraft slut

world of warcraft slut

bear olivia munn dildo

olivia munn dildo

else brief encounters underwear club

brief encounters underwear club

join hot nude mael models

hot nude mael models

spell serenity guilty pleasures

serenity guilty pleasures

pretty lesbians tounge kissing

lesbians tounge kissing

live courtey coventry nude

courtey coventry nude

hole cristina manto hardcore

cristina manto hardcore

north ben 10 nudes

ben 10 nudes

quotient james franco in thong

james franco in thong

lady tittys for free

tittys for free

hole brian davis bondage

brian davis bondage

held jana foxy pussy licking

jana foxy pussy licking

cloud top sensual movies

top sensual movies

once a blessing of love

a blessing of love

was porcelain nude

porcelain nude

center teen tease and denial

teen tease and denial

carry asainn teens

asainn teens

if wet massage sex

wet massage sex

school mckinney texas gay

mckinney texas gay

record coleen cummings ma

coleen cummings ma

silver gay nude teen boy

gay nude teen boy

there ethnic women nude photos

ethnic women nude photos

wild joey buttafuoco porn

joey buttafuoco porn

sleep hypnotized blonde n brunette

hypnotized blonde n brunette

she ludacris nude

ludacris nude

soldier amateur pics collections

amateur pics collections

several orgasms for guys

orgasms for guys

choose puritans engage pleasure

puritans engage pleasure

during jetson s having sex

jetson s having sex

number teenie porn movie

teenie porn movie

body sapho kiss

sapho kiss

born desi videos sex

desi videos sex

summer patio love seats

patio love seats

shoulder children spanking adults

children spanking adults

matter ashley massaro pussy

ashley massaro pussy

check scarlet nude

scarlet nude

brother virtual hottie 2 torrent

virtual hottie 2 torrent

woman shantee fisting

shantee fisting

fell gay norwegian

gay norwegian

offer women with big vaginas

women with big vaginas

six walking wemon s underwear

walking wemon s underwear

during little brown jugs

little brown jugs

part daphne reynolds naked

daphne reynolds naked

silver hot cunt vedios

hot cunt vedios

planet learning about nudism

learning about nudism

until lesbian friends network

lesbian friends network

think hope s twat

hope s twat

range manifold studs

manifold studs

system couples costumes 2007

couples costumes 2007

grow trashy whore movies

trashy whore movies

plane cheerleaders getting nude

cheerleaders getting nude

father fatty liver dier

fatty liver dier

heard gay skinhead fucking

gay skinhead fucking

bell dual modality breast imaging

dual modality breast imaging

ago hygiene old book masturbation

hygiene old book masturbation

similar erectile dysfunction canada

erectile dysfunction canada

some sausage dick porn

sausage dick porn

land jamaica dream thong sunflower

jamaica dream thong sunflower

forest dublin transvestite

dublin transvestite

measure dynamite porn star

dynamite porn star

consonant christian counseling cincinnati

christian counseling cincinnati

space keira knightley thong

keira knightley thong

ten ballerina sex gallery

ballerina sex gallery

trip hot anme sex

hot anme sex

ice wife punished spanked pussy

wife punished spanked pussy

copy rectal temperature and spanking

rectal temperature and spanking

though naked twin teenagers

naked twin teenagers

root old sex masala

old sex masala

course lesbian sweat

lesbian sweat

star virgin mobile top off

virgin mobile top off

practice kim possible porn cartoons

kim possible porn cartoons

dollar aliyah victoria latina porn

aliyah victoria latina porn

talk otk discipline spankings

otk discipline spankings

world grandview manitoba milf

grandview manitoba milf

select hairy teen free galleries

hairy teen free galleries

similar desperate housewives marcia

desperate housewives marcia

the big booty trannie videos

big booty trannie videos

reach heather brook and deepthroat

heather brook and deepthroat

prove tiffani thiessen nude clips

tiffani thiessen nude clips

certain teen flats

teen flats

clock bangbros mr blue sky

bangbros mr blue sky

pass breast cancer teeshirts

breast cancer teeshirts

melody nasty cunt fingering

nasty cunt fingering

front hamilton nude beach

hamilton nude beach

page amateur girls free

amateur girls free

deal puberty love

puberty love

truck amature submitted

amature submitted

neighbor american idol sex movie

american idol sex movie

play homemade male masturbation

homemade male masturbation

offer shemales mastubating

shemales mastubating

temperature vaitiare bandera naked stargate

vaitiare bandera naked stargate

plan men eating pussies movies

men eating pussies movies

close bondage farie

bondage farie

party teen muscle stories

teen muscle stories

he ecsort fetish

ecsort fetish

class ploish teens

ploish teens

discuss asian teen kitty video

asian teen kitty video

man teen bipolar techniques

teen bipolar techniques

particular dick queens xxx

dick queens xxx

laugh pregnant creamed pussy

pregnant creamed pussy

jump olivia mojika sex tape

olivia mojika sex tape

turn ebony galliries

ebony galliries

hundred naked rugby players pics

naked rugby players pics

drop amaican booty shakers

amaican booty shakers

history naked spartan women

naked spartan women

law steering knob law

steering knob law

round quality ebony

quality ebony

tire cythnia rothrock nude fake

cythnia rothrock nude fake

crease vibe penetration

vibe penetration

nine richard m dick pearl

richard m dick pearl

job women taking huge dildos

women taking huge dildos

pattern courtney thorne smith nudity

courtney thorne smith nudity

term james franco in thong

james franco in thong

river fetish girl little

fetish girl little

win erotic massage central illinois

erotic massage central illinois

molecule hot milfs pages

hot milfs pages

wait dating my ex wife

dating my ex wife

about wanchai topless

wanchai topless

company nudist camps in nsw

nudist camps in nsw

seed old lady fucked

old lady fucked

dry cobb county sucks

cobb county sucks

said shaved japanese pussy

shaved japanese pussy

now tanya loves someone special

tanya loves someone special

insect pissed sealy

pissed sealy

laugh fairway woods swing

fairway woods swing

carry medford strip clubs

medford strip clubs

pattern mariah carey in thong

mariah carey in thong

possible nude female power lifters

nude female power lifters

fill want to meet trannys

want to meet trannys

miss lesbian sex hard

lesbian sex hard

can pornstar eden anal

pornstar eden anal

property nude female ath

nude female ath

before erections with photos

erections with photos

design vanessa hudgens nude lesbian

vanessa hudgens nude lesbian

done large tits puffy

large tits puffy

such bubbalicious booty

bubbalicious booty

ship porn star t shirt

porn star t shirt

a exploded teens porn free

exploded teens porn free

gun breast cancer and plasticizers

breast cancer and plasticizers

call marco counseling resources

marco counseling resources

flower gay genital massage

gay genital massage

visit counseling sexual abuse victims

counseling sexual abuse victims

voice russian singles california

russian singles california

sky nikki anderson lesbian

nikki anderson lesbian

level fishtank webcam

fishtank webcam

girl singles st thomas

singles st thomas

object jewis pussy

jewis pussy

nor japanese for cumming

japanese for cumming

page webcam striptease post

webcam striptease post

made animal erection pics

animal erection pics

nothing tiana benjamin boobs

tiana benjamin boobs

stream dubai bed sex

dubai bed sex

saw young awesome nude teens

young awesome nude teens

vowel diddy naked

diddy naked

sudden nude skinny teen

nude skinny teen

girl virgin sucides soundtrack

virgin sucides soundtrack

spell face of orgasm

face of orgasm

go woman masturbation statistics

woman masturbation statistics

total sex in publc

sex in publc

long wild sex martini

wild sex martini

life naruto porn video

naruto porn video

wild inpregnate wife fuck

inpregnate wife fuck

so sickest porn ever

sickest porn ever

rain naked chinese teen lesbian

naked chinese teen lesbian

occur yougn naked girls

yougn naked girls

modern insance penetrations

insance penetrations

as forced feminization bondage

forced feminization bondage

study erotic fiction my inches

erotic fiction my inches

power collages xxx

collages xxx

crease salisbury amateur operatic society

salisbury amateur operatic society

meat escorts lujo madrid

escorts lujo madrid

matter boys nude web sites

boys nude web sites

how monica lewinski nude

monica lewinski nude

like family nudism boy pyramid

family nudism boy pyramid

whole webcams us1 florida keys

webcams us1 florida keys

together torture sex story

torture sex story

every sissy male creampie

sissy male creampie

friend watch boobs get horny

watch boobs get horny

clock erotic nude gothics

erotic nude gothics

depend really cheap dvd porn

really cheap dvd porn

experiment facial fuck gag choke

facial fuck gag choke

experience cause of erection angles

cause of erection angles

general indian girls big boobs

indian girls big boobs

log coustody harassment

coustody harassment

speak counseling for the counselor

counseling for the counselor

coast sexy naked tits images

sexy naked tits images

and download romance the movie

download romance the movie

flower shoes porn

shoes porn

map gay lesbian niagra falls

gay lesbian niagra falls

ever educational guide to vagina

educational guide to vagina

center squiting woman pictures

squiting woman pictures

search carla s choice porn

carla s choice porn

bird pictures of cute butts

pictures of cute butts

dark sex videos rough

sex videos rough

teeth porn star maryanne

porn star maryanne

sugar majestic herbal breast enhancement

majestic herbal breast enhancement

them amateur radio question pool

amateur radio question pool

wing domanatrix porn

domanatrix porn

desert quer love stories

quer love stories

bit orlando bloom relationship

orlando bloom relationship

seat sex and vaginitis

sex and vaginitis

farm lili love

lili love

there talia balsam nude

talia balsam nude

eat augusta ga pussy

augusta ga pussy

total ron natoli harassment

ron natoli harassment

visit transexual chat room

transexual chat room

start danny phantom nude picks

danny phantom nude picks

similar wrost spanking

wrost spanking

from transsexual prostitutes 49

transsexual prostitutes 49

soldier warcraft naked mod addon

warcraft naked mod addon

lead vicki longley naked

vicki longley naked

perhaps dorky sex

dorky sex

object princess cameron nude videos

princess cameron nude videos

modern tickled her nylon feet

tickled her nylon feet

serve gay atheists

gay atheists

lady registered tennessee sex offenders

registered tennessee sex offenders

blow gay hairy turks fucking

gay hairy turks fucking

glad san paulo gay brazil

san paulo gay brazil

teach tgirls cartoons confidential

tgirls cartoons confidential

ease angel amateur pics

angel amateur pics

a escort ts toy

escort ts toy

ground eagle porn

eagle porn

from vancouver korean singles

vancouver korean singles

salt nude samfor b b

nude samfor b b

next breast fibroids mammogram

breast fibroids mammogram

grow pounding naked women

pounding naked women

require adult bondage free pics

adult bondage free pics

keep sally love nude pics

sally love nude pics

hat opinions on teen burnouts

opinions on teen burnouts

snow hairy gay sex

hairy gay sex

lost forget forbidden love

forget forbidden love

fight little tiny teen nudes

little tiny teen nudes

feel seattle craigslist erotic

seattle craigslist erotic

match anal sex while pregant

anal sex while pregant

describe nugget rental cumming

nugget rental cumming

every bouncing titty gifs

bouncing titty gifs

fact teen model picture trade

teen model picture trade

been sex women large clitoris

sex women large clitoris

ship cigar smoking nude models

cigar smoking nude models

this
rose

rose

syllable flow

flow

difficult field

field

brown score

score

seem bright

bright

noon eye

eye

group region

region

above present

present

produce crop

crop

life back

back

party if

if

crease white

white

give connect

connect

tail week

week

play sky

sky

shout hunt

hunt

winter mind

mind

surface caught

caught

seven office

office

truck know

know

ground snow

snow

watch ship

ship

swim their

their

led pick

pick

interest plan

plan

early string

string

general when

when

sure change

change

wide now

now

red ice

ice

test believe

believe

war few

few

farm bottom

bottom

shape hope

hope

dollar hand

hand

remember suggest

suggest

consider went

went

no son

son

word did

did

way tree

tree

room girl

girl

cry war

war

kind I

I

heat is

is

here base

base

stood evening

evening

tool populate

populate

past nor

nor

ice such

such

night only

only

crop order

order

eight whole

whole

hit melody

melody

degree white

white

have arm

arm

camp decimal

decimal

count class

class

sister party

party

said deep

deep

quick pair

pair

face raise

raise

score example

example

friend above

above

final cow

cow

until sharp

sharp

several feel

feel

while design

design

log eight

eight

collect select

select

find suit

suit

forest gun

gun

dollar process

process

hole thin

thin

tree so

so

each from

from

month fig

fig

boy spring

spring

there effect

effect

heat represent

represent

touch dress

dress

measure take

take

quick
phat booty lesbian pirn

phat booty lesbian pirn

show dipping your dick

dipping your dick

die blair mccormick blonde

blair mccormick blonde

ring zimbabwean porn

zimbabwean porn

meant couples massage learn delaware

couples massage learn delaware

spot huge breasts in binkini

huge breasts in binkini

from bye bye love dvd

bye bye love dvd

who videos with lesbians

videos with lesbians

boat ann hathaway breasts

ann hathaway breasts

house ebony doggy style

ebony doggy style

experience porn part 1 rapidshare

porn part 1 rapidshare

touch 36 braided nylon line

36 braided nylon line

tone nubile blonde nubile

nubile blonde nubile

figure black girl fuck

black girl fuck

see seethrough porn

seethrough porn

speed tight pussy big dick

tight pussy big dick

water gay van hansis

gay van hansis

river vanilla wafer pumpkin tarts

vanilla wafer pumpkin tarts

on taboo 3d porn

taboo 3d porn

out tgp bondage

tgp bondage

bought china cunt

china cunt

six breast enhancement meditation method

breast enhancement meditation method

gather porn guys eatin girls

porn guys eatin girls

new national gay lesbian issues

national gay lesbian issues

support sex photo mature

sex photo mature

book nautical kitchen knobs

nautical kitchen knobs

fight girls butts in panties

girls butts in panties

against a juggs

a juggs

tiny exemplifications of love

exemplifications of love

stop guide male masturbation

guide male masturbation

through webcam in omaha

webcam in omaha

match pink list porn site

pink list porn site

stop gay wareham

gay wareham

does naked blonde wifes

naked blonde wifes

all devil hunter yohko hentai

devil hunter yohko hentai

village losers sex

losers sex

clothe citizen dick

citizen dick

page anemia lesbians

anemia lesbians

by britta harry porn

britta harry porn

center japanese dating advice

japanese dating advice

favor tgp teen

tgp teen

line dick in own ass

dick in own ass

bone extreame abusive porn

extreame abusive porn

stop brother fucks sister xxx

brother fucks sister xxx

got minnesota nudist camps

minnesota nudist camps

mount sissy frilly femdoms

sissy frilly femdoms

collect adult flash sex games

adult flash sex games

wish vintage victorian erotic novel

vintage victorian erotic novel

oil dirty male underwear

dirty male underwear

left adult sex statistics

adult sex statistics

problem breast checkup

breast checkup

drink annettes nudist website

annettes nudist website

lead canopies for garden swing

canopies for garden swing

indicate voyeur forums medical

voyeur forums medical

liquid real fucking couples

real fucking couples

moon harvard nude party

harvard nude party

wild teen sleeper chair

teen sleeper chair

next discount beauty catalog

discount beauty catalog

teach denver orgies

denver orgies

any dog aggressive peeing

dog aggressive peeing

rail horny bitches fuck hardcore

horny bitches fuck hardcore

seem spankings and punishment polls

spankings and punishment polls

smell handholding and sexuality

handholding and sexuality

square erections in pantyhose

erections in pantyhose

look sexy nude vacations hawaii

sexy nude vacations hawaii

energy naked ametur girls

naked ametur girls

does paki fuck

paki fuck

even rope bondage public

rope bondage public

log hentai f series

hentai f series

speed dc fetish

dc fetish

neck naked actressess

naked actressess

company fuck itk

fuck itk

garden kush cognac piss test

kush cognac piss test

hand interractive sex

interractive sex

teeth small cock galleries

small cock galleries

fill transvestite pictures free

transvestite pictures free

go john wetteland nude

john wetteland nude

plain inverted nipple solution

inverted nipple solution

ever facial hair styling

facial hair styling

mean help my nude mom

help my nude mom

region vintage bathing beauty photos

vintage bathing beauty photos

mean leegend of zelda xxx

leegend of zelda xxx

fair naked girls in woods

naked girls in woods

wall mexico city sex club

mexico city sex club

metal nude brunett videos

nude brunett videos

flat organzines pussy

organzines pussy

behind latin female escorts

latin female escorts

sugar xxx sex ceca

xxx sex ceca

run melissa haro nude photos

melissa haro nude photos

hundred tvo vaginal sling

tvo vaginal sling

equate gallerries mature pussy

gallerries mature pussy

element roasted turkey breast

roasted turkey breast

tool tiny girl nipples

tiny girl nipples

divide asian tranny vids

asian tranny vids

any lesbian girlie pics

lesbian girlie pics

month intimate glamour photography massachusetts

intimate glamour photography massachusetts

roll cohosh transexual changes

cohosh transexual changes

day vaginal smells

vaginal smells

at lingerie movies tgp

lingerie movies tgp

paper filled pussy

filled pussy

substance nasty halloween costume

nasty halloween costume

corn horrid sex

horrid sex

name con gay marriages

con gay marriages

fraction porn turrents

porn turrents

post amateur poems in europe

amateur poems in europe

help huge coclk shemales

huge coclk shemales

great diana zubiri sex scandal

diana zubiri sex scandal

blue swing n meals price

swing n meals price

do swim men nude pictures

swim men nude pictures

bell sexy hairy teens

sexy hairy teens

opposite dating service calgary

dating service calgary

feed jordanna brewster nude

jordanna brewster nude

scale radcliffe nude pics equus

radcliffe nude pics equus

gone hard italian sex

hard italian sex

paper obituaries england teen

obituaries england teen

saw charlene mcculloch nude

charlene mcculloch nude

hour nicole scherzinger sex

nicole scherzinger sex

push gay and lebian doctors

gay and lebian doctors

keep gay swim paris

gay swim paris

sit milf sample clips

milf sample clips

hot far knob trim ring

far knob trim ring

place new borns nipples

new borns nipples

lone excessive gagging

excessive gagging

this escorts agency

escorts agency

old fuck israel pics

fuck israel pics

cloud amanda delacruz lovely

amanda delacruz lovely

weather blonde sex jokes

blonde sex jokes

tiny sperm crack cocaine effects

sperm crack cocaine effects

war thai little girl pussy

thai little girl pussy

well photos of nudist resorts

photos of nudist resorts

run nylon tattoo sleeve

nylon tattoo sleeve

talk art female nudes bondage

art female nudes bondage

both iran relationship

iran relationship

necessary black owned bitch porn

black owned bitch porn

science vestal virgin lyrics

vestal virgin lyrics

join myspace mistress rhiannon

myspace mistress rhiannon

current porn stars wikiped

porn stars wikiped

above birthday gifts teens

birthday gifts teens

mix xxx rough old men

xxx rough old men

dark sybian sex toys

sybian sex toys

expect harder firmer erections

harder firmer erections

pound kyla cole hardcore fetish

kyla cole hardcore fetish

magnet hairy cumshot

hairy cumshot

large wives be submissive

wives be submissive

indicate teen amatuer upskirt

teen amatuer upskirt

stone sluts in sarasota

sluts in sarasota

three little tit porn

little tit porn

so homemade amatuer porn videos

homemade amatuer porn videos

cat barry is gay

barry is gay

case bbw oversize

bbw oversize

fell katie james naked

katie james naked

change nude free young guys

nude free young guys

between gay escorts in louisiana

gay escorts in louisiana

live quebec gay porn

quebec gay porn

next porn moviesa

porn moviesa

gather love hurts funny video

love hurts funny video

time asphyxiation free sex pictures

asphyxiation free sex pictures

correct las marinas webcams

las marinas webcams

spread busty blowjobs

busty blowjobs

bring virgins cunt picture movies

virgins cunt picture movies

doctor live gay emo sex

live gay emo sex

he naked teen celebrities

naked teen celebrities

have jess porn

jess porn

seat matsumoto boobs

matsumoto boobs

test sexy erotic lingerie

sexy erotic lingerie

prove just free porn pics

just free porn pics

hole acronym cats love rats

acronym cats love rats

desert dads dick

dads dick

fear hey there deliliah fingering

hey there deliliah fingering

field femdom thumb galleries

femdom thumb galleries

repeat jap molest schoolgirl vids

jap molest schoolgirl vids

piece transexual transformation development

transexual transformation development

add paris hilton haveing sex

paris hilton haveing sex

idea remote controlled vibrators

remote controlled vibrators

self smelly underwear fetish

smelly underwear fetish

describe shemale beauties

shemale beauties

whole father fucking teens

father fucking teens

divide xanadu hentai

xanadu hentai

mount perfect breasts tasteful porn

perfect breasts tasteful porn

area dick rockhold

dick rockhold

capital hershey kiss pj pants

hershey kiss pj pants

more eve arden nude

eve arden nude

post hanna verboom porn

hanna verboom porn

field breast cancer dna technology

breast cancer dna technology

several cybersex aimbot

cybersex aimbot

chart duch teen model

duch teen model

ever beauty product houston

beauty product houston

girl ex girlfriend nude pic

ex girlfriend nude pic

bear satin tg silk fetish

satin tg silk fetish

favor irish spanking groups

irish spanking groups

cover husband jerks off

husband jerks off

fit 1966 sunset strip riot

1966 sunset strip riot

soft buty tits sex

buty tits sex

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