uc_cart.install in Ubercart 6.2
Same filename and directory in other branches
Install hooks for uc_cart.module.
File
uc_cart/uc_cart.installView source
<?php
/**
* @file
* Install hooks for uc_cart.module.
*/
/**
* Implements hook_schema().
*/
function uc_cart_schema() {
$schema = array();
$schema['uc_cart_products'] = array(
'description' => 'Stores products placed in shopping carts.',
'fields' => array(
'cart_item_id' => array(
'description' => 'Unique identifier for cart item.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'cart_id' => array(
'description' => 'A user-specific cart ID. For authenticated users, their {users}.uid. For anonymous users, a token.',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '0',
),
'nid' => array(
'description' => 'The {node}.nid of the product.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'qty' => array(
'description' => 'The number of this product in the cart.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'changed' => array(
'description' => 'The Unix timestamp indicating the time the product in the cart was changed.',
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
'data' => array(
'description' => 'A serialized array of extra cart data for the product.',
'type' => 'text',
'serialize' => TRUE,
),
),
'indexes' => array(
'cart_id' => array(
'cart_id',
),
),
'primary key' => array(
'cart_item_id',
),
);
return $schema;
}
/**
* Implements hook_install().
*/
function uc_cart_install() {
drupal_install_schema('uc_cart');
}
/**
* Implements hook_uninstall().
*/
function uc_cart_uninstall() {
drupal_uninstall_schema('uc_cart');
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_cart_%%'");
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_pane_%%'");
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_cap_%%'");
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_checkout_%%'");
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_msg_%%'");
db_query("DELETE FROM {variable} WHERE name LIKE 'uc_new_customer_%%'");
variable_del('uc_minimum_subtotal');
variable_del('uc_add_item_redirect');
variable_del('uc_continue_shopping_url');
variable_del('uc_continue_shopping_text');
variable_del('uc_continue_shopping_type');
variable_del('uc_use_next_buttons');
variable_del('uc_collapse_current_pane');
variable_del('uc_ce_no_cancel');
variable_del('uc_ce_submit_disable');
}
/**
* Standardize database definitions during upgrade to Drupal 6.
*
* ID fields are unsigned, regular-sized ints. "Boolean" flags are unsigned
* tiny ints. Postgres tables will have the necessary default values, and MySQL
* doesn't need them, so the schema can just be mismatched for that.
*/
function uc_cart_update_6000() {
$ret = array();
db_change_field($ret, 'uc_cart_products', 'nid', 'nid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
));
db_change_field($ret, 'uc_cart_products', 'qty', 'qty', array(
'type' => 'int',
'unsigned' => TRUE,
'size' => 'small',
'not null' => TRUE,
'default' => 0,
));
return $ret;
}
/**
* Remove unused variables.
*/
function uc_cart_update_6001() {
variable_del('uc_checkout_review_button');
variable_del('uc_checkout_submit_button');
variable_del('uc_checkout_next_button');
return array();
}
/**
* Increase width of cart id to 255.
*/
function uc_cart_update_6002() {
$ret = array();
db_change_field($ret, 'uc_cart_products', 'cart_id', 'cart_id', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => 0,
));
return $ret;
}
/**
* Add an autoincrement primary key to the uc_cart_products table
*/
function uc_cart_update_6200() {
$ret = array();
db_add_field($ret, 'uc_cart_products', 'cart_item_id', array(
'description' => 'Unique identifier for cart item.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
), array(
'primary key' => array(
'cart_item_id',
),
));
return $ret;
}
/**
* Add index to uc_cart_products.cart_id.
*/
function uc_cart_update_6201() {
$ret = array();
db_add_index($ret, 'uc_cart_products', 'cart_id', array(
'cart_id',
));
// Remove unnecessary error message that would occur for new installs.
$mysql_error = check_plain("Duplicate key name 'cart_id'");
$pg_error = check_plain('relation "uc_cart_products_cart_id_idx" already exists');
$pg_error2 = check_plain('query: CREATE INDEX uc_cart_products_cart_id_idx ON uc_cart_products (cart_id)');
$errors = $_SESSION['messages']['error'];
$total = count($errors);
for ($i = 0; $i < $total; $i++) {
if (strpos($errors[$i], $mysql_error) || strpos($errors[$i], $pg_error) || strpos($errors[$i], $pg_error2)) {
unset($_SESSION['messages']['error'][$i]);
$ret[0]['success'] = TRUE;
}
}
if (empty($_SESSION['messages']['error'])) {
unset($_SESSION['messages']['error']);
}
return $ret;
}
/**
* Unify cart block title setting.
*/
function uc_cart_update_6202() {
$ret = array();
if ($title = variable_get('uc_cart_block_title', '')) {
$ret[] = update_sql("UPDATE {blocks} SET title = '" . db_escape_string($title) . "' WHERE module = 'uc_cart' AND delta = '0'");
}
variable_del('uc_cart_block_title');
return $ret;
}
/**
* Increase maximum cart item quantity.
*/
function uc_cart_update_6203() {
$ret = array();
db_change_field($ret, 'uc_cart_products', 'qty', 'qty', array(
'description' => 'The number of this product in the cart.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
));
return $ret;
}
Functions
Name | Description |
---|---|
uc_cart_install | Implements hook_install(). |
uc_cart_schema | Implements hook_schema(). |
uc_cart_uninstall | Implements hook_uninstall(). |
uc_cart_update_6000 | Standardize database definitions during upgrade to Drupal 6. |
uc_cart_update_6001 | Remove unused variables. |
uc_cart_update_6002 | Increase width of cart id to 255. |
uc_cart_update_6200 | Add an autoincrement primary key to the uc_cart_products table |
uc_cart_update_6201 | Add index to uc_cart_products.cart_id. |
uc_cart_update_6202 | Unify cart block title setting. |
uc_cart_update_6203 | Increase maximum cart item quantity. |