<?php class S2_Uninstall { public function uninstall() { global $wp_version, $wpmu_version; // Is Subscribe2 free active if ( is_plugin_active( 'subscribe2/subscribe2.php' ) ) { return; } // Is this WordPressMU or not? if ( isset( $wpmu_version ) || strpos( $wp_version, 'wordpress-mu' ) ) { $s2_mu = true; } if ( function_exists( 'is_multisite' ) && is_multisite() ) { $s2_mu = true; } if ( isset( $s2_mu ) && true === $s2_mu ) { global $wpdb; $blogs = $wpdb->get_col( "SELECT blog_id FROM {$wpdb->blogs}" ); foreach ( $blogs as $blog ) { switch_to_blog( $blog ); $this->clean_database(); restore_current_blog(); } } else { $this->clean_database(); } } private function clean_database() { global $wpdb; // delete entry from wp_options table delete_option( 'subscribe2_options' ); // delete legacy entry from wp-options table delete_option( 's2_future_posts' ); // remove and scheduled events wp_clear_scheduled_hook( 's2_digest_cron' ); // delete usermeta data for registered users // use LIKE and % wildcard as meta_key names are prepended on WPMU // and s2_cat is appended with category ID integer $wpdb->query( "DELETE from $wpdb->usermeta WHERE meta_key LIKE '%s2_cat%'" ); $wpdb->query( "DELETE from $wpdb->usermeta WHERE meta_key LIKE '%s2_subscribed'" ); $wpdb->query( "DELETE from $wpdb->usermeta WHERE meta_key LIKE '%s2_format'" ); $wpdb->query( "DELETE from $wpdb->usermeta WHERE meta_key LIKE '%s2_autosub'" ); // delete any postmeta data that supressed notifications $wpdb->query( "DELETE from $wpdb->postmeta WHERE meta_key = 's2mail'" ); // drop the subscribe2 table $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}subscribe2" ); } }