Skip to content
Snippets Groups Projects
knowledge-space-database.php 2.7 KiB
Newer Older
  • Learn to ignore specific revisions
  • Maximilian Giller's avatar
    Maximilian Giller committed
    <?php
    
    
    $SPACES_TABLE = get_table_name("spaces");
    $NODES_TABLE = get_table_name("nodes");
    $NODETYPES_TABLE = get_table_name("nodetypes");
    $LINKS_TABLE = get_table_name("links");
    $REFERENCES_TABLE = get_table_name("references");
    
    
    global $ks_db_version;
    $ks_db_version = '1.0';
    
    function get_table_name($table)
    {
    	global $wpdb;
    	return $wpdb->prefix . "ks_" . $table;
    }
    
    register_activation_hook(__FILE__, 'ks_install');
    function ks_install()
    {
    	global $wpdb;
    	global $ks_db_version;
    
    	$installed_ver = get_option("ks_db_version");
    	if ($installed_ver == $ks_db_version) {
    		return;
    	}
    
    	$charset_collate = $wpdb->get_charset_collate();
    	require_once(__DIR__ . '/../../../wp-admin/includes/upgrade.php');
    
    	global $SPACES_TABLE;
    	$sql = "CREATE TABLE $SPACES_TABLE (
    		space_id int(11) NOT NULL AUTO_INCREMENT,
    		name text NOT NULL,
    		description text NOT NULL,
    		PRIMARY KEY  (space_id)
    	) $charset_collate;";
    	dbDelta($sql);	//! Has some weird restrictions for the SQL Query: https://codex.wordpress.org/Creating_Tables_with_Plugins
    
    
    	global $NODETYPES_TABLE;
    	$sql = "CREATE TABLE $NODETYPES_TABLE (
    		nodetype_id int(11) NOT NULL AUTO_INCREMENT,
    		name text NOT NULL,
    		color bit(24) NOT NULL,
    		PRIMARY KEY  (nodetype_id)
    	) $charset_collate;";
    	dbDelta($sql);	//! Has some weird restrictions for the SQL Query: https://codex.wordpress.org/Creating_Tables_with_Plugins
    
    
    	global $NODES_TABLE;
    	$sql = "CREATE TABLE $NODES_TABLE (
    		node_id int(11) NOT NULL AUTO_INCREMENT,
    		title text NOT NULL,
    		description text NOT NULL,
    		icon_url text,
    		header_url text,
    		video_url text,
    		nodetype_id int(11) NOT NULL,
    		space_id int(11) NOT NULL,
    		PRIMARY KEY  (node_id)
    	) $charset_collate;";
    	dbDelta($sql);	//! Has some weird restrictions for the SQL Query: https://codex.wordpress.org/Creating_Tables_with_Plugins
    
    
    	global $LINKS_TABLE;
    	$sql = "CREATE TABLE $LINKS_TABLE (
    		link_id int(11) NOT NULL AUTO_INCREMENT,
    		source_node_id int(11) NOT NULL,
    		target_node_id int(11) NOT NULL,
    		PRIMARY KEY  (link_id)
    	) $charset_collate;";
    	dbDelta($sql);	//! Has some weird restrictions for the SQL Query: https://codex.wordpress.org/Creating_Tables_with_Plugins
    
    
    	global $REFERENCES_TABLE;
    	$sql = "CREATE TABLE $REFERENCES_TABLE (
    		reference_id int(11) NOT NULL AUTO_INCREMENT,
    		url text NOT NULL,
    		node_id int(11) NOT NULL,
    		PRIMARY KEY  (reference_id)
    	) $charset_collate;";
    	dbDelta($sql);	//! Has some weird restrictions for the SQL Query: https://codex.wordpress.org/Creating_Tables_with_Plugins
    
    	add_option('ks_db_version', $ks_db_version);
    }
    
    // Handling upgrade
    function ks_update_db_check()
    {
    	global $ks_db_version;
    	if (get_site_option('ks_db_version') != $ks_db_version) {
    		ks_install();
    	}
    }
    add_action('plugins_loaded', 'ks_update_db_check');