43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			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) {
 | |
| 		// waiting for curl timeout adds ~5 minutes to unit tests
 | |
| 		if(defined("UNITTEST")) return;
 | |
| 
 | |
| 		$url = make_http(make_link($path));
 | |
| 		$ch = curl_init();
 | |
| 		curl_setopt($ch, CURLOPT_URL, $url);
 | |
| 		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PURGE");
 | |
| 		curl_setopt($ch, CURLOPT_TIMEOUT, 5);
 | |
| 		$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(): int {return 99;}
 | |
| }
 |