ruạṛ
<?php /** * BackWPup uninstall cleanup. */ // If uninstall not called from WordPress, exit. if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { exit(); } /** * WordPress database access. * * @var wpdb $wpdb */ global $wpdb; // Only uninstall if no BackWPup Version active. if ( ! class_exists( \BackWPup::class ) ) { require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Base.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Column.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Schema.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Query.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Row.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Table.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Queries/Meta.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Queries/Date.php'; require_once __DIR__ . '/src/Dependencies/BerlinDB/Database/Queries/Compare.php'; require_once __DIR__ . '/src/Common/Database/TableInterface.php'; require_once __DIR__ . '/src/Common/Database/Tables/AbstractTable.php'; require_once __DIR__ . '/src/Backup/Database/Tables/Backup.php'; $tables = [ new \WPMedia\BackWPup\Backup\Database\Tables\Backup(), ]; backwpup_remove_tables( $tables ); // Delete plugin options. if ( is_multisite() ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall cleanup. $wpdb->query( 'DELETE FROM ' . $wpdb->sitemeta . " WHERE meta_key LIKE '%backwpup_%' " ); } else { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall cleanup. $wpdb->query( 'DELETE FROM ' . $wpdb->options . " WHERE option_name LIKE '%backwpup_%' " ); } // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE '%backwpup_%' " ); // Delete Backwpup user roles. // Special handling for multisite when network-activated. if ( is_multisite() ) { $sites = get_sites( [ 'fields' => 'ids', ] ); $current_site_id = get_current_blog_id(); foreach ( $sites as $site ) { switch_to_blog( $site ); backwpup_remove_roles(); backwpup_remove_tables( $tables ); } switch_to_blog( $current_site_id ); } else { backwpup_remove_roles(); } } /** * Removes BackWPup roles and capabilities. */ function backwpup_remove_roles() { remove_role( 'backwpup_admin' ); remove_role( 'backwpup_helper' ); remove_role( 'backwpup_check' ); // Remove capabilities from the administrator role. $role = get_role( 'administrator' ); if ( is_object( $role ) && method_exists( $role, 'remove_cap' ) ) { $role->remove_cap( 'backwpup' ); $role->remove_cap( 'backwpup_jobs' ); $role->remove_cap( 'backwpup_jobs_edit' ); $role->remove_cap( 'backwpup_jobs_start' ); $role->remove_cap( 'backwpup_backups' ); $role->remove_cap( 'backwpup_backups_download' ); $role->remove_cap( 'backwpup_backups_delete' ); $role->remove_cap( 'backwpup_logs' ); $role->remove_cap( 'backwpup_logs_delete' ); $role->remove_cap( 'backwpup_settings' ); $role->remove_cap( 'backwpup_restore' ); } } /** * Remove available database tables. * * @param array $tables Database tables objects. * * @return void */ function backwpup_remove_tables( $tables ) { foreach ( $tables as $table ) { if ( ! $table->exists() ) { continue; } $table->uninstall(); } }
cải xoăn