Ticket #5625: sample_uninstallable_plugin.php

File sample_uninstallable_plugin.php, 3.1 kB (added by arickmann, 7 months ago)

A sample plugin that implements the uninstall process.

Line 
1 <?php
2 /*
3 Plugin Name: Sample Uninstallable Plugin
4 Plugin URI: [insert the plugin uri here]
5 Description: A sample plugin for testing the uninstaller
6 Author: Andrew Rickmann
7 Version: 0.1
8 Author URI: http://www.wp-fun.co.uk
9 Generated At: www.wp-fun.co.uk;
10 */
11
12 if ( !is_plugin_active( __FILE__ ) ) {
13
14 //THIS IS THE UNINSTALL FUNCTIONS
15
16     class fw_uninstallation_sample_uninstall {
17     
18         function uninstall_me(){
19             global $wpdb;
20     
21             $db_table_name = $wpdb->prefix . "sample_uninstallable_plugin";
22             
23             $sql = 'DROP TABLE IF EXISTS '.$db_table_name;
24             $wpdb->query( $sql );
25             
26             delete_option( "sample_uninstallable_plugin_db_version" );
27     
28     }
29
30 }
31
32 return;
33
34 }
35
36
37
38 //start of the plugin as normal
39
40 if (!class_exists('fw_uninstallation_sample')) {
41     class fw_uninstallation_sample    {
42         
43         /**
44         * @var string   The name of the database table used by the plugin
45         */   
46         var $db_table_name = '';
47
48         
49         /**
50         * PHP 4 Compatible Constructor
51         */
52         function fw_uninstallation_sample(){$this->__construct();}
53         
54         /**
55         * PHP 5 Constructor
56         */       
57         function __construct(){
58             global $wpdb;
59
60
61         register_activation_hook(__FILE__,array(&$this,"install_on_activation"));
62         
63         $this->db_table_name = $wpdb->prefix . "sample_uninstallable_plugin";
64
65         }
66         
67
68         
69         /**
70         * Creates or updates the database table, and adds a database table version number to the WordPress options.
71         */
72         function install_on_activation() {
73             global $wpdb;
74             
75             //**************************** UNINSTALLER
76             register_uninstall_hook( 'uninstall_sample' , __FILE__ , array( 'fw_uninstallation_sample_uninstall' , 'uninstall_me' ) );
77             //*******************************************
78             
79             
80             $plugin_db_version = "0.1";
81             $installed_ver = get_option( "sample_uninstallable_plugin_db_version" );
82             //only run installation if not installed or if previous version installed
83             if ($installed_ver === false || $installed_ver != $plugin_db_version) {
84         
85                 //*****************************************************************************************
86                 // Create the sql - You will need to edit this to include the columns you need
87                 // Using the dbdelta function to allow the table to be updated if this is an update.
88                 // Read the limitations of the dbdelta function here: http://codex.wordpress.org/Creating_Tables_with_Plugins
89                 // remember to update the version number every time you want to make a change.
90                 //*****************************************************************************************
91                 $sql = "CREATE TABLE " . $this->db_table_name . " (
92                 id mediumint(9) NOT NULL AUTO_INCREMENT,
93                 test_field VARCHAR(255),
94                 UNIQUE KEY id (id)
95                 );";
96             
97                 require_once(ABSPATH . "wp-admin/upgrade-functions.php");
98                 dbDelta($sql);
99                 //add a database version number for future upgrade purposes
100                 update_option("sample_uninstallable_plugin_db_version", $plugin_db_version);
101             }
102         }
103
104     }
105 }
106
107 //instantiate the class
108 if (class_exists('fw_uninstallation_sample')) {
109     $fw_uninstallation_sample = new fw_uninstallation_sample();
110 }
111
112
113
114 ?>