PluginProbe
ElasticPress / 5.3.5
ElasticPress v5.3.5
5.3.5 5.3.4 3.6.5 3.6.6 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 5.0.0 5.0.1 5.0.2 All 108 releases
← All changes | includes/classes/Upgrades.php +88 -6 4.6.05.3.5 View file →
@@ -7,8 +7,9 @@
7 7 */
8 8
9 9 namespace ElasticPress;
10 10
11 +use ElasticPress\Features;
11 12 use ElasticPress\Utils;
12 13
13 14 if ( ! defined( 'ABSPATH' ) ) {
14 15 exit; // Exit if accessed directly.
@@ -47,8 +48,10 @@
47 48 '3.6.6' => [ 'upgrade_3_6_6', 'init' ],
48 49 '4.2.2' => [ 'upgrade_4_2_2', 'init' ],
49 50 '4.4.0' => [ 'upgrade_4_4_0', 'init' ],
50 51 '4.5.0' => [ 'upgrade_4_5_0', 'init' ],
52 + '4.7.0' => [ 'upgrade_4_7_0', 'init' ],
53 + '5.0.0' => [ 'upgrade_5_0_0', 'init' ],
51 54 ];
52 55
53 56 array_walk( $routines, [ $this, 'run_upgrade_routine' ] );
54 57
@@ -205,8 +208,87 @@
205 208 setup_roles();
206 209 }
207 210
208 211 /**
212 + * Upgrade routine of v4.7.0.
213 + *
214 + * Remove old total_fields_limit transients
215 + * Remove cached autosuggest requests
216 + *
217 + * @see https://github.com/10up/ElasticPress/pull/3552
218 + */
219 + public function upgrade_4_7_0() {
220 + global $wpdb;
221 +
222 + if ( is_multisite() ) {
223 + $sites = \get_sites( [ 'number' => 0 ] );
224 + foreach ( $sites as $site ) {
225 + $blog_option = get_blog_option( $site->blog_id, 'ep_indexable' );
226 + if ( $blog_option ) {
227 + update_site_meta( $site->blog_id, 'ep_indexable', $blog_option );
228 + }
229 + }
230 + }
231 +
232 + $transients = $wpdb->get_col( // phpcs:ignore WordPress.DB.DirectDatabaseQuery
233 + "SELECT option_name
234 + FROM {$wpdb->prefix}options
235 + WHERE option_name LIKE '_transient_ep_total_fields_limit_%'"
236 + );
237 +
238 + foreach ( $transients as $transient ) {
239 + $transient_name = str_replace( '_transient_', '', $transient );
240 + delete_site_transient( $transient_name );
241 + delete_transient( $transient_name );
242 + }
243 +
244 + if ( function_exists( 'wp_cache_supports' ) && wp_cache_supports( 'flush_group' ) ) {
245 + wp_cache_flush_group( 'ep_autosuggest' );
246 + }
247 + delete_transient( 'ep_autosuggest_query_request_cache' );
248 + }
249 +
250 + /**
251 + * Upgrade routine of v5.0.0.
252 + */
253 + public function upgrade_5_0_0() {
254 + $features_in_settings = Features::factory()->get_feature_settings();
255 + if ( ! empty( $features_in_settings ) ) {
256 + foreach ( $features_in_settings as $feature_slug => $feature_settings ) {
257 + $feature = Features::factory()->get_registered_feature( $feature_slug );
258 + if ( ! $feature ) {
259 + continue;
260 + }
261 +
262 + $settings_schema = $feature->get_settings_schema();
263 + foreach ( $settings_schema as $setting_schema ) {
264 + if ( ! isset( $feature_settings[ $setting_schema['key'] ] ) ) {
265 + continue;
266 + }
267 +
268 + $value = $feature_settings[ $setting_schema['key'] ];
269 +
270 + if ( ! in_array( $setting_schema['type'], [ 'checkbox', 'radio' ], true ) || ! is_bool( $value ) ) {
271 + continue;
272 + }
273 +
274 + $features_in_settings[ $feature_slug ][ $setting_schema['key'] ] = $value ? '1' : '0';
275 + }
276 + }
277 + Utils\update_option( 'ep_feature_settings', $features_in_settings );
278 + }
279 +
280 + /**
281 + * Remove the 'ep_last_index' option and store it as an entry of 'ep_sync_history'
282 + */
283 + $last_sync = Utils\get_option( 'ep_last_index', [] );
284 + if ( ! empty( $last_sync ) ) {
285 + Utils\delete_option( 'ep_last_index' );
286 + Utils\update_option( 'ep_sync_history', [ $last_sync ] );
287 + }
288 + }
289 +
290 + /**
209 291 * Adjust the upgrade sync notice to warn users about Instant Results.
210 292 *
211 293 * As 4.0.0 introduces this new feature and it requires a resync, admin users
212 294 * might want to enable the feature before the resync (and then resync only once.)
@@ -226,9 +308,9 @@
226 308 }
227 309
228 310 $feature_status = $instant_results->requirements_status();
229 311 $appended_message = '';
230 - if ( 1 >= $feature_status->code ) {
312 + if ( 1 >= $feature_status->get_code() ) {
231 313 if ( defined( 'EP_IS_NETWORK' ) && EP_IS_NETWORK ) {
232 314 $features_url = admin_url( 'network/admin.php?page=elasticpress' );
233 315 } else {
234 316 $features_url = admin_url( 'admin.php?page=elasticpress' );
@@ -235,11 +317,11 @@
235 317 }
236 318
237 319 $appended_message = wp_kses_post(
238 320 sprintf(
239 - /* translators: 1: <a> tag (Zendesk article); 2. </a>; 3: <a> tag (link to Features screen); 4. </a>; */
321 + /* translators: 1: <a> tag (Support article); 2. </a>; 3: <a> tag (link to Features screen); 4. </a>; */
240 322 __( '%1$sInstant Results%2$s is now available in ElasticPress, but requires a re-sync before activation. If you would like to use Instant Results, click %3$shere%4$s to activate the feature and start your sync.', 'elasticpress' ),
241 - '<a href="https://elasticpress.zendesk.com/hc/en-us/articles/360050447492#instant-results">',
323 + '<a href="https://www.elasticpress.io/resources/articles/configuring-elasticpress-via-the-plugin-dashboard/#instant-results">',
242 324 '</a>',
243 325 '<a href="' . $features_url . '">',
244 326 '</a>'
245 327 )
@@ -246,13 +328,13 @@
246 328 );
247 329 } else {
248 330 $appended_message = wp_kses_post(
249 331 sprintf(
250 - /* translators: 1: <a> tag (Zendesk article about Instant Results); 2. </a>; 3: <a> tag (Zendesk article about self hosted Elasticsearch setups); 4. </a>; */
332 + /* translators: 1: <a> tag (Support article about Instant Results); 2. </a>; 3: <a> tag (Support article about self hosted Elasticsearch setups); 4. </a>; */
251 333 __( '%1$sInstant Results%2$s is now available in ElasticPress, but requires a re-sync before activation. If you would like to use Instant Results, since you are not using ElasticPress.io, you will also need to %3$sinstall and configure a PHP proxy%4$s.', 'elasticpress' ),
252 - '<a href="https://elasticpress.zendesk.com/hc/en-us/articles/360050447492#instant-results">',
334 + '<a href="https://www.elasticpress.io/resources/articles/configuring-elasticpress-via-the-plugin-dashboard/#instant-results">',
253 335 '</a>',
254 - '<a href="https://elasticpress.zendesk.com/hc/en-us/articles/4413938931853-Considerations-for-self-hosted-Elasticsearch-setups">',
336 + '<a href="https://www.elasticpress.io/resources/articles/considerations-for-self-hosted-elasticsearch-setups/">',
255 337 '</a>'
256 338 )
257 339 );
258 340 }