You are here

uc_addresses.install in Ubercart Addresses 6.2

Install file for Ubercart Addresses.

File

uc_addresses.install
View source
<?php

/**
 * @file
 * Install file for Ubercart Addresses.
 */

/**
 * Implementation of hook_schema().
 */
function uc_addresses_schema() {
  $schema['uc_addresses'] = array(
    'description' => t('Ubercart customer addresses'),
    'fields' => array(
      'aid' => array(
        'description' => t('The address ID'),
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'description' => t('The ID of the user who owns this address'),
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'first_name' => array(
        'description' => t('The addressee\'s first name'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'last_name' => array(
        'description' => t('The addressee\'s last name'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'phone' => array(
        'description' => t('The addressee\'s phone number'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'company' => array(
        'description' => t('The addressee\'s company name'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'street1' => array(
        'description' => t('The addressee\'s residence number and street'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'street2' => array(
        'description' => t('The addressee\'s residence number and street (continued)'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'city' => array(
        'description' => t('The addressee\'s city of residence'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'zone' => array(
        'description' => t('The addressee\'s zone of residence'),
        'type' => 'int',
        'size' => 'medium',
        'not null' => TRUE,
        'default' => 0,
      ),
      'postal_code' => array(
        'description' => t('The addressee\'s postal code'),
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'country' => array(
        'description' => t('The addressee\'s country of residence'),
        'type' => 'int',
        'size' => 'medium',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'address_name' => array(
        'description' => t('The name used to access this address'),
        'type' => 'varchar',
        'length' => 20,
        'not null' => FALSE,
      ),
      'default_shipping' => array(
        'description' => t('If the address is the default shipping address'),
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
      ),
      'default_billing' => array(
        'description' => t('If the address is the default billing address'),
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
      ),
      'created' => array(
        'description' => t('The date this address was created'),
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'modified' => array(
        'description' => t('The date this address was last modified'),
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'indexes' => array(
      'aid_uid_idx' => array(
        'aid',
        'uid',
      ),
    ),
    'primary key' => array(
      'aid',
    ),
  );
  return $schema;
}

/**
 * Implementation of hook_install().
 *
 * @return void
 */
function uc_addresses_install() {
  drupal_install_schema('uc_addresses');
  $t = get_t();

  // Setup default permissions.
  // If the module 'permissions_api' is enabled, the authencated user will
  // automatically be granted with the permissions 'view own addresses' and
  // 'add/edit own addresses'.
  if (module_exists('permissions_api')) {
    permissions_grant_permissions('authenticated user', array(
      'view own addresses',
      'add/edit own addresses',
      'delete own addresses',
    ));
    drupal_set_message($t("Ubercart Addresses is installed. Since you had the module 'Permissions API' enabled, the authenticated user automatically was granted the permissions %view_own, %edit_own and %delete_own.", array(
      '%view_own' => $t('view own addresses'),
      '%edit_own' => $t('add/edit own addresses'),
      '%delete_own' => $t('delete own addresses'),
    )), 'status');
  }
  else {
    drupal_set_message($t("Ubercart Addresses is installed. Now set up !permissions_link so users will be able to view, edit and delete addresses.", array(
      '!permissions_link' => l($t('permissions'), 'admin/user/permissions', array(
        'fragment' => 'module-uc_addresses',
      )),
    )), 'warning');
  }
}

/**
 * Implementation of hook_uninstall().
 *
 * Deletes variables used by uc_addresses.
 *
 * @return void
 */
function uc_addresses_uninstall() {
  drupal_uninstall_schema('uc_addresses');
  db_query("DELETE FROM {variable} WHERE name LIKE 'uc_addresses%'");
}

/**
 * Upgrade from 6.x-1.x.
 *
 * The uc_addresses_defaults table will be removed. Two columns
 * will be added to the uc_addresses table:<br />
 * - default_shipping<br />
 * - default_billing
 */
function uc_addresses_update_6200() {
  $ret = array();

  // Add 'default_shipping' and 'default_billing' fields.
  db_add_field($ret, 'uc_addresses', 'default_shipping', array(
    'description' => t('If the address is the default shipping address'),
    'type' => 'int',
    'size' => 'tiny',
    'not null' => TRUE,
    'default' => 0,
  ));
  db_add_field($ret, 'uc_addresses', 'default_billing', array(
    'description' => t('If the address is the default billing address'),
    'type' => 'int',
    'size' => 'tiny',
    'not null' => TRUE,
    'default' => 0,
  ));

  // Get address defaults.
  $default_aids = array();
  $result = db_query('SELECT aid FROM {uc_addresses_defaults}');
  while ($default = db_fetch_array($result)) {
    $default_aids[] = $default['aid'];
  }

  // Update defaults.
  if (count($default_aids) > 0) {
    $query = "UPDATE {uc_addresses}\n    SET default_shipping = 1, default_billing = 1\n    WHERE aid in(" . implode(",", $default_aids) . ")\n    ";
    $ret[] = update_sql($query);
  }

  // Drop table uc_addresses_defaults.
  db_drop_table($ret, 'uc_addresses_defaults');
  drupal_set_message(t("Ubercart Addresses has new permissions. Please set up !permissions_link so users will be able to view, edit and delete addresses.", array(
    '!permissions_link' => l(t('permissions'), 'admin/user/permissions', array(
      'fragment' => 'module-uc_addresses',
    )),
  )), 'warning');
  return $ret;
}

/**
 * Renames "everyone's" permissions into "all" permissions.
 *
 * Apostrophes are not supported in permission names; saving permissions will
 * fail on some systems.
 *
 * @see http://drupal.org/node/1412060
 */
function uc_addresses_update_6201() {
  $ret = array();
  $search = array(
    "view everyone's default addresses",
    "view everyone's addresses",
    "add/edit everyone's addresses",
    "delete everyone's addresses",
  );
  $replace = array(
    'view all default addresses',
    'view all addresses',
    'add/edit all addresses',
    'delete all addresses',
  );

  // permission.perm column contains a comma-separated string of permissions.
  $query = "SELECT rid, perm FROM {permission} WHERE perm LIKE '%everyone\\'s%'";
  $result = db_query($query);
  while ($permissions = db_fetch_object($result)) {
    $permissions->perm = str_replace($search, $replace, $permissions->perm);
    $ret[] = update_sql("UPDATE {permission} SET perm = '" . db_escape_string($permissions->perm) . "' WHERE rid = {$permissions->rid}");
  }
  return $ret;
}

Functions

Namesort descending Description
uc_addresses_install Implementation of hook_install().
uc_addresses_schema Implementation of hook_schema().
uc_addresses_uninstall Implementation of hook_uninstall().
uc_addresses_update_6200 Upgrade from 6.x-1.x.
uc_addresses_update_6201 Renames "everyone's" permissions into "all" permissions.