You are here

function location_install in Location 5.3

Same name and namespace in other branches
  1. 5 location.install \location_install()
  2. 6.3 location.install \location_install()

Implementation of hook_install().

File

./location.install, line 11
Installation / uninstallation routines.

Code

function location_install() {
  drupal_set_message('Installing location');
  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      db_query("\n      CREATE TABLE {location} (\n        lid int unsigned NOT NULL default '0',\n        name varchar(255) default NULL,\n        street varchar(255) default NULL,\n        additional varchar(255) default NULL,\n        city varchar(255) default NULL,\n        province varchar(16) default NULL,\n        postal_code varchar(16) default NULL,\n        country char(2) default NULL,\n        latitude decimal(10,6) default NULL,\n        longitude decimal(10,6) default NULL,\n        source tinyint default '0',\n        is_primary tinyint NOT NULL default '0',\n        PRIMARY KEY  (lid)\n      ) /*!40100 DEFAULT CHARACTER SET utf8 */;\n      ");
      db_query("\n      CREATE TABLE {location_instance} (\n        nid int UNSIGNED DEFAULT NULL,\n        vid int UNSIGNED DEFAULT NULL,\n        uid int UNSIGNED DEFAULT NULL,\n        genid varchar(255) NOT NULL default '',\n        lid int UNSIGNED NOT NULL DEFAULT '0',\n        INDEX {location_instance}_nid_idx (nid),\n        INDEX {location_instance}_vid_idx (vid),\n        INDEX {location_instance}_uid_idx (uid),\n        INDEX {location_instance}_genid_idx (genid),\n        INDEX {location_instance}_lid_idx (lid)\n      ) /*!40100 DEFAULT CHARACTER SET utf8 */");
      db_query("\n      CREATE TABLE {zipcodes} (\n        zip varchar(16) NOT NULL default '0',\n        city varchar(30) NOT NULL default '',\n        state varchar(30) NOT NULL default '',\n        latitude decimal(10,6) NOT NULL default '0.000000',\n        longitude decimal(10,6) NOT NULL default '0.000000',\n        timezone tinyint NOT NULL default '0',\n        dst tinyint NOT NULL default '0',\n        country char(2) default '',\n        KEY pc (country, zip),\n        KEY zip (zip),\n        KEY latitude (latitude),\n        KEY longitude (longitude),\n        KEY country (country)\n      ) /*!40100 DEFAULT CHARACTER SET utf8 */;\n      ");
      db_query("CREATE TABLE {cache_location} (\n        cid varchar(255) NOT NULL default '',\n        data longblob,\n        expire int NOT NULL default '0',\n        created int NOT NULL default '0',\n        headers text,\n        PRIMARY KEY (cid),\n        INDEX expire (expire)\n      ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
      $success = TRUE;
      break;
    case 'pgsql':
      db_query("CREATE TABLE {location} (\n        lid serial CHECK (lid >= 0),\n        name varchar(255) default NULL,\n        street varchar(255) default NULL,\n        additional varchar(255) default NULL,\n        city varchar(255) default NULL,\n        province varchar(16) default NULL,\n        postal_code varchar(16) default NULL,\n        country char(2) default NULL,\n        latitude decimal(10,6) default NULL,\n        longitude decimal(10,6) default NULL,\n        source smallint default '0',\n        is_primary smallint default '0',\n        PRIMARY KEY (lid)\n      )");
      db_query("\n      CREATE TABLE {location_instance} (\n        nid int DEFAULT NULL CHECK (nid >= 0 OR nid IS NULL),\n        vid int DEFAULT NULL CHECK (vid >= 0 OR vid IS NULL),\n        uid int DEFAULT NULL CHECK (uid >= 0 OR uid IS NULL),\n        genid varchar(255) NOT NULL default '',\n        lid int NOT NULL DEFAULT '0' CHECK (lid >= 0)\n      )");
      db_query('CREATE INDEX {location_instance}_nid_idx ON {location_instance} (nid)');
      db_query('CREATE INDEX {location_instance}_vid_idx ON {location_instance} (vid)');
      db_query('CREATE INDEX {location_instance}_uid_idx ON {location_instance} (uid)');
      db_query('CREATE INDEX {location_instance}_lid_idx ON {location_instance} (lid)');
      db_query('CREATE INDEX {location_instance}_genid_idx ON {location_instance} (genid)');
      db_query("CREATE TABLE {zipcodes} (\n        zip varchar(16) NOT NULL default '0',\n        city varchar(30) NOT NULL default '',\n        state varchar(30) NOT NULL default '',\n        latitude decimal(10,6) NOT NULL default '0.000000',\n        longitude decimal(10,6) NOT NULL default '0.000000',\n        timezone smallint NOT NULL default '0',\n        dst smallint NOT NULL default '0',\n        country char(2) default ''\n      )");
      db_query("CREATE INDEX {zipcodes}_pc_idx ON {zipcodes} (country, zip)");
      db_query("CREATE INDEX {zipcodes}_zip_idx ON {zipcodes} (zip)");
      db_query("CREATE INDEX {zipcodes}_latitude_idx ON {zipcodes} (latitude)");
      db_query("CREATE INDEX {zipcodes}_longitude_idx ON {zipcodes} (longitude)");
      db_query("CREATE INDEX {zipcodes}_country_idx ON {zipcodes} (country)");
      db_query("CREATE TABLE {cache_location} (\n        cid varchar(255) NOT NULL default '',\n        data bytea,\n        expire int NOT NULL default '0',\n        created int NOT NULL default '0',\n        headers text,\n        PRIMARY KEY (cid)\n      )");
      db_query("CREATE INDEX {cache_location}_expire_idx ON {cache_location} (expire)");
      $success = TRUE;
      break;
    default:
      break;
  }

  // End case
  if ($success) {
    drupal_set_message(t('Location module installed tables successfully. If you would also like a database of zip codes, please manually import the appropriate zipcode.XX.YYYY file(s) in the %module directory.', array(
      '%module' => drupal_get_path('module', 'location') . '/database',
    )));
  }
  else {
    drupal_set_message(t('The installation of Location module was unsuccessful.'), 'error');
  }
}