Ejemplo n.º 1
0
  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();
   
  }