130 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace W3TC;
 | |
| 
 | |
| class Extension_WordPressSeo_Plugin_Admin {
 | |
| 	function run() {
 | |
| 		add_filter( 'w3tc_extension_plugin_links_wordpress-seo', array( $this, 'remove_settings' ) );
 | |
| 		add_action( 'w3tc_activate_extension_wordpress-seo', array( $this, 'activate' ) );
 | |
| 		add_action( 'w3tc_deactivate_extension_wordpress-seo', array( $this, 'deactivate' ) );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 *
 | |
| 	 * @param unknown $links
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	public function remove_settings( $links ) {
 | |
| 		array_pop( $links );
 | |
| 		return $links;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 *
 | |
| 	 * @param unknown $extensions
 | |
| 	 * @param Config  $config
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	static public function w3tc_extensions( $extensions, $config ) {
 | |
| 		$message = array();
 | |
| 		if ( !self::criteria_match() )
 | |
| 			$message[] = 'Optimizes "Yoast SEO" plugin, which is not active';
 | |
| 
 | |
| 		$extensions['wordpress-seo'] = array (
 | |
| 			'name' => 'Yoast SEO',
 | |
| 			'author' => 'W3 EDGE',
 | |
| 			'description' => __( 'Configures W3 Total Cache to comply with Yoast SEO requirements automatically.', 'w3-total-cache' ),
 | |
| 
 | |
| 			'author_uri' => 'https://www.w3-edge.com/',
 | |
| 			'extension_uri' => 'https://www.w3-edge.com/',
 | |
| 			'extension_id' => 'wordpress-seo',
 | |
| 			'settings_exists' => true,
 | |
| 			'version' => '0.1',
 | |
| 			'enabled' => self::criteria_match(),
 | |
| 			'requirements' => implode( ', ', $message ),
 | |
| 			'path' => 'w3-total-cache/Extension_WordPressSeo_Plugin.php'
 | |
| 		);
 | |
| 
 | |
| 		return $extensions;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * called from outside, since can show notice even when extension is not active
 | |
| 	 */
 | |
| 	static public function w3tc_extensions_hooks( $hooks ) {
 | |
| 		if ( !self::show_notice() )
 | |
| 			return $hooks;
 | |
| 
 | |
| 		if ( !isset( $hooks['filters']['w3tc_notes'] ) )
 | |
| 			$hooks['filters']['w3tc_notes'] = array();
 | |
| 
 | |
| 		$hooks['filters']['w3tc_notes'][] = 'w3tc_notes_wordpress_seo';
 | |
| 		return $hooks;
 | |
| 	}
 | |
| 
 | |
| 	static private function show_notice() {
 | |
| 		$config = Dispatcher::config();
 | |
| 		if ( $config->is_extension_active( 'wordpress-seo' ) )
 | |
| 			return false;
 | |
| 
 | |
| 		if ( !self::criteria_match() )
 | |
| 			return false;
 | |
| 
 | |
| 		$state = Dispatcher::config_state();
 | |
| 		if ( $state->get_boolean( 'wordpress_seo.hide_note_suggest_activation' ) )
 | |
| 			return false;
 | |
| 
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	static public function w3tc_notes_wordpress_seo( $notes ) {
 | |
| 		if ( !self::show_notice() )
 | |
| 			return $notes;
 | |
| 
 | |
| 		$extension_id = 'wordpress-seo';
 | |
| 
 | |
| 		$notes[$extension_id] = sprintf(
 | |
| 			__(
 | |
| 				'Activating the <a href="%s">Yoast SEO</a> extension for W3 Total Cache may be helpful for your site. <a class="button" href="%s">Click here</a> to try it. %s',
 | |
| 				'w3-total-cache'
 | |
| 			),
 | |
| 			Util_Ui::admin_url( 'admin.php?page=w3tc_extensions#' . $extension_id ),
 | |
| 			Util_Ui::url( array( 'w3tc_extensions_activate' => $extension_id ) ),
 | |
| 			Util_Ui::button_link(
 | |
| 				__( 'Hide this message', 'w3-total-cache' ),
 | |
| 				Util_Ui::url(
 | |
| 					array(
 | |
| 						'w3tc_default_config_state' => 'y',
 | |
| 						'key'                       => 'wordpress_seo.hide_note_suggest_activation',
 | |
| 						'value'                     => 'true'
 | |
| 					)
 | |
| 				)
 | |
| 			)
 | |
| 		);
 | |
| 
 | |
| 		return $notes;
 | |
| 	}
 | |
| 
 | |
| 	static private function criteria_match() {
 | |
| 		return defined( 'WPSEO_VERSION' );
 | |
| 	}
 | |
| 
 | |
| 	public function activate() {
 | |
| 		try {
 | |
| 			$config = Dispatcher::config();
 | |
| 			$config->set( 'pgcache.prime.enabled', true );
 | |
| 			$config->set( 'pgcache.prime.sitemap', '/sitemap_index.xml' );
 | |
| 			$config->save();
 | |
| 		} catch ( \Exception $ex ) {}
 | |
| 	}
 | |
| 
 | |
| 	public function deactivate() {
 | |
| 		try {
 | |
| 			$config = Dispatcher::config();
 | |
| 			$config->set( 'pgcache.prime.enabled', false );
 | |
| 			$config->save();
 | |
| 		} catch ( \Exception $ex ) {}
 | |
| 	}
 | |
| }
 |