170 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * File: Generic_WidgetStats.php
 | |
|  *
 | |
|  * @since   2.7.0
 | |
|  * @package W3TC
 | |
|  */
 | |
| 
 | |
| namespace W3TC;
 | |
| 
 | |
| /**
 | |
|  * Class Generic_WidgetStats
 | |
|  */
 | |
| class Generic_WidgetStats {
 | |
| 	/**
 | |
| 	 * Dashboard setup action
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public static function admin_init_w3tc_dashboard() {
 | |
| 		$o = new Generic_WidgetStats();
 | |
| 
 | |
| 		add_action( 'w3tc_widget_setup', array( $o, 'wp_dashboard_setup' ), 700 );
 | |
| 		add_action( 'w3tc_network_dashboard_setup', array( $o, 'wp_dashboard_setup' ), 700 );
 | |
| 		wp_enqueue_script( 'w3tc-dashboard', plugins_url( 'pub/js/google-charts.js', W3TC_FILE ), array(), W3TC_VERSION, true );
 | |
| 		wp_enqueue_script( 'w3tc-stats-widget', plugins_url( 'Generic_WidgetStats.js', W3TC_FILE ), array(), W3TC_VERSION, true );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * W3TC dashboard Stats widgets.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function wp_dashboard_setup() {
 | |
| 		Util_Widget::add(
 | |
| 			'w3tc_page_cache',
 | |
| 			'<div class="w3tc-widget-w3tc-logo"></div><div class="w3tc-widget-text">' . __( 'Page Cache: Hits', 'w3-total-cache' ) . '</div>',
 | |
| 			array( $this, 'page_cache_widget_form' ),
 | |
| 			null,
 | |
| 			'normal'
 | |
| 		);
 | |
| 
 | |
| 		Util_Widget::add(
 | |
| 			'w3tc_object_cache',
 | |
| 			'<div class="w3tc-widget-w3tc-logo"></div><div class="w3tc-widget-text">' . __( 'Object Cache: Hits', 'w3-total-cache' ) . '</div>',
 | |
| 			array( $this, 'object_cache_widget_form' ),
 | |
| 			null,
 | |
| 			'normal'
 | |
| 		);
 | |
| 
 | |
| 		Util_Widget::add(
 | |
| 			'w3tc_database_cache',
 | |
| 			'<div class="w3tc-widget-w3tc-logo"></div><div class="w3tc-widget-text">' . __( 'Database Cache: Hits', 'w3-total-cache' ) . '</div>',
 | |
| 			array( $this, 'database_cache_widget_form' ),
 | |
| 			null,
 | |
| 			'normal'
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Web Requests widget content.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function page_cache_widget_form() {
 | |
| 		$chart = self::get_chart_content(
 | |
| 			array(
 | |
| 				'chart_id'           => 'page_cache_chart',
 | |
| 				'setting_key'        => 'pgcache.enabled',
 | |
| 				'cache_enable_label' => __( 'Enable PageCache', 'w3-total-cache' ),
 | |
| 				'cache_enable_url'   => Util_Ui::admin_url( 'admin.php?page=w3tc_general#page_cache' ),
 | |
| 			)
 | |
| 		);
 | |
| 		echo wp_kses( $chart, self::get_allowed_tags() );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Object Cache widget content.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function object_cache_widget_form() {
 | |
| 		$chart = self::get_chart_content(
 | |
| 			array(
 | |
| 				'chart_id'           => 'object_cache_chart',
 | |
| 				'setting_key'        => 'objectcache.enabled',
 | |
| 				'cache_enable_label' => __( 'Enable ObjectCache', 'w3-total-cache' ),
 | |
| 				'cache_enable_url'   => Util_Ui::admin_url( 'admin.php?page=w3tc_general#object_cache' ),
 | |
| 			)
 | |
| 		);
 | |
| 		echo wp_kses( $chart, self::get_allowed_tags() );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Database widget content.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function database_cache_widget_form() {
 | |
| 		$chart = self::get_chart_content(
 | |
| 			array(
 | |
| 				'chart_id'           => 'database_cache_chart',
 | |
| 				'setting_key'        => 'dbcache.enabled',
 | |
| 				'cache_enable_label' => __( 'Enable DBCache', 'w3-total-cache' ),
 | |
| 				'cache_enable_url'   => Util_Ui::admin_url( 'admin.php?page=w3tc_general#database_cache' ),
 | |
| 			)
 | |
| 		);
 | |
| 		echo wp_kses( $chart, self::get_allowed_tags() );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get button link allowed tags.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @param array $chart_config Chart configuration array.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public static function get_chart_content( $chart_config ) {
 | |
| 		$config        = Dispatcher::config();
 | |
| 		$chart_id      = $chart_config['chart_id'];
 | |
| 		$chart_content = '';
 | |
| 		if ( ! Util_Environment::is_w3tc_pro( $config ) ) {
 | |
| 			$chart_id     .= '_ad';
 | |
| 			$chart_content = '<input type="button" class="button-primary button-buy-plugin {nonce: \'' . esc_attr( wp_create_nonce( 'w3tc' ) ) . '\'}" data-src="' . $chart_id . '_cache_chart" value="' . esc_html__( 'Unlock Feature', 'w3-total-cache' ) . '" />';
 | |
| 		} elseif ( ! $config->get_boolean( 'stats.enabled' ) ) {
 | |
| 			$chart_id     .= '_enable';
 | |
| 			$chart_content = Util_Ui::button_link( __( 'Enable Statistics', 'w3-total-cache' ), Util_Ui::admin_url( 'admin.php?page=w3tc_general#stats' ), false, 'button-primary' );
 | |
| 		} elseif ( ! $config->get_boolean( $chart_config['setting_key'] ) ) {
 | |
| 			$chart_id     .= '_subenable';
 | |
| 			$chart_content = Util_Ui::button_link( $chart_config['cache_enable_label'], $chart_config['cache_enable_url'], false, 'button-primary' );
 | |
| 		}
 | |
| 		return '<div id="' . $chart_id . '">' . $chart_content . '</div>';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get button link allowed tags.
 | |
| 	 *
 | |
| 	 * @since 2.7.0
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public static function get_allowed_tags() {
 | |
| 		return array(
 | |
| 			'div'   => array(
 | |
| 				'id' => array(),
 | |
| 			),
 | |
| 			'input' => array(
 | |
| 				'type'     => array(),
 | |
| 				'name'     => array(),
 | |
| 				'class'    => array(),
 | |
| 				'value'    => array(),
 | |
| 				'onclick'  => array(),
 | |
| 				'data-src' => array(),
 | |
| 			),
 | |
| 		);
 | |
| 	}
 | |
| }
 |