Inventory_Presser_Uninstaller

Inventory_Presser_Uninstaller


Description Description

This class makes it easy for users to delete all the data managed by the plugin from the site.


Top ↑

Source Source

File: includes/class-uninstaller.php

class Inventory_Presser_Uninstaller {

	// We'll use query variables to catch requests and perform the actions
	const QUERY_VAR_DELETE_VEHICLES = 'invp_delete_all_vehicles';

	public function hooks() {
		// Add links to the Plugins page for single sites
		add_filter( 'plugin_action_links_' . INVP_PLUGIN_BASE, array( $this, 'add_delete_vehicles_link' ), 10, 1 );

		// Look for our query variables and dispatch the actions
		add_action( 'admin_init', array( $this, 'detect_query_vars' ) );
	}

	/**
	 * add_delete_vehicles_link
	 *
	 * Adds a Delete all Vehicles link near the Deactivate link on the plugins page.
	 *
	 * @param string[] $actions An array of plugin action links. By default this can include 'activate',
	 *                          'deactivate', and 'delete'.

	 * @return string[] The changed array of plugin action links.
	 */
	public function add_delete_vehicles_link( $actions ) {
		if ( ! current_user_can( 'delete_posts' ) ) {
			return $actions;
		}

		$label = __( 'Delete all Vehicles', 'inventory-presser' );
		$nonce = wp_create_nonce( self::QUERY_VAR_DELETE_VEHICLES );
		$link  = sprintf(
			'<a href="%s">%s</a>',
			esc_url( admin_url( sprintf( 'plugins.php?%s=1&_wpnonce=%s', self::QUERY_VAR_DELETE_VEHICLES, $nonce ) ) ),
			$label
		);
		return array_merge( $actions, array( INVP::sluggify( $label ) . ' delete' => $link ) );
	}

	public function detect_query_vars() {
		// Is this a GET request?
		if ( 'GET' != $_SERVER['REQUEST_METHOD'] ) {
			return;
		}

		if ( empty( $_GET['_wpnonce'] ) || empty( $_GET[ self::QUERY_VAR_DELETE_VEHICLES ] ) ) {
			return;
		}

		if ( ! wp_verify_nonce( $_GET['_wpnonce'], self::QUERY_VAR_DELETE_VEHICLES ) ) {
			return;

		}

		// dispatch the delete all vehicles call
		INVP::delete_all_inventory();

		// redirect to a URL that won't cause more deletes on page reloads
		wp_redirect( admin_url( 'plugins.php' ) );
		exit;
	}
}

Top ↑

Methods Methods