<?php

/**
 * Implements hook_install() using the name of the country as the base of
 * the function name.
 */
function canada_install() {
  // Make the entry in the country table.
  // VALUES = Country ID, Country Name, 2-digit Code, 3-digit Code, File Version
  db_insert('uc_countries')
    ->fields(array(
      'country_id' => 124,
      'country_name' => 'Canada',
      'country_iso_code_2' => 'CA',
      'country_iso_code_3' => 'CAN',
      'version' => 2,
    ))
    ->execute();

  // Make the entries in the zones table.
  $zones = array(
    array(124, 'AB', 'Alberta'),
    array(124, 'BC', 'British Columbia'),
    array(124, 'MB', 'Manitoba'),
    array(124, 'NL', 'Newfoundland and Labrador'),
    array(124, 'NB', 'New Brunswick'),
    array(124, 'NS', 'Nova Scotia'),
    array(124, 'NT', 'Northwest Territories'),
    array(124, 'NU', 'Nunavut'),
    array(124, 'ON', 'Ontario'),
    array(124, 'PE', 'Prince Edward Island'),
    array(124, 'QC', 'Quebec'),
    array(124, 'SK', 'Saskatchewan'),
    array(124, 'YT', 'Yukon Territory'),
  );

  $query = db_insert('uc_zones')->fields(array('zone_country_id', 'zone_code', 'zone_name'));
  foreach ($zones as $zone) {
    $query->values($zone);
  }
  $query->execute();

  // Set address format
  // Have to call variable_set() instead of uc_set_address_format()
  // because the Canada .cif file is loaded during the installation
  // of the uc_store module, before uc_set_address_format() is available
  // to use.
  variable_set(
    'uc_address_format_124',
    "!company\r\n" .
    "!first_name !last_name\r\n" .
    "!street1\r\n" .
    "!street2\r\n" .
    "!city !zone_code  !postal_code\r\n" .
    "!country_name_if"
  );
}

/**
 * Implements hook_update() with $version being the only argument.
 * Add a new case for each version update, and be sure to always include the
 * latest changes in the install function.
 */
function canada_update($version) {
  switch ($version) {
    case 2:

      // Rename zone
      db_update('uc_zones')
        ->fields(array('zone_name' => 'Newfoundland and Labrador', 'zone_code' => 'NL'))
        ->condition('zone_country_id', 124)
        ->condition('zone_code', 'NF')
        ->execute();

      break;
  }
}
