diff options
author | Max Kostikov <max@kostikov.co> | 2018-11-29 11:06:14 +0100 |
---|---|---|
committer | Max Kostikov <max@kostikov.co> | 2018-11-29 11:06:14 +0100 |
commit | 48cd5855fe0bb530d3a26ea3a095bd3ab9c2493e (patch) | |
tree | e1c0d582574a8c2b5bf39cbd1e3edb805217a721 /include/text.php | |
parent | bd0fc8a2d7f71e9b9d6fa768fa30484bcb7e22f2 (diff) | |
download | volse-hubzilla-48cd5855fe0bb530d3a26ea3a095bd3ab9c2493e.tar.gz volse-hubzilla-48cd5855fe0bb530d3a26ea3a095bd3ab9c2493e.tar.bz2 volse-hubzilla-48cd5855fe0bb530d3a26ea3a095bd3ab9c2493e.zip |
Add photo cache support using sslify()
Diffstat (limited to 'include/text.php')
-rw-r--r-- | include/text.php | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/include/text.php b/include/text.php index 646bfe749..113448a92 100644 --- a/include/text.php +++ b/include/text.php @@ -1105,12 +1105,33 @@ function linkify($s, $me = false) { * to a local redirector which uses https and which redirects to the selected content * * @param string $s + * @param int $uid * @returns string */ -function sslify($s) { +function sslify($s, $uid) { + + // Local photo cache + if(get_config('system','photo_cache_enable', 0)) { + $matches = null; + $cnt = preg_match_all("/\<img(.*?)src=[\"|'](https?\:.*?)[\"|'](.*?)\>/",$s,$matches,PREG_SET_ORDER); + if ($cnt) { + foreach ($matches as $match) { + logger('uid: ' . $uid . '; url: ' . $match[2], LOGGER_DEBUG); + $cache = array( + 'url' => $match[2], + 'uid' => $uid + ); + call_hooks('cache_url_hook', $cache); + logger('cache status: ' . intval($cache['status']) .'; cached as: ' . ($cache['cached'] ? $cache['hash'] : '-'), LOGGER_DEBUG); + if($cache['cached']) + $s = str_replace($match[2], z_root() . '/photo/' . $cache['hash'] . '-' . $cache['res'], $s); + } + } + } + if (strpos(z_root(),'https:') === false) return $s; - + // By default we'll only sslify img tags because media files will probably choke. // You can set sslify_everything if you want - but it will likely white-screen if it hits your php memory limit. // The downside is that http: media files will likely be blocked by your browser @@ -1118,7 +1139,7 @@ function sslify($s) { $allow = get_config('system','sslify_everything'); - $pattern = (($allow) ? "/\<(.*?)src=\"(http\:.*?)\"(.*?)\>/" : "/\<img(.*?)src=\"(http\:.*?)\"(.*?)\>/" ); + $pattern = (($allow) ? "/\<(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" : "/\<img(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" ); $matches = null; $cnt = preg_match_all($pattern,$s,$matches,PREG_SET_ORDER); @@ -1681,7 +1702,7 @@ function prepare_body(&$item,$attach = false,$opts = false) { if(local_channel() == $item['uid']) $filer = format_filer($item); - $s = sslify($s); + $s = sslify($s, $item['uid']); $prep_arr = array( 'item' => $item, @@ -3259,7 +3280,7 @@ function share_unshield($m) { } -function cleanup_bbcode($body) { +function cleanup_bbcode($body, $uid = 0) { /** * fix naked links by passing through a callback to see if this is a hubzilla site @@ -3295,7 +3316,7 @@ function cleanup_bbcode($body) { $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); - $body = scale_external_images($body,false); + $body = scale_external_images($body, false, false, $uid); return $body; } |