39 lines
		
	
	
		
			960 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			960 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*
 | 
						|
* Name: Varnish Purger
 | 
						|
* Author: Shish <webmaster@shishnet.org>
 | 
						|
* 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;}
 | 
						|
}
 |