<?php class PhpCodeforPosts_Install { const TABLEVERSION = 10; private static function get_database() { return PhpCodeForPosts_Database::get_db(); } private static function get_database_table_name() { return PhpCodeForPosts_Database::get_full_table_name(); } private static function get_options() { return PhpCodeForPosts::$options; } public static function check_plugin_table_exists() { $db = self::get_database(); self::check_table(); $result = $db->get_results( "SHOW TABLES LIKE '" . self::get_database_table_name() . "'" ); return count( $result ); } public static function complete_table_upgrade() { $options = self::get_options(); $options->set_option( 'table_version', self::TABLEVERSION ); $options->save_options(); } public static function upgrade_table() { $db = self::get_database(); $table = "CREATE TABLE " . self::get_database_table_name() ." ( id int(10) NOT NULL AUTO_INCREMENT, name varchar(256) NOT NULL DEFAULT 'Untitled Function', slug varchar(256), description text, code longtext NOT NULL, shared tinyint(1) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (id), KEY shared (shared) );"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta($table); self::complete_table_upgrade(); } public static function check_table() { $options = self::get_options(); if( $options->get_option( 'table_version' ) !== self::TABLEVERSION ){ self::upgrade_table(); } } public static function uninstall_hook() { $options = self::get_options(); if( $options->get_option( 'complete_deactivation' ) == '1' ) { delete_option( PhpCodeForPosts_Options::OPTION_NAME ); $db = self::get_database(); $db->query( 'DROP TABLE ' . self::get_database_table_name() ); } } public static function activation_hook() { self::check_table(); } }