PluginProbe
Autoptimize / trunk
Autoptimize vtrunk
3.1.16 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 All 108 releases
← All changes | classes/autoptimizeVersionUpdatesHandler.php +98 -17 2.4.3 → trunk View file →
@@ -27,9 +27,8 @@
27 27 */
28 28 public function run_needed_major_upgrades()
29 29 {
30 30 $major_update = false;
31 -
32 31 switch ( $this->current_major_version ) {
33 32 case '1.6':
34 33 $this->upgrade_from_1_6();
35 34 $major_update = true;
@@ -46,13 +45,31 @@
46 45 $this->upgrade_from_2_2();
47 46 $major_update = true;
48 47 // No break, intentionally, so all upgrades are ran during a single request...
49 48 case '2.4':
50 - if ( get_option( 'autoptimize_version', 'none' ) == '2.4.2' ) {
49 + if ( autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' ) == '2.4.2' ) {
51 50 $this->upgrade_from_2_4_2();
52 51 }
52 + $this->upgrade_from_2_4();
53 53 $major_update = false;
54 54 // No break, intentionally, so all upgrades are ran during a single request...
55 + case '2.7':
56 + $this->upgrade_from_2_7();
57 + $major_update = true;
58 + // No break, intentionally, so all upgrades are ran during a single request...
59 + case '2.8':
60 + // nothing.
61 + case '2.9':
62 + if ( version_compare( autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' ), '2.9.999', 'lt' ) ) {
63 + $this->upgrade_from_2_9_before_compatibility();
64 + }
65 + $major_update = false;
66 + // No break, intentionally, so all upgrades are ran during a single request...
67 + case '3.0':
68 + // nothing.
69 + case '3.1':
70 + $this->upgrade_from_3_1();
71 + $major_update = false;
55 72 }
56 73
57 74 if ( true === $major_update ) {
58 75 $this->on_major_version_update();
@@ -67,9 +84,9 @@
67 84 * @param string $target Target version to check against (ie., the currently running one).
68 85 */
69 86 public static function check_installed_and_update( $target )
70 87 {
71 - $db_version = get_option( 'autoptimize_version', 'none' );
88 + $db_version = autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' );
72 89 if ( $db_version !== $target ) {
73 90 if ( 'none' === $db_version ) {
74 91 add_action( 'admin_notices', 'autoptimizeMain::notice_installed' );
75 92 } else {
@@ -77,9 +94,9 @@
77 94 $updater->run_needed_major_upgrades();
78 95 }
79 96
80 97 // Versions differed, upgrades happened if needed, store the new version.
81 - update_option( 'autoptimize_version', $target );
98 + autoptimizeOptionWrapper::update_option( 'autoptimize_version', $target );
82 99 }
83 100 }
84 101
85 102 /**
@@ -101,9 +118,9 @@
101 118 */
102 119 private function upgrade_from_1_6()
103 120 {
104 121 // If user was on version 1.6.x, force advanced options to be shown by default.
105 - update_option( 'autoptimize_show_adv', '1' );
122 + autoptimizeOptionWrapper::update_option( 'autoptimize_show_adv', '1' );
106 123
107 124 // And remove old options.
108 125 $to_delete_options = array(
109 126 'autoptimize_cdn_css',
@@ -126,15 +143,15 @@
126 143 */
127 144 private function upgrade_from_1_7()
128 145 {
129 146 if ( ! is_multisite() ) {
130 - $css_exclude = get_option( 'autoptimize_css_exclude' );
147 + $css_exclude = autoptimizeOptionWrapper::get_option( 'autoptimize_css_exclude' );
131 148 if ( empty( $css_exclude ) ) {
132 149 $css_exclude = 'admin-bar.min.css, dashicons.min.css';
133 150 } elseif ( false === strpos( $css_exclude, 'dashicons.min.css' ) ) {
134 151 $css_exclude .= ', dashicons.min.css';
135 152 }
136 - update_option( 'autoptimize_css_exclude', $css_exclude );
153 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_exclude', $css_exclude );
137 154 } else {
138 155 global $wpdb;
139 156 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
140 157 $original_blog_id = get_current_blog_id();
@@ -139,15 +156,15 @@
139 156 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
140 157 $original_blog_id = get_current_blog_id();
141 158 foreach ( $blog_ids as $blog_id ) {
142 159 switch_to_blog( $blog_id );
143 - $css_exclude = get_option( 'autoptimize_css_exclude' );
160 + $css_exclude = autoptimizeOptionWrapper::get_option( 'autoptimize_css_exclude' );
144 161 if ( empty( $css_exclude ) ) {
145 162 $css_exclude = 'admin-bar.min.css, dashicons.min.css';
146 163 } elseif ( false === strpos( $css_exclude, 'dashicons.min.css' ) ) {
147 164 $css_exclude .= ', dashicons.min.css';
148 165 }
149 - update_option( 'autoptimize_css_exclude', $css_exclude );
166 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_exclude', $css_exclude );
150 167 }
151 168 switch_to_blog( $original_blog_id );
152 169 }
153 170 }
@@ -160,10 +177,10 @@
160 177 */
161 178 private function upgrade_from_1_9()
162 179 {
163 180 if ( ! is_multisite() ) {
164 - update_option( 'autoptimize_css_include_inline', 'on' );
165 - update_option( 'autoptimize_js_include_inline', 'on' );
181 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_include_inline', 'on' );
182 + autoptimizeOptionWrapper::update_option( 'autoptimize_js_include_inline', 'on' );
166 183 } else {
167 184 global $wpdb;
168 185 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
169 186 $original_blog_id = get_current_blog_id();
@@ -168,10 +185,10 @@
168 185 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
169 186 $original_blog_id = get_current_blog_id();
170 187 foreach ( $blog_ids as $blog_id ) {
171 188 switch_to_blog( $blog_id );
172 - update_option( 'autoptimize_css_include_inline', 'on' );
173 - update_option( 'autoptimize_js_include_inline', 'on' );
189 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_include_inline', 'on' );
190 + autoptimizeOptionWrapper::update_option( 'autoptimize_js_include_inline', 'on' );
174 191 }
175 192 switch_to_blog( $original_blog_id );
176 193 }
177 194 }
@@ -201,12 +218,12 @@
201 218 * Helper for 2.2 autoptimize_extra_settings upgrade to avoid duplicate code
202 219 */
203 220 private function do_2_2_settings_update()
204 221 {
205 - $nogooglefont = get_option( 'autoptimize_css_nogooglefont', '' );
206 - $ao_extrasetting = get_option( 'autoptimize_extra_settings', '' );
222 + $nogooglefont = autoptimizeOptionWrapper::get_option( 'autoptimize_css_nogooglefont', '' );
223 + $ao_extrasetting = autoptimizeOptionWrapper::get_option( 'autoptimize_extra_settings', '' );
207 224 if ( ( $nogooglefont ) && ( empty( $ao_extrasetting ) ) ) {
208 - update_option( 'autoptimize_extra_settings', autoptimizeConfig::get_ao_extra_default_options() );
225 + autoptimizeOptionWrapper::update_option( 'autoptimize_extra_settings', autoptimizeConfig::get_ao_extra_default_options() );
209 226 }
210 227 delete_option( 'autoptimize_css_nogooglefont' );
211 228 }
212 229
@@ -213,7 +230,71 @@
213 230 /**
214 231 * 2.4.2 introduced too many cronned ao_cachecheckers, make this right
215 232 */
216 233 private function upgrade_from_2_4_2() {
217 - wp_clear_scheduled_hook( 'ao_cachechecker' );
234 + // below code by Thomas Sjolshagen (http://eighty20results.com/)
235 + // as found on https://www.paidmembershipspro.com/deleting-oldextra-cron-events/.
236 + $jobs = _get_cron_array();
237 +
238 + // Remove all ao_cachechecker cron jobs (for now).
239 + foreach ( $jobs as $when => $job ) {
240 + $name = key( $job );
241 +
242 + if ( false !== strpos( $name, 'ao_cachechecker' ) ) {
243 + unset( $jobs[ $when ] );
244 + }
245 + }
246 +
247 + // Save the data.
248 + _set_cron_array( $jobs );
249 + }
250 +
251 + /**
252 + * Migrate imgopt options from autoptimize_extra_settings to autoptimize_imgopt_settings
253 + */
254 + private function upgrade_from_2_4() {
255 + $extra_settings = autoptimizeOptionWrapper::get_option( 'autoptimize_extra_settings', '' );
256 + $imgopt_settings = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings', '' );
257 + if ( empty( $imgopt_settings ) && ! empty( $extra_settings ) ) {
258 + $imgopt_settings = autoptimizeConfig::get_ao_imgopt_default_options();
259 + if ( array_key_exists( 'autoptimize_extra_checkbox_field_5', $extra_settings ) ) {
260 + $imgopt_settings['autoptimize_imgopt_checkbox_field_1'] = $extra_settings['autoptimize_extra_checkbox_field_5'];
261 + }
262 + if ( array_key_exists( 'autoptimize_extra_select_field_6', $extra_settings ) ) {
263 + $imgopt_settings['autoptimize_imgopt_select_field_2'] = $extra_settings['autoptimize_extra_select_field_6'];
264 + }
265 + autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_settings', $imgopt_settings );
266 + }
267 + }
268 +
269 + /**
270 + * Remove CCSS request limit option + update jquery exclusion to include WordPress 5.6 jquery.min.js.
271 + */
272 + private function upgrade_from_2_7() {
273 + delete_option( 'autoptimize_ccss_rlimit' );
274 + $js_exclusions = get_option( 'autoptimize_js_exclude', '' );
275 + if ( strpos( $js_exclusions, 'js/jquery/jquery.js' ) !== false && strpos( $js_exclusions, 'js/jquery/jquery.min.js' ) === false ) {
276 + $js_exclusions .= ', js/jquery/jquery.min.js';
277 + autoptimizeOptionWrapper::update_option( 'autoptimize_js_exclude', $js_exclusions );
278 + }
279 + }
280 +
281 + /**
282 + * Set an option to indicate the AO installation predates the compatibility logic, this way we
283 + * can avoid adding compatibility code that is likely not needed and maybe not wanted as it
284 + * can introduce performance regressions.
285 + */
286 + private function upgrade_from_2_9_before_compatibility() {
287 + autoptimizeOptionWrapper::update_option( 'autoptimize_installed_before_compatibility', true );
288 + }
289 +
290 + /**
291 + * If the 404 handler is active, delete the current PHP-file so it can be re-created to fix the double underscore bug.
292 + */
293 + private function upgrade_from_3_1() {
294 + $_version_from_db = autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' );
295 + if ( autoptimizeCache::do_fallback() && 'none' !== $_version_from_db && version_compare( $_version_from_db, '3.1.2', 'lt' ) ) {
296 + $_fallback_php = trailingslashit( WP_CONTENT_DIR ) . 'autoptimize_404_handler.php';
297 + @unlink( $_fallback_php ); // @codingStandardsIgnoreLine
298 + }
218 299 }
219 300 }