exit_uninstaller(); } // EP_MANUAL_SETTINGS_RESET is used by the `settings-reset` WP-CLI command. if ( ! defined( 'EP_MANUAL_SETTINGS_RESET' ) || ! EP_MANUAL_SETTINGS_RESET ) { // Not uninstalling. if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) || ! WP_UNINSTALL_PLUGIN ) { $this->exit_uninstaller(); } // Not uninstalling this plugin. if ( dirname( WP_UNINSTALL_PLUGIN ) !== dirname( plugin_basename( __FILE__ ) ) ) { $this->exit_uninstaller(); } } // Uninstall ElasticPress. $this->clean_options_and_transients(); } /** * Delete all the options in a single site context. */ protected function delete_options() { foreach ( $this->options as $option ) { delete_option( $option ); } } /** * Delete all the transients in a single site context. */ protected function delete_transients() { foreach ( $this->transients as $transient ) { delete_transient( $transient ); } } /** * Delete all transients of the Related Posts feature. */ protected function delete_related_posts_transients() { global $wpdb; $related_posts_transients = $wpdb->get_col( "SELECT option_name FROM {$wpdb->prefix}options WHERE option_name LIKE '_transient_ep_related_posts_%'" ); foreach ( $related_posts_transients as $related_posts_transient ) { $related_posts_transient = str_replace( '_transient_', '', $related_posts_transient ); delete_site_transient( $related_posts_transient ); delete_transient( $related_posts_transient ); } } /** * Cleanup options and transients * * Deletes ElasticPress options and transients. * * @since 4.2.0 */ protected function clean_options_and_transients() { if ( is_multisite() ) { foreach ( $this->options as $option ) { delete_site_option( $option ); } foreach ( $this->transients as $transient ) { delete_site_transient( $transient ); } $sites = get_sites(); foreach ( $sites as $site ) { switch_to_blog( $site->blog_id ); $this->delete_options(); $this->delete_transients(); $this->delete_related_posts_transients(); restore_current_blog(); } } else { $this->delete_options(); $this->delete_transients(); $this->delete_related_posts_transients(); } } /** * Cleanup options (deprecated, kept for documenting reasons.) * * @since 1.7 * @return void * @see clean_options_and_transients */ protected static function clean_options() { _deprecated_function( __FUNCTION__, '4.2.0', '\EP_Uninstaller->clean_options_and_transients()' ); } /** * Exit uninstaller * * Gracefully exit the uninstaller if we should not be here * * @since 1.7 * @return void */ protected function exit_uninstaller() { status_header( 404 ); exit; } } new EP_Uninstaller();