You are here

function hosting_site_update_3 in Hosting 7.4

Same name and namespace in other branches
  1. 5 site/hosting_site.install \hosting_site_update_3()
  2. 6.2 site/hosting_site.install \hosting_site_update_3()
  3. 7.3 site/hosting_site.install \hosting_site_update_3()

Implements hook_update_N().

Move away from bitmasks for the status field.

File

site/hosting_site.install, line 177
Define database schema and update functions for the hosting_site module.

Code

function hosting_site_update_3() {
  $ret = array();
  $ret[] = update_sql("ALTER TABLE {hosting_site} CHANGE COLUMN status status int(11) NOT NULL default '0'");
  $ret[] = update_sql("CREATE TEMPORARY TABLE {hosting_site_statuses} SELECT nid,\n    (status&4) as deleted, NOT (status&2) AS disabled, status&1 AS installed FROM {hosting_site}");

  // Reset them all to queued
  $ret[] = update_sql("UPDATE {hosting_site} SET status = 0");

  // First, we get rid of the deleted sites.
  $ret[] = update_sql("UPDATE {hosting_site} SET status = -2 WHERE nid in (SELECT nid FROM {hosting_site_statuses} WHERE deleted > 0)");
  $ret[] = update_sql("DELETE FROM {hosting_site_statuses} WHERE deleted > 0");

  // Then the disabled sites.
  $ret[] = update_sql("UPDATE {hosting_site} SET status = -1 WHERE nid in (SELECT nid FROM {hosting_site_statuses} WHERE disabled > 0)");
  $ret[] = update_sql("DELETE FROM {hosting_site_statuses} WHERE disabled > 0");

  // Then the installed sites, which are the same as 'enabled' sites.
  $ret[] = update_sql("UPDATE {hosting_site} SET status = 1 WHERE nid in (SELECT nid FROM {hosting_site_statuses} WHERE installed > 0)");
  $ret[] = update_sql("DELETE FROM {hosting_site_statuses} WHERE installed > 0");
  $ret[] = update_sql("DROP TABLE {hosting_site_statuses}");

  // Now we rid ourself of 'enabled', we really care about installed.
  return $ret;
}