HEX
Server: LiteSpeed
System: Linux cde2.duelhost.dk 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
User: dtptviut (1121)
PHP: 8.0.30
Disabled: exec,system,passthru,shell_exec,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/dtptviut/domains/teleweb.dk/public_html/wp-content/plugins/wp-seopress/uninstall.php
<?php
/**
 * Uninstall SEOPress
 *
 * @package Uninstall
 */

defined( 'ABSPATH' ) || exit( 'Please don&rsquo;t call the plugin directly. Thanks :)' );

/**
 * Uninstall SEOPress
 *
 * @since 6.2
 *
 * @author Benjamin, inspired by Polylang
 */

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

/**
 * SEOPRESS_Uninstall
 */
class SEOPRESS_Uninstall {

	/**
	 * Constructor: manages uninstall for multisite
	 *
	 * @since 6.2
	 */
	public function __construct() {
		global $wpdb;

		// Don't do anything except if the constant SEOPRESS_UNINSTALL is explicitely defined and true.
		if ( ! defined( 'SEOPRESS_UNINSTALL' ) || ! SEOPRESS_UNINSTALL ) {
			return;
		}

		// Check if it is a multisite uninstall - if so, run the uninstall function for each blog id.
		if ( is_multisite() ) {
			foreach ( $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ) as $blog_id ) {
				switch_to_blog( $blog_id );
				$this->uninstall();
			}
			restore_current_blog();
		} else {
			$this->uninstall();
		}
	}

	/**
	 * Delete all entries in the DB related to SEOPress Free AND PRO:
	 * Transients, post meta, options, custom tables
	 *
	 * @since 6.2
	 * @updated 7.4
	 */
	public function uninstall() {
		global $wpdb;

		do_action( 'seopress_uninstall' );

		// Delete post meta.
		//phpcs:ignore
		$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key LIKE '_seopress_%'" );

		// Delete redirections / 404 errors.
		$sql = 'DELETE `posts`, `pm`
		FROM `' . $wpdb->prefix . 'posts` AS `posts`
		LEFT JOIN `' . $wpdb->prefix . 'postmeta` AS `pm` ON `pm`.`post_id` = `posts`.`ID`
		WHERE `posts`.`post_type` = \'seopress_404\'';

		//phpcs:ignore
		$sql = $wpdb->prepare( $sql );
		//phpcs:ignore
		$wpdb->query( $sql );

		// Delete schemas.
		$sql = 'DELETE `posts`, `pm`
		FROM `' . $wpdb->prefix . 'posts` AS `posts`
		LEFT JOIN `' . $wpdb->prefix . 'postmeta` AS `pm` ON `pm`.`post_id` = `posts`.`ID`
		WHERE `posts`.`post_type` = \'seopress_schemas\'';

		//phpcs:ignore
		$sql = $wpdb->prepare( $sql );
		//phpcs:ignore
		$wpdb->query( $sql );

		// Delete broken links.
		$sql = 'DELETE `posts`, `pm`
		FROM `' . $wpdb->prefix . 'posts` AS `posts`
		LEFT JOIN `' . $wpdb->prefix . 'postmeta` AS `pm` ON `pm`.`post_id` = `posts`.`ID`
		WHERE `posts`.`post_type` = \'seopress_bot\'';

		//phpcs:ignore
		$sql = $wpdb->prepare( $sql );
		//phpcs:ignore
		$wpdb->query( $sql );

		// Delete global settings.
		//phpcs:ignore
		$options = $wpdb->get_col( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'seopress_%'" );
		array_map( 'delete_option', $options );

		// Delete widget options.
		//phpcs:ignore
		$options = $wpdb->get_col( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'widget_seopress_%'" );
		array_map( 'delete_option', $options );

		// Delete transients.
		delete_transient( '_seopress_sitemap_ids_video' );
		delete_transient( 'seopress_results_page_speed' );
		delete_transient( 'seopress_results_page_speed_desktop' );
		delete_transient( 'seopress_results_google_analytics' );
		delete_transient( 'seopress_results_matomo' );
		delete_transient( 'seopress_prevent_title_redirection_already_exist' );

		// Delete custom tables.
		//phpcs:ignore
		$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}seopress_significant_keywords" );
		//phpcs:ignore
		$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}seopress_content_analysis" );
		//phpcs:ignore
		$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}seopress_seo_issues" );

		// Clear CRON.
		wp_clear_scheduled_hook( 'seopress_xml_sitemaps_ping_cron' );
		wp_clear_scheduled_hook( 'seopress_404_cron_cleaning' );
		wp_clear_scheduled_hook( 'seopress_google_analytics_cron' );
		wp_clear_scheduled_hook( 'seopress_page_speed_insights_cron' );
		wp_clear_scheduled_hook( 'seopress_404_email_alerts_cron' );
		wp_clear_scheduled_hook( 'seopress_insights_gsc_cron' );
		wp_clear_scheduled_hook( 'seopress_matomo_analytics_cron' );
		wp_clear_scheduled_hook( 'seopress_alerts_cron' );
	}
}

new SEOPRESS_Uninstall();