139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace W3TC;
 | 
						|
/**
 | 
						|
 * W3 GenesisExtension module
 | 
						|
 */
 | 
						|
 | 
						|
class Extension_Genesis_Plugin_Admin {
 | 
						|
	function run() {
 | 
						|
		add_action( 'w3tc_extension_page_genesis.theme', array(
 | 
						|
				'\W3TC\Extension_Genesis_Page',
 | 
						|
				'w3tc_extension_page_genesis_theme'
 | 
						|
			) );
 | 
						|
		add_filter( 'w3tc_errors', array( $this, 'w3tc_errors' ) );
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 *
 | 
						|
	 *
 | 
						|
	 * @param unknown $extensions
 | 
						|
	 * @param Config  $config
 | 
						|
	 * @return mixed
 | 
						|
	 */
 | 
						|
	static public function w3tc_extensions( $extensions, $config ) {
 | 
						|
		$requirements = array();
 | 
						|
 | 
						|
		if ( !self::is_theme_found() )
 | 
						|
			$requirements[] =
 | 
						|
				'Optimizes "Genesis Framework" version >= 1.9.0, which is not active';
 | 
						|
 | 
						|
		if ( !$config->is_extension_active( 'fragmentcache' ) )
 | 
						|
			$requirements[] = 'Activate "Fragment Cache" extension first';
 | 
						|
 | 
						|
		$extensions['genesis.theme'] = array (
 | 
						|
			'name' => 'Genesis Framework by StudioPress',
 | 
						|
			'author' => 'W3 EDGE',
 | 
						|
			'description' => 'Provides 30-60% improvement in page generation time for the Genesis Framework by Copyblogger Media.',
 | 
						|
			'author_uri' => 'https://www.w3-edge.com/',
 | 
						|
			'extension_uri' => 'https://www.w3-edge.com/',
 | 
						|
			'extension_id' => 'genesis.theme',
 | 
						|
			'pro_feature' => true,
 | 
						|
			'pro_excerpt' => __( 'Increase the performance of themes powered by the Genesis Theme Framework by up to 60%.', 'w3-total-cache'),
 | 
						|
			'pro_description' => array(),
 | 
						|
			'settings_exists' => true,
 | 
						|
			'version' => '0.1',
 | 
						|
			'enabled' => empty( $requirements ),
 | 
						|
			'requirements' => implode( ', ', $requirements ),
 | 
						|
			'path' => 'w3-total-cache/Extension_Genesis_Plugin.php'
 | 
						|
		);
 | 
						|
 | 
						|
		return $extensions;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Show errors in wp-admin
 | 
						|
	 */
 | 
						|
	function w3tc_errors( $errors ) {
 | 
						|
		$c = Dispatcher::config();
 | 
						|
 | 
						|
		if ( !$c->is_extension_active_frontend( 'fragmentcache' ) ) {
 | 
						|
			$errors['genesis_fragmentcache_disabled'] =
 | 
						|
				__( 'Please enable <strong>Fragment Cache</strong> module to make sure <strong>Genesis extension</strong> works properly.',
 | 
						|
				'w3-total-cache' );
 | 
						|
		}
 | 
						|
 | 
						|
		return $errors;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	static private function is_theme_found() {
 | 
						|
		if ( !is_network_admin() )
 | 
						|
			return ( defined( 'PARENT_THEME_NAME' ) &&
 | 
						|
				PARENT_THEME_NAME == 'Genesis' );
 | 
						|
 | 
						|
		$themes = Util_Theme::get_themes();
 | 
						|
		$theme_found = false;
 | 
						|
		foreach ( $themes as $theme ) {
 | 
						|
			if ( strtolower( $theme->Template ) == 'genesis' )
 | 
						|
				return true;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 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_genesis_theme';
 | 
						|
		return $hooks;
 | 
						|
	}
 | 
						|
 | 
						|
	static private function show_notice() {
 | 
						|
		$config = Dispatcher::config();
 | 
						|
		if ( $config->is_extension_active( 'genesis.theme' ) )
 | 
						|
			return false;
 | 
						|
 | 
						|
		if ( !self::is_theme_found() )
 | 
						|
			return false;
 | 
						|
 | 
						|
		$state = Dispatcher::config_state();
 | 
						|
		if ( $state->get_boolean( 'genesis.theme.hide_note_suggest_activation' ) )
 | 
						|
			return false;
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	static public function w3tc_notes_genesis_theme( $notes ) {
 | 
						|
		if ( !self::show_notice() )
 | 
						|
			return $notes;
 | 
						|
 | 
						|
		$extension_id = 'genesis.theme';
 | 
						|
 | 
						|
		$notes[$extension_id] = sprintf(
 | 
						|
			__( 'Activating the <a href="%s">Genesis Theme</a> extension for W3 Total Cache may be helpful for your site. <a 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' => 'genesis.theme.hide_note_suggest_activation',
 | 
						|
						'value' => 'true' ) ) ) );
 | 
						|
 | 
						|
		return $notes;
 | 
						|
	}
 | 
						|
}
 |