PluginProbe
Autoptimize / 3.1.4
Autoptimize v3.1.4
2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 All 107 releases
← All changes | classes/autoptimizeToolbar.php +104 -71 2.2.23.1.4 View file →
@@ -1,35 +1,48 @@
1 1 <?php
2 -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2 +/**
3 + * Handles toolbar-related stuff.
4 + */
5 +
6 +if ( ! defined( 'ABSPATH' ) ) {
7 + exit;
8 +}
9 +
3 10 class autoptimizeToolbar
4 11 {
5 12 public function __construct()
6 13 {
7 - // If Cache is not available we don't add the Autoptimize Toolbar
8 - if( ! autoptimizeCache::cacheavail() ) {
14 + // If Cache is not available we don't add the toolbar.
15 + if ( ! autoptimizeCache::cacheavail() ) {
9 16 return;
10 17 }
18 +
11 19 // Load admin toolbar feature once WordPress, all plugins, and the theme are fully loaded and instantiated.
12 - add_action( 'wp_loaded', array( $this, 'load_toolbar' ) );
20 + if ( is_admin() ) {
21 + add_action( 'wp_loaded', array( $this, 'load_toolbar' ) );
22 + } else {
23 + // to avoid AMP complaining about the AMP conditional being checked too early.
24 + add_action( 'wp', array( $this, 'load_toolbar' ) );
25 + }
13 26 }
14 27
15 28 public function load_toolbar()
16 29 {
17 - // Check permissions and that toolbar is not hidden via filter
18 - if ( current_user_can( 'manage_options' ) && apply_filters( 'autoptimize_filter_toolbar_show', true ) ) {
19 - // Create a handler for the AJAX toolbar requests
30 + // Check permissions and that toolbar is not hidden via filter.
31 + if ( current_user_can( 'manage_options' ) && apply_filters( 'autoptimize_filter_toolbar_show', true ) && ! autoptimizeMain::is_amp_markup( '' ) ) {
32 +
33 + // Create a handler for the AJAX toolbar requests.
20 34 add_action( 'wp_ajax_autoptimize_delete_cache', array( $this, 'delete_cache' ) );
21 35
22 - // Load custom styles, scripts and menu only when needed
36 + // Load custom styles, scripts and menu only when needed.
23 37 if ( is_admin_bar_showing() ) {
24 38 if ( is_admin() ) {
25 - // in the case of back-end
26 39 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
27 40 } else {
28 - // in the case of front-end
29 41 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
30 42 }
31 - // Add the Autoptimize Toolbar to the Admin bar
43 +
44 + // Add the Autoptimize Toolbar to the Admin bar.
32 45 add_action( 'admin_bar_menu', array( $this, 'add_toolbar' ), 100 );
33 46 }
34 47 }
35 48 }
@@ -37,98 +50,118 @@
37 50 public function add_toolbar()
38 51 {
39 52 global $wp_admin_bar;
40 53
41 - // Retrieve the Autoptimize Cache Stats information
54 + // Retrieve the Autoptimize Cache Stats information.
42 55 $stats = autoptimizeCache::stats();
43 56
44 - // Set the Max Size recommended for cache files
57 + // Set the Max Size recommended for cache files.
45 58 $max_size = apply_filters( 'autoptimize_filter_cachecheck_maxsize', 512 * 1024 * 1024 );
46 59
47 - // Retrieve the current Total Files in cache
60 + // Retrieve the current Total Files in cache.
48 61 $files = $stats[0];
49 - // Retrieve the current Total Size of the cache
62 + // Retrieve the current Total Size of the cache.
50 63 $bytes = $stats[1];
64 + $size = $this->format_filesize( $bytes );
51 65
52 - $size = $this->format_filesize($bytes);
53 -
54 - // We calculated the percentage of cache used
66 + // Calculate the percentage of cache used.
55 67 $percentage = ceil( $bytes / $max_size * 100 );
56 68 if ( $percentage > 100 ) {
57 69 $percentage = 100;
58 70 }
59 - // We define the type of color indicator for the current state of cache size.
60 - // "green" if the size is less than 80% of the total recommended
61 - // "orange" if over 80%
62 - // "red" if over 100%
63 - $color = ( $percentage == 100 ) ? 'red' : ( ( $percentage > 80 ) ? 'orange' : 'green' );
64 71
72 + /**
73 + * We define the type of color indicator for the current state of cache size:
74 + * - "green" if the size is less than 80% of the total recommended.
75 + * - "orange" if over 80%.
76 + * - "red" if over 100%.
77 + */
78 + $color = ( 100 == $percentage ) ? 'red' : ( ( $percentage > 80 ) ? 'orange' : 'green' );
79 +
65 80 // Create or add new items into the Admin Toolbar.
66 - // Main Autoptimize node
67 - $wp_admin_bar->add_node( array(
68 - 'id' => 'autoptimize',
69 - 'title' => '<span class="ab-icon"></span><span class="ab-label">' . __( "Autoptimize", 'autoptimize' ) . '</span>',
70 - 'href' => admin_url( 'options-general.php?page=autoptimize' ),
71 - 'meta' => array( 'class' => 'bullet-' . $color )
72 - ));
81 + // Main "Autoptimize" node.
82 + $_my_name = apply_filters( 'autoptimize_filter_settings_is_pro', false ) ? __( 'Autoptimize Pro', 'autoptimize' ) : __( 'Autoptimize', 'autoptimize' );
83 + $wp_admin_bar->add_node(
84 + array(
85 + 'id' => 'autoptimize',
86 + 'title' => '<span class="ab-icon"></span><span class="ab-label">' . $_my_name . '</span>',
87 + 'href' => admin_url( 'options-general.php?page=autoptimize' ),
88 + 'meta' => array( 'class' => 'bullet-' . $color ),
89 + )
90 + );
73 91
74 - // Cache Info node
75 - $wp_admin_bar->add_node( array(
76 - 'id' => 'autoptimize-cache-info',
77 - 'title' => '<p>' . __( "Cache Info", 'autoptimize' ) . '</p>' .
78 - '<div class="autoptimize-radial-bar" percentage="' . $percentage . '">' .
79 - '<div class="circle">'.
80 - '<div class="mask full"><div class="fill bg-' . $color . '"></div></div>'.
81 - '<div class="mask half"><div class="fill bg-' . $color . '"></div></div>'.
82 - '<div class="shadow"></div>'.
83 - '</div>'.
84 - '<div class="inset"><div class="percentage"><div class="numbers ' . $color . '">' . $percentage . '%</div></div></div>'.
85 - '</div>' .
86 - '<table>' .
87 - '<tr><td>' . __( "Size", 'autoptimize' ) . ':</td><td class="size ' . $color . '">' . $size . '</td></tr>' .
88 - '<tr><td>' . __( "Files", 'autoptimize' ) . ':</td><td class="files white">' . $files . '</td></tr>' .
89 - '</table>',
90 - 'parent' => 'autoptimize'
91 - ));
92 + // "Cache Info" node.
93 + $wp_admin_bar->add_node(
94 + array(
95 + 'id' => 'autoptimize-cache-info',
96 + 'title' => '<p>' . __( 'CSS/ JS Cache Info', 'autoptimize' ) . '</p>' .
97 + '<div class="autoptimize-radial-bar" percentage="' . $percentage . '">' .
98 + '<div class="autoptimize-circle">' .
99 + '<div class="mask full"><div class="fill bg-' . $color . '"></div></div>' .
100 + '<div class="mask half"><div class="fill bg-' . $color . '"></div></div>' .
101 + '<div class="shadow"></div>' .
102 + '</div>' .
103 + '<div class="inset"><div class="percentage"><div class="numbers ' . $color . '">' . $percentage . '%</div></div></div>' .
104 + '</div>' .
105 + '<table>' .
106 + '<tr><td>' . __( 'Size', 'autoptimize' ) . ':</td><td class="size ' . $color . '">' . $size . '</td></tr>' .
107 + '<tr><td>' . __( 'Files', 'autoptimize' ) . ':</td><td class="files white">' . $files . '</td></tr>' .
108 + '</table>',
109 + 'parent' => 'autoptimize',
110 + )
111 + );
92 112
93 - // Delete Cache node
94 - $wp_admin_bar->add_node( array(
95 - 'id' => 'autoptimize-delete-cache',
96 - 'title' => __( "Delete Cache", 'autoptimize' ),
97 - 'parent' => 'autoptimize'
98 - ));
113 + // "Delete Cache" node.
114 + $wp_admin_bar->add_node(
115 + array(
116 + 'id' => 'autoptimize-delete-cache',
117 + 'title' => __( 'Clear CSS/ JS Cache', 'autoptimize' ),
118 + 'parent' => 'autoptimize',
119 + )
120 + );
99 121 }
100 122
101 123 public function delete_cache()
102 124 {
103 125 check_ajax_referer( 'ao_delcache_nonce', 'nonce' );
126 +
104 127 $result = false;
105 - if ( current_user_can( 'manage_options' ) )
106 - {
107 - // We call the function for cleaning the Autoptimize cache
128 + if ( current_user_can( 'manage_options' ) ) {
129 + // We call the function for cleaning the Autoptimize cache.
108 130 $result = autoptimizeCache::clearall();
109 131 }
132 +
110 133 wp_send_json( $result );
111 134 }
112 135
113 136 public function enqueue_scripts()
114 137 {
115 - // Autoptimize Toolbar Styles
116 - wp_enqueue_style( 'autoptimize-toolbar', plugins_url( '/static/toolbar.css', __FILE__ ), array(), time(), 'all' );
117 - // Autoptimize Toolbar Javascript
118 - wp_enqueue_script( 'autoptimize-toolbar', plugins_url( '/static/toolbar.js', __FILE__ ), array( 'jquery' ), time(), true );
119 - // Localizes a registered script with data for a JavaScript variable. (We need this for the AJAX work properly in the front-end mode)
120 - wp_localize_script( 'autoptimize-toolbar', 'autoptimize_ajax_object', array(
121 - 'ajaxurl' => admin_url( 'admin-ajax.php' ),
122 - 'error_msg' => sprintf( __( 'Your Autoptimize cache might not have been purged successfully, please check on the <a href=%s>Autoptimize settings page</a>.', 'autoptimize' ), admin_url( 'options-general.php?page=autoptimize' ) . ' style="white-space:nowrap;"' ),
123 - 'dismiss_msg' => __( 'Dismiss this notice.' ),
124 - 'nonce' => wp_create_nonce( 'ao_delcache_nonce' )
125 - ) );
138 + // Autoptimize Toolbar Styles.
139 + wp_enqueue_style( 'autoptimize-toolbar', plugins_url( '/static/toolbar.css', __FILE__ ), array(), AUTOPTIMIZE_PLUGIN_VERSION, 'all' );
140 +
141 + // Autoptimize Toolbar Javascript.
142 + wp_enqueue_script( 'autoptimize-toolbar', plugins_url( '/static/toolbar.js', __FILE__ ), array( 'jquery' ), AUTOPTIMIZE_PLUGIN_VERSION, true );
143 +
144 + // Localizes a registered script with data for a JavaScript variable.
145 + // Needed for the AJAX to work properly on the frontend.
146 + wp_localize_script(
147 + 'autoptimize-toolbar',
148 + 'autoptimize_ajax_object',
149 + array(
150 + 'ajaxurl' => admin_url( 'admin-ajax.php' ),
151 + // translators: links to the Autoptimize settings page.
152 + 'error_msg' => sprintf( __( 'Your Autoptimize cache might not have been purged successfully, please check on the <a href=%s>Autoptimize settings page</a>.', 'autoptimize' ), admin_url( 'options-general.php?page=autoptimize' ) . ' style="white-space:nowrap;"' ),
153 + 'dismiss_msg' => __( 'Dismiss this notice.' ),
154 + 'nonce' => wp_create_nonce( 'ao_delcache_nonce' ),
155 + )
156 + );
126 157 }
127 158
128 - public function format_filesize($bytes, $decimals = 2)
159 + public function format_filesize( $bytes, $decimals = 2 )
129 160 {
130 161 $units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' );
131 - for ($i = 0; ($bytes / 1024) > 0.9; $i++, $bytes /= 1024) {}
132 - return sprintf( "%1.{$decimals}f %s", round( $bytes, $decimals ), $units[$i] );
162 +
163 + for ( $i = 0; ( $bytes / 1024) > 0.9; $i++, $bytes /= 1024 ) {} // @codingStandardsIgnoreLine
164 +
165 + return sprintf( "%1.{$decimals}f %s", round( $bytes, $decimals ), $units[ $i ] );
133 166 }
134 167 }