v1.8.1
This commit is contained in:
parent
7b7fff5246
commit
b6a55a7f04
27 changed files with 2221 additions and 45 deletions
|
|
@ -3,7 +3,7 @@
|
|||
* Fired when the plugin is uninstalled.
|
||||
*
|
||||
* Drops all plugin data only if the user has explicitly opted in via Settings.
|
||||
* By default, data is preserved.
|
||||
* By default, data is preserved. On Multisite, iterates all sites.
|
||||
*
|
||||
* @package MediaRightsAudit
|
||||
*/
|
||||
|
|
@ -12,22 +12,79 @@ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
|||
exit;
|
||||
}
|
||||
|
||||
$raw = get_option( 'robotstxt_mediaaudit_settings', array() );
|
||||
$settings = is_array( $raw ) ? $raw : array();
|
||||
$delete = ! empty( $settings['delete_on_uninstall'] );
|
||||
|
||||
if ( ! $delete ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wpdb;
|
||||
|
||||
// Drop tables in reverse dependency order.
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_dismissed_alerts`" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_provider_status`" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_external_results`" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_usage`" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_index`" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
if ( is_multisite() ) {
|
||||
// In Multisite, read the delete preference from the network settings option.
|
||||
$net_raw = get_site_option( 'robotstxt_mediaaudit_network_settings', array() );
|
||||
$net_opts = is_array( $net_raw ) ? $net_raw : array();
|
||||
$delete = ! empty( $net_opts['delete_on_uninstall'] );
|
||||
|
||||
delete_option( 'robotstxt_mediaaudit_db_version' );
|
||||
delete_option( 'robotstxt_mediaaudit_settings' );
|
||||
// Also check any site that may have its own setting.
|
||||
if ( ! $delete ) {
|
||||
// Check the main site's per-site setting as a fallback.
|
||||
switch_to_blog( get_main_site_id() );
|
||||
$site_raw = get_option( 'robotstxt_mediaaudit_settings', array() );
|
||||
$site_opts = is_array( $site_raw ) ? $site_raw : array();
|
||||
$delete = ! empty( $site_opts['delete_on_uninstall'] );
|
||||
restore_current_blog();
|
||||
}
|
||||
|
||||
if ( ! $delete ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Drop per-site tables for every site.
|
||||
$sites = get_sites(
|
||||
array(
|
||||
'fields' => 'ids',
|
||||
'number' => 0,
|
||||
)
|
||||
);
|
||||
if ( is_array( $sites ) ) {
|
||||
foreach ( $sites as $site_id ) {
|
||||
switch_to_blog( (int) $site_id );
|
||||
|
||||
// phpcs:disable WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_dismissed_alerts`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_provider_status`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_external_results`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_usage`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_index`" );
|
||||
// phpcs:enable WordPress.DB.DirectDatabaseQuery
|
||||
|
||||
delete_option( 'robotstxt_mediaaudit_db_version' );
|
||||
delete_option( 'robotstxt_mediaaudit_settings' );
|
||||
|
||||
restore_current_blog();
|
||||
}
|
||||
}
|
||||
|
||||
// Drop the network mirror table (lives in main site DB, uses base_prefix).
|
||||
// phpcs:ignore WordPress.DB.DirectDatabaseQuery,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->base_prefix}mra_network_index`" );
|
||||
|
||||
delete_site_option( 'robotstxt_mediaaudit_network_mode' );
|
||||
delete_site_option( 'robotstxt_mediaaudit_network_settings' );
|
||||
|
||||
} else {
|
||||
// Single-site uninstall.
|
||||
$raw = get_option( 'robotstxt_mediaaudit_settings', array() );
|
||||
$settings = is_array( $raw ) ? $raw : array();
|
||||
$delete = ! empty( $settings['delete_on_uninstall'] );
|
||||
|
||||
if ( ! $delete ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// phpcs:disable WordPress.DB.DirectDatabaseQuery
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_dismissed_alerts`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_provider_status`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_external_results`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_usage`" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS `{$wpdb->prefix}mra_media_index`" );
|
||||
// phpcs:enable WordPress.DB.DirectDatabaseQuery
|
||||
|
||||
delete_option( 'robotstxt_mediaaudit_db_version' );
|
||||
delete_option( 'robotstxt_mediaaudit_settings' );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue