= self::SCHEMA_VERSION ) { return false; } $changed = false; if ( $version < 1 ) { foreach ( self::LEGACY_V1_KEYS as $legacy_key ) { if ( array_key_exists( $legacy_key, $stored ) ) { unset( $stored[ $legacy_key ] ); $changed = true; } } } if ( $version < 2 && self::migrate_hide_unused() ) { $stored[ PluginSettings::KEY ] = array( 'hide_unused' => true ); $changed = true; } $stored['_schema_version'] = self::SCHEMA_VERSION; self::$cache = $stored; update_option( self::OPTION, $stored, true ); return $changed; } /** * Schema step 2: read and delete 1.8.0's per-user meta. * * @return bool Whether any user who can open the settings screen had the view switched on. */ private static function migrate_hide_unused() { $user_ids = get_users( array( 'meta_key' => self::LEGACY_HIDE_UNUSED_META, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key 'meta_value' => '1', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value 'fields' => 'ID', 'number' => -1, ) ); $hide = false; foreach ( $user_ids as $user_id ) { if ( user_can( (int) $user_id, Admin\SettingsPage::CAPABILITY ) ) { $hide = true; break; } } if ( $user_ids ) { delete_metadata( 'user', 0, self::LEGACY_HIDE_UNUSED_META, '', true ); } return $hide; } /** * Drop the runtime cache. Test seam. * * @return void */ public static function flush_cache() { self::$cache = null; } }