90 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace W3TC;
 | |
| 
 | |
| /**
 | |
|  * class Varnish_Plugin
 | |
|  */
 | |
| class Varnish_Plugin {
 | |
| 	/**
 | |
| 	 * Runs plugin
 | |
| 	 */
 | |
| 	public function run() {
 | |
| 		Util_AttachToActions::flush_posts_on_actions();
 | |
| 
 | |
| 		add_action( 'w3tc_flush_all',
 | |
| 			array( $this, 'varnish_flush' ),
 | |
| 			2000, 1 );
 | |
| 		add_action( 'w3tc_flush_post',
 | |
| 			array( $this, 'varnish_flush_post' ),
 | |
| 			2000, 2 );
 | |
| 		add_action( 'w3tc_flushable_posts', '__return_true', 2000 );
 | |
| 		add_action( 'w3tc_flush_posts',
 | |
| 			array( $this, 'varnish_flush' ),
 | |
| 			2000 );
 | |
| 		add_action( 'w3tc_flush_url',
 | |
| 			array( $this, 'varnish_flush_url' ),
 | |
| 			2000, 1 );
 | |
| 
 | |
| 		add_filter( 'w3tc_admin_bar_menu',
 | |
| 			array( $this, 'w3tc_admin_bar_menu' ) );
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * Purges varnish cache
 | |
| 	 *
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	public function varnish_flush( $extras = array() ) {
 | |
| 		if ( isset( $extras['only'] ) && $extras['only'] != 'varnish' )
 | |
| 			return;
 | |
| 
 | |
| 		$varnishflush = Dispatcher::component( 'Varnish_Flush' );
 | |
| 		$v = $varnishflush->flush();
 | |
| 
 | |
| 		return $v;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Purges post from varnish
 | |
| 	 *
 | |
| 	 * @param integer $post_id Post ID.
 | |
| 	 * @param boolean $force   Force flag (optional).
 | |
| 	 *
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	public function varnish_flush_post( $post_id, $force = false ) {
 | |
| 		$varnishflush = Dispatcher::component( 'Varnish_Flush' );
 | |
| 		$v = $varnishflush->flush_post( $post_id, $force );
 | |
| 
 | |
| 		return $v;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Purges post from varnish
 | |
| 	 *
 | |
| 	 * @param string  $url
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	public function varnish_flush_url( $url ) {
 | |
| 		$varnishflush = Dispatcher::component( 'Varnish_Flush' );
 | |
| 		$v = $varnishflush->flush_url( $url );
 | |
| 
 | |
| 		return $v;
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_admin_bar_menu( $menu_items ) {
 | |
| 		$menu_items['20610.varnish'] = array(
 | |
| 			'id' => 'w3tc_flush_varnish',
 | |
| 			'parent' => 'w3tc_flush',
 | |
| 			'title' => __( 'Varnish Cache', 'w3-total-cache' ),
 | |
| 			'href' => wp_nonce_url( admin_url(
 | |
| 					'admin.php?page=w3tc_dashboard&w3tc_flush_varnish' ),
 | |
| 				'w3tc' )
 | |
| 		);
 | |
| 
 | |
| 		return $menu_items;
 | |
| 	}
 | |
| }
 |