prepareQuery();
$table = $config->sql_tablename_pictures();
$picpath = $config->picture_storepath();
$fileshortcode = strtolower(trim($func->stripHtml($_REQUEST['s'])));
$startpage = strtolower(trim($func->stripHtml($_REQUEST['m'])));
$requested_uri = urlencode(basename($_SERVER['REQUEST_URI']));
$stmt = $pdo->prepare("SELECT p_filename,p_uri FROM $table WHERE p_shortcode=:shortcode LIMIT 1");
$stmt->bindValue(':shortcode', $fileshortcode, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$filename = trim($rows[0]["p_filename"]);
$source = trim($rows[0]["p_uri"]);
$source_file = "$picpath/$filename";
$isMobile = $detect->isMobile();
$resolutions = array(2000, 1440, 1024, 1382, 960, 760, 480, 320, 280, 230);
$imageRetArray = $func->getScreenResolutionFromUA();
$x = $imageRetArray["x"];
$y = $imageRetArray["y"];
$fontsize = $imageRetArray["fontsize"];
$picQuality = $imageRetArray["picQuality"];
/* Check to see if a valid cookie exists */
if (isset($_COOKIE['resolution'])) {
$cookie_value = floor($_COOKIE['resolution']);
// does the cookie look valid? [whole number, comma, potential floating number]
if (! preg_match("/^[0-9]+[,]*[0-9\.]+$/", "$cookie_value")) { // no it doesn't look valid
setcookie("resolution", "$cookie_value", time()-100); // delete the mangled cookie
}
else { // the cookie is valid, do stuff with it
$cookie_data = explode(",", $_COOKIE['resolution']);
$client_width = (int) $cookie_data[0]; // the base resolution (CSS pixels)
$total_width = $client_width;
$pixel_density = 1; // set a default, used for non-retina style JS snippet
if (@$cookie_data[1]) { // the device's pixel density factor (physical pixels per CSS pixel)
$pixel_density = $cookie_data[1];
}
rsort($resolutions); // make sure the supplied break-points are in reverse size order
$resolution = $resolutions[0];//min($resolutions); // by default use the largest supported break-point
// if pixel density is not 1, then we need to be smart about adapting and fitting into the defined breakpoints
if($pixel_density != 1) {
$total_width = $client_width * $pixel_density; // required physical pixel width of the image
// the required image width is bigger than any existing value in $resolutions
if($total_width > $resolutions[0]){
// firstly, fit the CSS size into a break point ignoring the multiplier
foreach ($resolutions as $break_point) { // filter down
if ($total_width <= $break_point) {
$resolution = $break_point;
}
}
// now apply the multiplier
$resolution = $resolution * $pixel_density;
}
// the required image fits into the existing breakpoints in $resolutions
else {
foreach ($resolutions as $break_point) { // filter down
if ($total_width <= $break_point) {
$resolution = $break_point;
}
}
}
}
else { // pixel density is 1, just fit it into one of the breakpoints
foreach ($resolutions as $break_point) { // filter down
if ($total_width <= $break_point) {
$resolution = $break_point;
}
}
}
}
}
/* No resolution was found (no cookie or invalid cookie) */
if (!$resolution) {
// We send the lowest resolution for mobile-first approach, and highest otherwise
//$resolution = $isMobile ? min($resolutions) : max($resolutions);
$resolution = $isMobile ? min($resolutions) : 280;
}
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "google")){
$resolution = 280; // min($resolutions);
}
/*
if (isset($startpage) && !empty($startpage)){
$resolution = 120;
}
*
/* if the requested URL starts with a slash, remove the slash */
if(substr($requested_uri, 0,1) == "/") {
$requested_uri = substr($requested_uri, 1);
}
/* whew might the cache file be? */
$resolution = floor($resolution);
/*
if ( stristr($_SERVER['HTTP_USER_AGENT'], "Google") !== false ){
$resolution = 480;
}
if ($resolution > 760 ){
$resolution = 760;
}
*/
$resolution = 280; //768;
$cache_file = $config->picture_cache_path()."/$resolution/".$fileshortcode;
//echo "cache_file=$cache_file
";
/* Use the resolution value as a path variable and check to see if an image of the same name exists at that path */
if (is_file($cache_file) && file_exists($cache_file) && is_readable($cache_file) && filesize($cache_file) >10 ) { // it exists cached at that size
// echo "HIT cache_file=$cache_file
";
//if ($watch_cache) { // if cache watching is enabled, compare cache and source modified dates to ensure the cache isn't stale
// $cache_file = $imgSrc->refreshCache($source_file, $cache_file, $resolution, $picQuality );
//}
$imgSrc->sendImage($cache_file, $browser_cache);
exit(0);
}
//echo "HOT A MISS cache_file=$cache_file
";
//echo "$source_file, $cache_file";
/* It exists as a source file, and it doesn't exist cached - lets make one: */
//echo "generateImage($source_file, $cache_file, $resolution, $picQuality )";
$file = $imgSrc->generateImage($source_file, $cache_file, $resolution, $picQuality );
$imgSrc->sendImage($file, $browser_cache);
$stmt = null; // doing this is mandatory for connection to get closed
$pdo = null;
exit(0);
?>