canViewImage($aClean['iId'])) util_show_error_page_and_exit("Insufficient privileges."); $oScreenshot = new Screenshot($aClean['iId']); $fImage = fopen(appdb_fullpath("data/screenshots/".$oScreenshot->sUrl), "rb"); /* if we can open the image we should get its last modified time and read */ /* a few bytes from its header information and close it */ if($fImage) { $fstat_val = fstat($fImage); $iModTime = $fstat_val['mtime']; $sMagic = fread($fImage, 8); /* read 8 bytes from the header, that lets us idenfity the type of image without loading it */ fclose($fImage); /* don't leave the fopened image open */ } /* identify what kind of image this is, if we can't identify it */ /* we should report that its a bad image */ if (strcmp("\x89PNG\r\n\x1A\n", $sMagic)==0) { header("Content-Type: image/png"); } else if (preg_match("^\xD8\xFF^", $sMagic)) { header("Content-Type: image/jpeg"); } else { header("500 Bad image format"); exit; } header("Cache-Control: public"); header("Expires: "); /* if the browser is asking if the file was modified since a particular date */ /* and the date is the same that the file was modified, then we can report */ /* that the file wasn't modified, the browser can used the cached image */ if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $iModTime == pHttpDate($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { header("HTTP/1.0 304 Not Modified"); exit; } header("Last-Modified: ".fHttpDate($iModTime)); if(!$aClean['bThumbnail']) $oScreenshot->output_screenshot(false); else $oScreenshot->output_screenshot(true); ?>