Skip to content
location.install 4.24 KiB
Newer Older
Ankur Rishi's avatar
Ankur Rishi committed
<?php
 
function location_install() {
  drupal_set_message('Installing location');
  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      db_query("
      CREATE TABLE {location} (
        eid int unsigned NOT NULL default '0',
        type varchar(6) NOT NULL default '',
        name varchar(255) default NULL,
        street varchar(255) default NULL,
        additional varchar(255) default NULL,
        city varchar(255) default NULL,
        province varchar(16) default NULL,
        postal_code varchar(16) default NULL,
        country char(2) default NULL,
        latitude decimal(10,6) default NULL,
        longitude decimal(10,6) default NULL,
        source tinyint default '0',
        PRIMARY KEY  (type,eid)
      ) /*!40100 DEFAULT CHARACTER SET utf8 */;
      ");
    
      db_query("
      CREATE TABLE {zipcodes} (
        zip varchar(16) NOT NULL default '0',
        city varchar(30) NOT NULL default '',
        state varchar(30) NOT NULL default '',
        latitude decimal(10,6) NOT NULL default '0.000000',
        longitude decimal(10,6) NOT NULL default '0.000000',
        timezone tinyint NOT NULL default '0',
        dst tinyint NOT NULL default '0',
        country char(2) default '',
        PRIMARY KEY (country, zip),
        KEY pc (country, zip),
        KEY zip (zip),
        KEY latitude (latitude),
        KEY longitude (longitude),
        KEY country (country)
      ) /*!40100 DEFAULT CHARACTER SET utf8 */;
      ");
      $success = TRUE;
      break;
    case 'pgsql':
      db_query("CREATE TABLE {location} (
        eid int NOT NULL default '0' CHECK (eid >= 0),
        type varchar(6) NOT NULL default '',
        name varchar(255) default NULL,
        street varchar(255) default NULL,
        additional varchar(255) default NULL,
        city varchar(255) default NULL,
        province varchar(16) default NULL,
        postal_code varchar(16) default NULL,
        country char(2) default NULL,
        latitude decimal(10,6) default NULL,
        longitude decimal(10,6) default NULL,
        source smallint default '0',
        PRIMARY KEY (type,eid)
      )");
    
      db_query("CREATE TABLE {zipcodes} (
        zip varchar(16) NOT NULL default '0',
        city varchar(30) NOT NULL default '',
        state varchar(30) NOT NULL default '',
        latitude decimal(10,6) NOT NULL default '0.000000',
        longitude decimal(10,6) NOT NULL default '0.000000',
        timezone smallint NOT NULL default '0',
        dst smallint NOT NULL default '0',
        country char(2) default '',
        PRIMARY KEY (country, zip)
      )");
      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)");
      $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');
  }
}
Ankur Rishi's avatar
Ankur Rishi committed

function location_update_1() {
  return _system_update_utf8(array('location', 'zipcodes'));
}

function location_update_2() {
  $configured_countries = variable_get('location_configured_countries', array());
  if ($configured_countries['us']) {
    $configured_countries['us'] = 'us';
    variable_set('location_configured_countries', $configured_countries);
  }
}

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

  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $ret[] = db_query("ALTER TABLE {location} CHANGE oid eid int unsigned NOT NULL default '0'");
      break;
  }
  
  return $ret;
}

/***************************************************************
  PostgreSQL must be supported in all updates after this comment
 ***************************************************************/