From 46c5a97a204b6bff64b0e85cccf76b38d247862f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 14 Dec 2012 22:47:30 +0100 Subject: [PATCH] New caching system for photos --- boot.php | 15 ++++++++++++++- include/network.php | 3 +-- include/poller.php | 3 +++ mod/photo.php | 13 +++++++++++-- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/boot.php b/boot.php index 354c24320..9dacaaaec 100644 --- a/boot.php +++ b/boot.php @@ -520,6 +520,19 @@ if(! class_exists('App')) { $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) { $scheme = $this->scheme; @@ -1895,7 +1908,7 @@ function clear_cache($basepath = "", $path = "") { $fullpath = $path."/".$file; if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != "..")) clear_cache($basepath, $fullpath); - if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - $cachetime)) + if ((filetype($fullpath) == "file") and (filectime($fullpath) < (time() - $cachetime))) unlink($fullpath); } closedir($dh); diff --git a/include/network.php b/include/network.php index 599088a2d..5877dda41 100644 --- a/include/network.php +++ b/include/network.php @@ -854,8 +854,7 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) } // replace the special char encoding - - $s = htmlspecialchars($s,ENT_QUOTES,'UTF-8'); + $s = htmlspecialchars($s,ENT_NOQUOTES,'UTF-8'); return $s; } diff --git a/include/poller.php b/include/poller.php index 6f2eeed82..4eb5e8a2b 100644 --- a/include/poller.php +++ b/include/poller.php @@ -105,6 +105,9 @@ function poller_run(&$argv, &$argc){ // clear old item cache files clear_cache(); + // clear cache for photos + clear_cache($a->get_basepath(), $a->get_basepath()."/photo"); + $manual_id = 0; $generation = 0; $hub_update = false; diff --git a/mod/photo.php b/mod/photo.php index e37b92738..93db82a64 100644 --- a/mod/photo.php +++ b/mod/photo.php @@ -7,6 +7,7 @@ function photo_init(&$a) { global $_SERVER; $prvcachecontrol = false; + $file = ""; switch($a->argc) { case 4: @@ -20,6 +21,7 @@ function photo_init(&$a) { break; case 2: $photo = $a->argv[1]; + $file = $photo; break; case 1: default: @@ -42,7 +44,6 @@ function photo_init(&$a) { exit; } - $default = 'images/person-175.jpg'; if(isset($type)) { @@ -94,7 +95,7 @@ function photo_init(&$a) { foreach( Photo::supportedTypes() as $m=>$e){ $photo = str_replace(".$e",'',$photo); } - + if(substr($photo,-2,1) == '-') { $resolution = intval(substr($photo,-1,1)); $photo = substr($photo,0,-2); @@ -115,6 +116,8 @@ function photo_init(&$a) { 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)) { $data = $r[0]['data']; $mimetype = $r[0]['type']; @@ -198,6 +201,12 @@ function photo_init(&$a) { header("Cache-Control: max-age=31536000"); } 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(); // NOTREACHED }