public static function install() { global $wpdb; require_once(ABSPATH . '/wp-admin/includes/upgrade.php'); if ( !empty($wpdb->charset) ) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; if ( !empty($wpdb->collate) ) $charset_collate .= " COLLATE $wpdb->collate"; MPU::combine_type_styles(); MPU::combine_type_scripts(); // create database tables $table_name = MPU::table("post_types"); $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100), plural_name varchar(100), disabled tinyint(1), labels text, description text, publicly_queryable tinyint(1), exclude_from_search tinyint(1), show_ui tinyint(1), show_in_menu tinyint(1), menu_position tinyint, menu_sub_position tinyint, menu_icon text, menu_icon_2x text, manage_sort_order varchar(255) DEFAULT 'post_date|desc', capability_type varchar(100), capabilities text, map_meta_cap tinyint(1), hierarchical tinyint(1), supports text, columns text, permalink_epmask varchar(255), has_archive tinyint(1), rewrite text, query_var varchar(100), can_export tinyint(1), show_in_nav_menus tinyint(1), visibility text, _builtin tinyint(1), _external tinyint(1), PRIMARY KEY (name), KEY id (id) ) $charset_collate;"; dbDelta($sql); // create database tables $table_name = MPU::table("templates"); $sql = "CREATE TABLE $table_name ( id varchar(255), supports text, visibility text, PRIMARY KEY (id) ) $charset_collate;"; dbDelta($sql); $table_name = MPU::table("taxonomies"); $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100), plural_name varchar(100), object_type text, labels text, disabled tinyint(1), show_in_nav_menus tinyint(1), show_manage_filter tinyint(1), show_ui tinyint(1), show_tagcloud tinyint(1), hide_term_ui tinyint(1), hierarchical tinyint(1), rewrite text, query_var varchar(100), capabilities text, columns text, update_count_callback varchar(100), visibility text, title_icon text, title_icon_2x text, _builtin tinyint(1), _external tinyint(1), PRIMARY KEY (name), KEY id (id) ) $charset_collate;"; dbDelta($sql); // remove "another_field" if it exists $row = $wpdb->get_row("SHOW COLUMNS FROM `" . $table_name . "` LIKE '_another_field'"); if ($row) { $wpdb->query( "ALTER TABLE $table_name DROP COLUMN `_another_field`" ); } $table_name = MPU::table("fields"); $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, field_set_id int(11) NOT NULL, name varchar(255) NOT NULL, labels text, disabled tinyint(1), summary_options text, required tinyint(1) NOT NULL DEFAULT 0, allow_multiple tinyint(1) NOT NULL DEFAULT 0, visibility text, icon text, type varchar(100) NOT NULL, type_options text, position int(11), capabilities text NULL, PRIMARY KEY (id) ) $charset_collate;"; dbDelta($sql); $table_name = MPU::table("field_sets"); $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, singular_name varchar(255) NOT NULL, disabled tinyint(1), position smallint, allow_multiple BOOLEAN NOT NULL DEFAULT 1, visibility text, icon text, labels text, expanded tinyint(1), sidebar tinyint(1), type varchar(20), versions int(11) NOT NULL DEFAULT 10, capabilities text NULL, PRIMARY KEY (id) ) $charset_collate;"; dbDelta($sql); // a site-specific custom table to store metadata for taxonomy terms $table_name = MPU::table("termmeta", "mp_", false); $sql = "CREATE TABLE $table_name ( tmeta_id int(11) NOT NULL AUTO_INCREMENT, term_id bigint(20) NOT NULL, taxonomy varchar(50) DEFAULT NULL, meta_key varchar(255) DEFAULT NULL, meta_value LONGTEXT, PRIMARY KEY (tmeta_id), KEY term_id (term_id), KEY meta_key (meta_key) ) $charset_collate;"; dbDelta($sql); // a site-specific custom table to store metadata for the site $table_name = MPU::table("sitemeta"); $sql = "CREATE TABLE $table_name ( smeta_id int(11) NOT NULL AUTO_INCREMENT, site_id int(11) NOT NULL, meta_key varchar(255) DEFAULT NULL, meta_value LONGTEXT, PRIMARY KEY (smeta_id), KEY meta_key (meta_key) ) $charset_collate;"; dbDelta($sql); $table_name = MPU::table("versions", "mp_", false); $sql = "CREATE TABLE $table_name ( version_id int(11) NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, user_id int(11) NOT NULL, object_id bigint(20) NOT NULL, object_type varchar(50) NOT NULL, object_type_meta varchar(50) DEFAULT NULL, field_set_name varchar(255) NOT NULL, field_set_count int(11) NOT NULL, value LONGTEXT, PRIMARY KEY (version_id), KEY field_set_name (field_set_name) ) $charset_collate;"; dbDelta($sql); MPM_Taxonomy::insert_builtin(); MPM_PostType::insert_builtin(); }