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 +109 -15 2.4.2 → 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;
@@ -45,8 +44,32 @@
45 44 case '2.2':
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...
48 + case '2.4':
49 + if ( autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' ) == '2.4.2' ) {
50 + $this->upgrade_from_2_4_2();
51 + }
52 + $this->upgrade_from_2_4();
53 + $major_update = false;
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;
49 72 }
50 73
51 74 if ( true === $major_update ) {
52 75 $this->on_major_version_update();
@@ -61,9 +84,9 @@
61 84 * @param string $target Target version to check against (ie., the currently running one).
62 85 */
63 86 public static function check_installed_and_update( $target )
64 87 {
65 - $db_version = get_option( 'autoptimize_version', 'none' );
88 + $db_version = autoptimizeOptionWrapper::get_option( 'autoptimize_version', 'none' );
66 89 if ( $db_version !== $target ) {
67 90 if ( 'none' === $db_version ) {
68 91 add_action( 'admin_notices', 'autoptimizeMain::notice_installed' );
69 92 } else {
@@ -71,9 +94,9 @@
71 94 $updater->run_needed_major_upgrades();
72 95 }
73 96
74 97 // Versions differed, upgrades happened if needed, store the new version.
75 - update_option( 'autoptimize_version', $target );
98 + autoptimizeOptionWrapper::update_option( 'autoptimize_version', $target );
76 99 }
77 100 }
78 101
79 102 /**
@@ -95,9 +118,9 @@
95 118 */
96 119 private function upgrade_from_1_6()
97 120 {
98 121 // If user was on version 1.6.x, force advanced options to be shown by default.
99 - update_option( 'autoptimize_show_adv', '1' );
122 + autoptimizeOptionWrapper::update_option( 'autoptimize_show_adv', '1' );
100 123
101 124 // And remove old options.
102 125 $to_delete_options = array(
103 126 'autoptimize_cdn_css',
@@ -120,15 +143,15 @@
120 143 */
121 144 private function upgrade_from_1_7()
122 145 {
123 146 if ( ! is_multisite() ) {
124 - $css_exclude = get_option( 'autoptimize_css_exclude' );
147 + $css_exclude = autoptimizeOptionWrapper::get_option( 'autoptimize_css_exclude' );
125 148 if ( empty( $css_exclude ) ) {
126 149 $css_exclude = 'admin-bar.min.css, dashicons.min.css';
127 150 } elseif ( false === strpos( $css_exclude, 'dashicons.min.css' ) ) {
128 151 $css_exclude .= ', dashicons.min.css';
129 152 }
130 - update_option( 'autoptimize_css_exclude', $css_exclude );
153 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_exclude', $css_exclude );
131 154 } else {
132 155 global $wpdb;
133 156 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
134 157 $original_blog_id = get_current_blog_id();
@@ -133,15 +156,15 @@
133 156 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
134 157 $original_blog_id = get_current_blog_id();
135 158 foreach ( $blog_ids as $blog_id ) {
136 159 switch_to_blog( $blog_id );
137 - $css_exclude = get_option( 'autoptimize_css_exclude' );
160 + $css_exclude = autoptimizeOptionWrapper::get_option( 'autoptimize_css_exclude' );
138 161 if ( empty( $css_exclude ) ) {
139 162 $css_exclude = 'admin-bar.min.css, dashicons.min.css';
140 163 } elseif ( false === strpos( $css_exclude, 'dashicons.min.css' ) ) {
141 164 $css_exclude .= ', dashicons.min.css';
142 165 }
143 - update_option( 'autoptimize_css_exclude', $css_exclude );
166 + autoptimizeOptionWrapper::update_option( 'autoptimize_css_exclude', $css_exclude );
144 167 }
145 168 switch_to_blog( $original_blog_id );
146 169 }
147 170 }
@@ -154,10 +177,10 @@
154 177 */
155 178 private function upgrade_from_1_9()
156 179 {
157 180 if ( ! is_multisite() ) {
158 - update_option( 'autoptimize_css_include_inline', 'on' );
159 - 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' );
160 183 } else {
161 184 global $wpdb;
162 185 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
163 186 $original_blog_id = get_current_blog_id();
@@ -162,10 +185,10 @@
162 185 $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
163 186 $original_blog_id = get_current_blog_id();
164 187 foreach ( $blog_ids as $blog_id ) {
165 188 switch_to_blog( $blog_id );
166 - update_option( 'autoptimize_css_include_inline', 'on' );
167 - 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' );
168 191 }
169 192 switch_to_blog( $original_blog_id );
170 193 }
171 194 }
@@ -195,12 +218,83 @@
195 218 * Helper for 2.2 autoptimize_extra_settings upgrade to avoid duplicate code
196 219 */
197 220 private function do_2_2_settings_update()
198 221 {
199 - $nogooglefont = get_option( 'autoptimize_css_nogooglefont', '' );
200 - $ao_extrasetting = get_option( 'autoptimize_extra_settings', '' );
222 + $nogooglefont = autoptimizeOptionWrapper::get_option( 'autoptimize_css_nogooglefont', '' );
223 + $ao_extrasetting = autoptimizeOptionWrapper::get_option( 'autoptimize_extra_settings', '' );
201 224 if ( ( $nogooglefont ) && ( empty( $ao_extrasetting ) ) ) {
202 - update_option( 'autoptimize_extra_settings', autoptimizeConfig::get_ao_extra_default_options() );
225 + autoptimizeOptionWrapper::update_option( 'autoptimize_extra_settings', autoptimizeConfig::get_ao_extra_default_options() );
203 226 }
204 227 delete_option( 'autoptimize_css_nogooglefont' );
228 + }
229 +
230 + /**
231 + * 2.4.2 introduced too many cronned ao_cachecheckers, make this right
232 + */
233 + private function upgrade_from_2_4_2() {
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 + }
205 299 }
206 300 }