New caching system for photos

This commit is contained in:
Michael Vogel 2012-12-14 22:47:30 +01:00
parent 5635fe250c
commit 46c5a97a20
4 changed files with 29 additions and 5 deletions

View file

@ -520,6 +520,19 @@ if(! class_exists('App')) {
$this->is_tablet = $mobile_detect->isTablet(); $this->is_tablet = $mobile_detect->isTablet();
} }
function get_basepath() {
$basepath = get_config("system", "basepath");
if ($basepath == "")
$basepath = $_SERVER["DOCUMENT_ROOT"];
if ($basepath == "")
$basepath = $_SERVER["PWD"];
return($basepath);
}
function get_baseurl($ssl = false) { function get_baseurl($ssl = false) {
$scheme = $this->scheme; $scheme = $this->scheme;
@ -1895,7 +1908,7 @@ function clear_cache($basepath = "", $path = "") {
$fullpath = $path."/".$file; $fullpath = $path."/".$file;
if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != "..")) if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != ".."))
clear_cache($basepath, $fullpath); clear_cache($basepath, $fullpath);
if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - $cachetime)) if ((filetype($fullpath) == "file") and (filectime($fullpath) < (time() - $cachetime)))
unlink($fullpath); unlink($fullpath);
} }
closedir($dh); closedir($dh);

View file

@ -854,8 +854,7 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
} }
// replace the special char encoding // replace the special char encoding
$s = htmlspecialchars($s,ENT_NOQUOTES,'UTF-8');
$s = htmlspecialchars($s,ENT_QUOTES,'UTF-8');
return $s; return $s;
} }

View file

@ -105,6 +105,9 @@ function poller_run(&$argv, &$argc){
// clear old item cache files // clear old item cache files
clear_cache(); clear_cache();
// clear cache for photos
clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
$manual_id = 0; $manual_id = 0;
$generation = 0; $generation = 0;
$hub_update = false; $hub_update = false;

View file

@ -7,6 +7,7 @@ function photo_init(&$a) {
global $_SERVER; global $_SERVER;
$prvcachecontrol = false; $prvcachecontrol = false;
$file = "";
switch($a->argc) { switch($a->argc) {
case 4: case 4:
@ -20,6 +21,7 @@ function photo_init(&$a) {
break; break;
case 2: case 2:
$photo = $a->argv[1]; $photo = $a->argv[1];
$file = $photo;
break; break;
case 1: case 1:
default: default:
@ -42,7 +44,6 @@ function photo_init(&$a) {
exit; exit;
} }
$default = 'images/person-175.jpg'; $default = 'images/person-175.jpg';
if(isset($type)) { if(isset($type)) {
@ -94,7 +95,7 @@ function photo_init(&$a) {
foreach( Photo::supportedTypes() as $m=>$e){ foreach( Photo::supportedTypes() as $m=>$e){
$photo = str_replace(".$e",'',$photo); $photo = str_replace(".$e",'',$photo);
} }
if(substr($photo,-2,1) == '-') { if(substr($photo,-2,1) == '-') {
$resolution = intval(substr($photo,-1,1)); $resolution = intval(substr($photo,-1,1));
$photo = substr($photo,0,-2); $photo = substr($photo,0,-2);
@ -115,6 +116,8 @@ function photo_init(&$a) {
intval($resolution) intval($resolution)
); );
$public = ($r[0]['allow_cid'] == '') AND ($r[0]['allow_gid'] == '') AND ($r[0]['deny_cid'] == '') AND ($r[0]['deny_gid'] == '');
if(count($r)) { if(count($r)) {
$data = $r[0]['data']; $data = $r[0]['data'];
$mimetype = $r[0]['type']; $mimetype = $r[0]['type'];
@ -198,6 +201,12 @@ function photo_init(&$a) {
header("Cache-Control: max-age=31536000"); header("Cache-Control: max-age=31536000");
} }
echo $data; echo $data;
// If the photo is public and there is an existing photo directory store the photo there
if ($public and ($file != ""))
if (is_dir($_SERVER["DOCUMENT_ROOT"]."/photo"))
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/photo/".$file, $data);
killme(); killme();
// NOTREACHED // NOTREACHED
} }