domain.install
<?php
function domain_install() {
drupal_install_schema('domain');
$root = strtolower(rtrim($_SERVER['SERVER_NAME']));
$site = variable_get('site_name', 'Drupal');
$scheme = 'http';
if (!empty($_SERVER['HTTPS'])) {
$scheme = 'https';
}
db_query("UPDATE {domain} SET subdomain = '%s', sitename = '%s', scheme = '%s', valid = 1 WHERE domain_id = 0", $root, $site, $scheme);
if (!db_affected_rows()) {
db_query("INSERT INTO {domain} (subdomain, sitename, scheme, valid) VALUES ('%s', '%s', '%s', %d)", $root, $site, $scheme, 1);
db_query("UPDATE {domain} SET domain_id = domain_id - 1");
}
variable_set('domain_root', $root);
variable_set('domain_scheme', $scheme);
variable_set('domain_sitename', $site);
}
function domain_schema() {
$schema['domain'] = array(
'fields' => array(
'domain_id' => array('type' => 'serial', 'not null' => TRUE),
'subdomain' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''),
'sitename' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''),
'scheme' => array('type' => 'varchar', 'length' => '8', 'not null' => TRUE, 'default' => 'http'),
'valid' => array('type' => 'varchar', 'length' => '1', 'not null' => TRUE, 'default' => '1')),
'primary key' => array('domain_id'),
'indexes' => array(
'subdomain' => array('subdomain')),
);
$schema['domain_access'] = array(
'fields' => array(
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'gid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'realm' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '')),
'primary key' => array('nid', 'gid', 'realm'),
'indexes' => array(
'nid' => array('nid')),
);
$schema['domain_editor'] = array(
'fields' => array(
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'domain_id' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)),
'primary key' => array('uid', 'domain_id'),
);
return $schema;
}
function domain_uninstall() {
drupal_uninstall_schema('domain');
db_query("DELETE from {variable} WHERE name LIKE '%s%%'", 'domain_');
}
function domain_update_6100() {
$ret = array();
db_drop_index($ret, 'domain', 'subdomain');
db_change_field($ret, 'domain', 'subdomain', 'subdomain', array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''));
db_add_index($ret, 'domain', 'subdomain', array('subdomain'));
db_change_field($ret, 'domain', 'sitename', 'sitename', array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''));
return $ret;
}
function domain_update_6200() {
$ret = array();
variable_del('domain_editors');
node_access_needs_rebuild(TRUE);
domain_bootstrap_register();
$root = variable_get('domain_root', rtrim($_SERVER['HTTP_HOST']));
db_query("INSERT INTO {domain} (subdomain, sitename, scheme, valid) VALUES ('%s', '%s', '%s', %d)", $root, variable_get('domain_sitename', variable_get('site_name', 'Drupal')), variable_get('domain_scheme', 'http://'), 1);
db_query("UPDATE {domain} SET domain_id = 0 WHERE subdomain = '%s'", $root);
$schema = domain_schema();
db_create_table($ret, 'domain_editor', $schema['domain_editor']);
if (!db_table_exists('domain_editor')) {
return;
}
$result = db_query("SELECT uid, data FROM {users}");
while ($account = db_fetch_object($result)) {
$data = unserialize($account->data);
if (!empty($data['domain_user'])) {
foreach ($data['domain_user'] as $domain_id => $status) {
if ($status != 0) {
if ($domain_id == -1) {
$domain_id = 0;
}
db_query("INSERT INTO {domain_editor} (uid, domain_id) VALUES (%d, %d)", $account->uid, $domain_id);
}
}
}
}
return $ret;
}
function domain_update_6201() {
$ret = array();
db_query("DELETE FROM {domain_editor} WHERE NOT EXISTS (SELECT domain_id FROM {domain} WHERE {domain}.domain_id={domain_editor}.domain_id)");
return $ret;
}
function domain_update_6202() {
$ret = array();
$options = variable_get('domain_form_elements', array());
if (isset($options['author'])) {
unset($options['author']);
}
if (isset($options['menu'])) {
unset($options['menu']);
}
variable_set('domain_form_elements', $options);
return $ret;
}
function domain_update_6203() {
$ret = array();
$result = db_query("SELECT * FROM {permission}");
while ($permission = db_fetch_object($result)) {
if (strpos($permission->perm, 'publish to any assigned domains') > 0) {
$pid = (int) $permission->pid;
$string = db_escape_string(str_replace('publish to any assigned domains', 'publish to any assigned domain', $permission->perm));
$ret[] = update_sql("UPDATE {permission} SET perm = '$string' WHERE pid = $pid");
}
}
return $ret;
}
function domain_update_6204() {
$ret = array();
$result = db_query("SELECT * FROM {permission}");
while ($permission = db_fetch_object($result)) {
if (strpos($permission->perm, 'administer domains') > 0) {
$pid = (int) $permission->pid;
$string = db_escape_string($permission->perm .', access inactive domains');
if (module_exists('domain_nav')) {
$string .= ', access domain navigation';
}
$ret[] = update_sql("UPDATE {permission} SET perm = '$string' WHERE pid = $pid");
}
}
return $ret;
}