HEX
Server: Apache
System: Linux flamboyant-gauss.194-164-62-186.plesk.page 6.8.0-55-generic #57-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb 12 23:42:21 UTC 2025 x86_64
User: gamesamphora (10001)
PHP: 7.4.33
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/amphoragames.com/httpdocs/wp-content/plugins/backwpup/uninstall.php
<?php

//if uninstall not called from WordPress exit
if (!defined('WP_UNINSTALL_PLUGIN')) {
    exit();
}

/** @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()) {
        $wpdb->query('DELETE FROM ' . $wpdb->sitemeta . " WHERE meta_key LIKE '%backwpup_%' ");
    } else {
        $wpdb->query('DELETE FROM ' . $wpdb->options . " WHERE option_name LIKE '%backwpup_%' ");
    }

	$wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE '%backwpup_%' " );// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching

    //delete Backwpup user roles
    // Special handling for multisite when network-activated.
    if (is_multisite()) {
        $sites = get_sites([
            'fields' => 'ids',
        ]);
        $current_site = get_current_blog_id();

        foreach ($sites as $site) {
            switch_to_blog($site);
			backwpup_remove_roles();
			backwpup_remove_tables( $tables );
		}

        switch_to_blog($current_site);
    } 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 to 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();
	}
}