domain.install

// $Id: domain.install,v 1.8.2.2 2008/04/20 21:44:38 agentken Exp $

/**
 * @file
 * Install file.
 */


/**
 * Implements hook_install()
 */

function domain_install() {
  switch ($GLOBALS['db_type']) {
    case 'mysqli':
    case 'mysql':
      db_query("CREATE TABLE {domain} (
        domain_id int(11) NOT NULL AUTO_INCREMENT,
        subdomain varchar(255) NOT NULL default '',
        sitename varchar(255) NOT NULL default '',
        scheme varchar(8) NOT NULL default 'http',
        valid varchar(1) NOT NULL default 1,
        PRIMARY KEY  (domain_id),
        KEY subdomain (subdomain)
      ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "
);
      db_query("CREATE TABLE {domain_access} (
        nid int unsigned NOT NULL default '0',
        gid int unsigned NOT NULL default '0',
        realm varchar(255) NOT NULL default '',
        PRIMARY KEY (nid,gid,realm),
        INDEX (nid)
      ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "
);
      break;
    case 'pgsql':
      db_query("CREATE TABLE {domain} (
        domain_id serial,
        subdomain varchar(255) NOT NULL default '',
        sitename varchar(255) NOT NULL default '',
        scheme varchar(8) NOT NULL default 'http',
        valid varchar(1) NOT NULL default 1,
        PRIMARY KEY (domain_id)
        )"
);
      db_query("CREATE INDEX {domain}_subdomain_idx ON {domain} (subdomain)");
      db_query("CREATE TABLE {domain_access} (
        nid int_unsigned NOT NULL default '0',
        gid int_unsigned NOT NULL default '0',
        realm varchar(255) NOT NULL default '',
        PRIMARY KEY (nid,gid,realm)
      )"
);
      db_query("CREATE INDEX {domain_access}_nid_idx ON {domain_access} (nid)");
      break;
  }
  // Create the 'all' realm for Domain Access.
  db_query("INSERT INTO {node_access} VALUES (0, 0, 'domain_all', 1, 0, 0)");
}

/**
 * Implements hook_uninstall()
 */

function domain_uninstall() {
  db_query("DROP TABLE {domain}");
  db_query("DROP TABLE {domain_access}");
  db_query("DELETE from {variable} WHERE name LIKE '%s%%'", 'domain_');
}

/**
 * Updates from beta6 to beta 7
 * Adds the valid column to the database.
 */

function domain_update_1() {
  $ret = array();

  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $ret[] = update_sql("ALTER TABLE {domain} ADD COLUMN valid varchar(1) NOT NULL DEFAULT 1");
      break;
    case 'pgsql':
      db_add_column($ret, 'domain', 'valid', 'varchar(1)', array('not null' => TRUE, 'default' => 1));
      break;
  }
  return $ret;
}

/**
 * Updates from rc2 to rc3.  Adds the {domain_access} table and copies
 * data from {node_access} to {domain_access}.
 *
 * Required to prevent deletions during node_access_rebuild().
 * See http://groups.drupal.org/node/7956
 */

function domain_update_2() {
  $ret = array();

  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $ret[] = update_sql("CREATE TABLE {domain_access} (
        nid int unsigned NOT NULL default '0',
        gid int unsigned NOT NULL default '0',
        realm varchar(255) NOT NULL default '',
        PRIMARY KEY (nid,gid,realm),
        INDEX (nid)
      ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "
);
      break;
    case 'pgsql':
      $ret[] = update_sql("CREATE TABLE {domain_access} (
        nid int_unsigned NOT NULL default '0',
        gid int_unsigned NOT NULL default '0',
        realm varchar(255) NOT NULL default '',
        PRIMARY KEY (nid,gid,realm)
      )"
);
      $ret[] = update_sql("CREATE INDEX {domain_access}_nid_idx ON {domain_access} (nid)");
      break;
  }
  $realms = array('domain_site', 'domain_id', 'domain_editor');
  foreach ($realms as $realm) {
    $result = db_query("SELECT * FROM {node_access} WHERE realm = '%s'", $realm);
    while ($data = db_fetch_array($result)) {
      db_query("INSERT INTO {domain_access} VALUES (%d, %d, '%s')", $data['nid'], $data['gid'], $data['realm']);
    }
  }
  return $ret;
}

/**
 * Updates from 5.x.1.2 to 5.x.1.3.  This change affects the size
 * of the columns for 'subdomain' and 'sitename'.  See http://drupal.org/node/244142
 */

function domain_update_3() {
  $ret = array();

  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $ret[] = update_sql("ALTER TABLE {domain} CHANGE subdomain subdomain varchar(255) NOT NULL default ''");
      $ret[] = update_sql("ALTER TABLE {domain} CHANGE sitename sitename varchar(255) NOT NULL default ''");
      break;
    case 'pgsql':
      db_change_column($ret, 'domain', 'subdomain', 'subdomain', 'varchar(255)', array('not null' => TRUE, 'default' => "''"));
      db_change_column($ret, 'domain', 'sitename', 'sitename', 'varchar(255)', array('not null' => TRUE, 'default' => "''"));
      break;
  }
  return $ret;
}