43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
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}");
 | 
						|
    }
 | 
						|
 | 
						|
    public function get_priority(): int
 | 
						|
    {
 | 
						|
        return 99;
 | 
						|
    }
 | 
						|
}
 |