From 67628816a42c47cc64c75e420975b25f8a7c30c7 Mon Sep 17 00:00:00 2001 From: Shish Date: Sat, 24 Jan 2015 16:54:18 +0000 Subject: [PATCH] Finally commit ext for purging varnish on-demand --- ext/varnish/main.php | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 ext/varnish/main.php diff --git a/ext/varnish/main.php b/ext/varnish/main.php new file mode 100644 index 00000000..de9ce60d --- /dev/null +++ b/ext/varnish/main.php @@ -0,0 +1,38 @@ + +* License: GPLv2 +* Visibility: admin +* Description: Sends PURGE requests when a /post/view is updated +*/ + +class VarnishPurger extends Extension { + private function curl_purge($path) { + $url = make_http(make_link($path)); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PURGE"); + $result = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + return $result; + } + + public function onCommentPosting(CommentPostingEvent $event) { + $this->curl_purge("post/view/{$event->image_id}"); + } + + public function onImageInfoSet(ImageInfoSetEvent $event) { + $this->curl_purge("post/view/{$event->image->id}"); + } + + public function onImageDeletion(ImageDeletionEvent $event) { + $this->curl_purge("post/view/{$event->image->id}"); + } + + /** + * @return int + */ + public function get_priority() {return 99;} +}