WordPress.org

Plugin Directory

Changeset 609664


Ignore:
Timestamp:
10/08/12 16:48:08 (19 months ago)
Author:
cfinke
Message:

Now using an activation hook, an uninstallation hook, and dbDelta to make DB changes instead of manually modifying the DB depending on each version.

Location:
wordpress-feed-statistics/trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • wordpress-feed-statistics/trunk/feed-statistics.php

    r609658 r609664  
    55Plugin URI: http://www.chrisfinke.com/wordpress/plugins/feed-statistics/ 
    66Description: Compiles statistics about who is reading your blog via an RSS feed and what they're reading. 
    7 Version: 1.6pre 
     7Version: 2.0pre 
    88Author: Christopher Finke 
    99Author URI: http://www.chrisfinke.com/ 
     
    106106 
    107107class FEED_STATS { 
    108     function init(){ 
     108    static function init(){ 
    109109        global $wpdb; 
    110          
    111         $version = get_option("feed_statistics_version"); 
    112          
    113         if (isset($_GET["reset_feed_statistics"])) $version = ''; 
    114          
    115         switch ($version) { 
    116             case '1.0': 
    117             case '1.0.1': 
    118             case '1.0.2': 
    119             case '1.0.3': 
    120             case '1.0.4': 
    121                 $sql = "ALTER TABLE `".$wpdb->prefix."feed_subscribers` ADD `user_agent` VARCHAR(255) NOT NULL DEFAULT ''"; 
    122                 $wpdb->query($sql); 
    123                  
    124                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_clickthroughs` ( 
    125                     `id` INT(11) NOT NULL auto_increment, 
    126                     `link_id` INT(11) NOT NULL DEFAULT '0', 
    127                     `referrer_id` INT(11) NOT NULL DEFAULT '0', 
    128                     `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', 
    129                     PRIMARY KEY (id) 
    130                 )"; 
    131                 $wpdb->query($sql); 
    132                  
    133                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_links` ( 
    134                     `id` INT(11) NOT NULL auto_increment, 
    135                     `url` VARCHAR(255) NOT NULL DEFAULT '', 
    136                     PRIMARY KEY (`id`), 
    137                     UNIQUE KEY `url` (`url`) 
    138                 )"; 
    139                 $wpdb->query($sql); 
    140                  
    141                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_referrers` ( 
    142                     `id` INT(11) NOT NULL auto_increment, 
    143                     `url` VARCHAR(255) NOT NULL DEFAULT '', 
    144                     PRIMARY KEY (`id`), 
    145                     UNIQUE KEY `url` (`url`) 
    146                 )"; 
    147                 $wpdb->query($sql); 
    148                  
    149                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_postviews` ( 
    150                     `id` INT(11) NOT NULL auto_increment, 
    151                     `post_id` INT(11) NOT NULL DEFAULT '0', 
    152                     `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', 
    153                     PRIMARY KEY (id) 
    154                 )"; 
    155                 $wpdb->query($sql); 
    156                  
    157                 update_option("feed_statistics_track_clickthroughs", "0"); 
    158                 update_option("feed_statistics_track_postviews", "1"); 
    159             case '1.1': 
    160             case '1.1.1': 
    161             case '1.1.2': 
    162                 $sql = "ALTER TABLE `".$wpdb->prefix."feed_subscribers` ADD `feed` VARCHAR( 120 ) NOT NULL AFTER `identifier`"; 
    163                 $wpdb->query($sql); 
    164  
    165                 $sql = "ALTER TABLE `".$wpdb->prefix."feed_subscribers` DROP PRIMARY KEY, ADD PRIMARY KEY (`identifier`, `feed`)"; 
    166                 $wpdb->query($sql); 
    167             case '1.2': 
    168             case '1.3': 
    169                 $sql = "DROP TABLE `".$wpdb->prefix."feed_referrers`"; 
    170                 $wpdb->query($sql); 
    171                  
    172                 $sql = "ALTER TABLE `".$wpdb->prefix."feed_clickthroughs` DROP `referrer_id`"; 
    173                 $wpdb->query($sql); 
    174             case '1.3.1': 
    175                 $sql = "ALTER TABLE `".$wpdb->prefix."feed_subscribers` CHANGE `feed` `feed` VARCHAR(120) NOT NULL"; 
    176                 $wpdb->query($sql); 
    177             case '1.3.2': 
    178             case '1.4': 
    179             case '1.4.1'; 
    180             case '1.4.2': 
    181             case '1.4.3': 
    182                 update_option("feed_statistics_version","1.5"); 
    183             break; 
    184             case "1.5": 
    185             break; 
    186             default: 
    187                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_subscribers` ( 
    188                     `subscribers` INT(11) NOT NULL DEFAULT 0, 
    189                     `identifier` VARCHAR(200) NOT NULL DEFAULT '', 
    190                     `feed` VARCHAR( 120 ) NOT NULL, 
    191                     `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    192                     `user_agent` VARCHAR(255) NOT NULL DEFAULT '', 
    193                     PRIMARY KEY (`identifier`, `feed`) 
    194                 )"; 
    195                 $wpdb->query($sql); 
    196                  
    197                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_clickthroughs` ( 
    198                     `id` INT(11) NOT NULL auto_increment, 
    199                     `link_id` INT(11) NOT NULL DEFAULT '0', 
    200                     `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', 
    201                     PRIMARY KEY (`id`) 
    202                 )"; 
    203                 $wpdb->query($sql); 
    204                  
    205                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_links` ( 
    206                     `id` INT(11) NOT NULL auto_increment, 
    207                     `url` VARCHAR(255) NOT NULL DEFAULT '', 
    208                     PRIMARY KEY (`id`), 
    209                     UNIQUE KEY `url` (`url`) 
    210                 )"; 
    211                 $wpdb->query($sql); 
    212                  
    213                 $sql = "CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."feed_postviews` ( 
    214                     `id` INT(11) NOT NULL auto_increment, 
    215                     `post_id` INT(11) NOT NULL DEFAULT '0', 
    216                     `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', 
    217                     PRIMARY KEY (id) 
    218                 )"; 
    219                 $wpdb->query($sql); 
    220                  
    221                 update_option("feed_statistics_expiration_days","3"); 
    222                 update_option("feed_statistics_version","1.5"); 
    223                 update_option("feed_statistics_track_clickthroughs", "0"); 
    224                 update_option("feed_statistics_track_postviews", "1"); 
    225                  
    226                 break; 
    227         } 
    228110         
    229111        if ( isset( $_GET['feed-stats-post-id'] ) ) { 
     
    387269            } 
    388270        } 
     271    } 
     272     
     273    static function db_setup() { 
     274        $installed_version = get_option( 'feed_statistics_version' ); 
     275         
     276        if ( '2.0pre' != $installed_version ) { 
     277            FEED_STATS::sql(); 
     278             
     279            update_option( 'feed_statistics_version', '2.0pre' ); 
     280             
     281            add_option( 'feed_statistics_track_clickthroughs', '0' ); 
     282            add_option( 'feed_statistics_track_postviews',     '1' ); 
     283            add_option( 'feed_statistics_expiration_days',     '3' ); 
     284        } 
     285    } 
     286     
     287    static function sql() { 
     288        global $wpdb; 
     289         
     290        $sql = "CREATE TABLE ".$wpdb->prefix."feed_clickthroughs ( 
     291  id int(11) NOT NULL AUTO_INCREMENT, 
     292  link_id int(11) NOT NULL DEFAULT '0', 
     293  time datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
     294  PRIMARY KEY  (id) 
     295); 
     296 
     297CREATE TABLE ".$wpdb->prefix."feed_links ( 
     298  id int(11) NOT NULL AUTO_INCREMENT, 
     299  url varchar(1000) NOT NULL, 
     300  PRIMARY KEY (id), 
     301  UNIQUE KEY  url (url) 
     302); 
     303 
     304CREATE TABLE ".$wpdb->prefix."feed_postviews ( 
     305  id int(11) NOT NULL AUTO_INCREMENT, 
     306  post_id int(11) NOT NULL DEFAULT '0', 
     307  time datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
     308  PRIMARY KEY  (id) 
     309); 
     310 
     311CREATE TABLE ".$wpdb->prefix."feed_subscribers ( 
     312  subscribers int(11) NOT NULL DEFAULT '0', 
     313  identifier varchar(255) NOT NULL DEFAULT '', 
     314  feed varchar(120) NOT NULL, 
     315  date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
     316  user_agent varchar(255) DEFAULT NULL, 
     317  PRIMARY KEY  (identifier,feed) 
     318);"; 
     319 
     320        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 
     321        dbDelta( $sql ); 
    389322    } 
    390323     
     
    876809    add_action('admin_menu', array('FEED_STATS','add_options_menu')); 
    877810    add_action('admin_head', array('FEED_STATS','admin_head')); 
     811     
     812    add_action( 'plugins_loaded', array( 'FEED_STATS', 'db_setup' ) ); 
    878813} 
    879814 
     
    888823} 
    889824 
     825if ( function_exists( 'register_activation_hook' ) ) { 
     826    register_activation_hook( __FILE__, array( 'FEED_STATS', 'sql' ) ); 
     827} 
     828 
    890829?> 
Note: See TracChangeset for help on using the changeset viewer.