Files
2026-04-28 15:13:50 +02:00

95 lines
2.4 KiB
PHP

<?php
/**
* The uninstallation functions.
*
* @package WP Product Feed Manager/Functions
*/
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
exit;
}
global $wpdb;
$upload_dir = wp_get_upload_dir();
require_once __DIR__ . '/includes/data/wppfm-admin-functions.php';
if ( ! class_exists( 'WPPFM_Folders' ) ) {
require_once __DIR__ . '/includes/setup/class-wppfm-folders.php';
}
if ( ! class_exists( 'WPPFM_Db_Management' ) ) {
require_once __DIR__ . '/includes/data/class-wppfm-db-management.php';
}
if ( ! class_exists( 'WPPFM_Queries' ) ) {
require_once __DIR__ . '/includes/data/class-wppfm-queries.php';
}
// Stop the scheduled feed update actions.
wp_clear_scheduled_hook( 'wppfm_feed_update_schedule' );
// Remove the support folders.
WPPFM_Folders::delete_folder( $upload_dir['basedir'] . '/wppfm-channels' );
WPPFM_Folders::delete_folder( $upload_dir['basedir'] . '/wppfm-feeds' );
WPPFM_Folders::delete_folder( $upload_dir['basedir'] . '/wppfm-logs' );
$tables = array(
$wpdb->prefix . 'feedmanager_country',
$wpdb->prefix . 'feedmanager_feed_status',
$wpdb->prefix . 'feedmanager_field_categories',
$wpdb->prefix . 'feedmanager_channel',
$wpdb->prefix . 'feedmanager_product_feed',
$wpdb->prefix . 'feedmanager_product_feedmeta',
$wpdb->prefix . 'feedmanager_product_performance',
$wpdb->prefix . 'feedmanager_source',
$wpdb->prefix . 'feedmanager_errors',
);
// Remove the feedmanager tables.
foreach ( $tables as $table ) {
//phpcs:ignore
$wpdb->query( "DROP TABLE IF EXISTS $table" );
}
// Reset the keyed options @since 3.11.0.
WPPFM_Db_Management::clean_options_table();
// Remove the custom capabilities.
wppfm_remove_custom_capabilities();
// Unregister the plugin.
wppfm_unregister_plugin();
/**
* Removes the custom capabilities
*
* @since 3.9.0
*/
function wppfm_remove_custom_capabilities() {
$admin_role = get_role( 'administrator' );
$editor_role = get_role( 'editor' );
$admin_role->remove_cap( 'edit_feeds' );
$admin_role->remove_cap( 'delete_feeds' );
$editor_role->remove_cap( 'edit_feeds' );
$editor_role->remove_cap( 'delete_feeds' );
}
/**
* Removes the registration info from the database.
*/
function wppfm_unregister_plugin() {
// Retrieve the license from the database.
$license = get_option( 'wppfm_lic_key' );
foreach( wp_load_alloptions() as $option => $value ) {
if( false !== strpos( $option, 'wppfm_' ) ) { delete_option( $option ); }
}
}