merci.install in MERCI (Manage Equipment Reservations, Checkout and Inventory) 6.2
Same filename and directory in other branches
merci Installer / Uninstaller
File
merci.installView source
<?php
/**
* @file
* merci Installer / Uninstaller
*/
/**
* Implementation of hook_install().
*/
function merci_install() {
// Core doesn't load the .module file on install for some reason,
// so load it here manually.
drupal_load('module', 'merci');
// Create tables.
drupal_install_schema('merci');
}
/**
* Implementation of hook_uninstall().
*/
function merci_uninstall() {
// Delete the vocabulary.
$vid = variable_get('merci_equipment_grouping_vid', '');
taxonomy_del_vocabulary($vid);
// Need to load the CCK include file where content_field_instance_create() is defined.
module_load_include('inc', 'content', 'includes/content.crud');
$results = db_query("SELECT field_name,type_name FROM {" . content_instance_tablename() . "} WHERE type_name = 'merci_reservation'");
while ($field = db_fetch_array($results)) {
content_field_instance_delete($field['field_name'], $field['type_name'], FALSE);
}
// Force the caches and static arrays to update to the new info.
content_clear_type_cache(TRUE);
// Remove all MERCI variables.
$variables = db_query("SELECT name FROM {variable} WHERE name LIKE 'merci_%'");
while ($variable = db_fetch_object($variables)) {
variable_del($variable->name);
}
// Remove all MERCI all associated nodes
//No longer removes content types
$content_types = db_query("SELECT type FROM {merci_node_type} WHERE merci_type_setting <> 'disabled'");
while ($content_type = db_fetch_object($content_types)) {
$nodes = db_query(db_rewrite_sql("SELECT nid FROM {node} n WHERE type = '%s'"), $content_type->type);
while ($node = db_fetch_object($nodes)) {
node_delete($node->nid);
}
//node_type_delete($content_type->type);
}
// Remove the programatically created reservation node type
// and all associated nodes.
$nodes = db_query(db_rewrite_sql("SELECT nid FROM {node} n WHERE type = 'merci_reservation'"));
while ($node = db_fetch_object($nodes)) {
node_delete($node->nid);
}
node_type_delete('merci_reservation');
// You'd think the uninstall submit function would take care of this
// but it doesn't look like it.
node_types_rebuild();
menu_rebuild();
// Remove tables.
drupal_uninstall_schema('merci');
}
/**
* Implementation of hook_enable().
*/
function merci_enable() {
merci_add_group_taxonomy();
merci_create_cck_fields();
// Add any node types to the MERCI tables that aren't already there.
$existing_types = db_query("SELECT type FROM {merci_node_type}");
$types = array();
while ($existing_type = db_fetch_object($existing_types)) {
$types[] = $existing_type->type;
}
if (empty($types)) {
$new_types = db_query("SELECT type FROM {node_type}");
}
else {
$new_types = db_query(db_rewrite_sql("SELECT type FROM {node} n WHERE type NOT IN (" . db_placeholders($types, 'varchar') . ")"), $types);
}
while ($new_type = db_fetch_object($new_types)) {
db_query("INSERT INTO {merci_node_type} (type) VALUES ('%s')", $new_type->type);
}
$results = db_query("SELECT type,merci_type_setting,merci_grouping FROM {merci_node_type}");
while ($result = db_fetch_array($results)) {
variable_set('merci_type_setting_' . $result['type'], $result['merci_type_setting']);
variable_set('merci_grouping_' . $result['type'], $result['merci_grouping']);
}
//merci_check_default_timezone();
}
/**
* Implements hook_schema().
*/
function merci_schema() {
$schema['merci_node_type'] = array(
'description' => 'Stores booking-related information that applies to content types.',
'fields' => array(
'type' => array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => "Foreign key for {node_type}.type.",
),
'merci_type_setting' => array(
'type' => 'varchar',
'length' => 20,
'not null' => TRUE,
'default' => 'disabled',
'description' => "The MERCI type for the selected content type.",
),
'merci_max_hours_per_reservation' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "The maximum hours that the resource can be reserved for.",
),
'merci_allow_overnight' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource can be kept overnight.",
),
'merci_allow_weekends' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource can be kept over weekends.",
),
'merci_late_fee_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee if the resource is returned late.",
),
'merci_rate_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee for use of the resource.",
),
'merci_daypart1_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart2_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart3_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_weekend_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between on day flagged as weekend.",
),
'merci_fee_free_hours' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Number of hours the item can be used before fees are charged.",
),
'merci_active_status' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "The status of the resource.",
),
'merci_spare_items' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "Number of spare items to leave unreserved for the resource.",
),
'merci_min_cancel_hours' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "Minimum number of hours a user can cancel a reservation for the item.",
),
'merci_autocheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked out when Reservation starts.",
),
'merci_autocheckin' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked in when Reservation starts.",
),
'merci_selfcheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is managed by selfcheckout.",
),
'merci_grouping' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => FALSE,
'description' => "tid of MERCI Equiment Grouping vocabulary",
),
'merci_auto_assign_bucket_item' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => FALSE,
'description' => "TRUE if the bucket item is to be assigned automatically.",
),
),
'primary key' => array(
'type',
),
);
$schema['merci_reservation'] = array(
'description' => 'Stores bookings reservations.',
'fields' => array(
'nid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => "The reservations's associated nid.",
),
'vid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => "The reservations's associated vid.",
),
'merci_reservation_status' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 1,
'description' => 'Finalized bookings cannot have time conflicts with each other. Finalized availabilities must be obeyed.',
),
),
'primary key' => array(
'nid',
'vid',
),
);
$schema['merci_reservation_detail'] = array(
'description' => 'Stores details on resources reserved.',
'fields' => array(
'did' => array(
'type' => 'serial',
'not null' => TRUE,
'description' => 'Unique ID for the reservation detail entry.',
),
'nid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => 'Foreign key for {merci_reservation}.nid.',
),
'vid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => 'Foreign key for {merci_reservation}.vid.',
),
'merci_placeholder_nid' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'The nid for an associated reservation placeholder node for the reservation.',
),
'merci_item_nid' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'The nid for an item node associated with the reservation placeholder node for the reservation.',
),
'merci_item_status' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'The status of the item associated in the item_nid column.',
),
),
'primary key' => array(
'did',
),
'indexes' => array(
'nids' => array(
'nid',
'vid',
'merci_placeholder_nid',
'merci_item_nid',
),
'merci_item_status' => array(
'merci_item_status',
),
),
);
$schema['merci_bucket_node'] = array(
'description' => 'Stores information on bookable bucket nodes.',
'fields' => array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource nid.",
),
'vid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource vid.",
),
'merci_default_availability' => array(
'type' => 'int',
'not null' => TRUE,
'size' => 'tiny',
'default' => 0,
'description' => 'Default availability of the resource.',
),
'merci_late_fee_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee if the resource is returned late.",
),
'merci_rate_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee for use of the resource.",
),
'merci_daypart1_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart2_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart3_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_weekend_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between on day flagged as weekend.",
),
'merci_fee_free_hours' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Number of hours the item can be used before fees are charged.",
),
'merci_min_cancel_hours' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "Minimum number of hours a user can cancel a reservation for the item.",
),
'merci_autocheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked out when Reservation starts.",
),
'merci_autocheckin' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked in when Reservation starts.",
),
'merci_selfcheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is managed by selfcheckout.",
),
'merci_sub_type' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "The subtype of bucket node, either item or reservation.",
),
),
'primary key' => array(
'nid',
'vid',
),
);
$schema['merci_resource_node'] = array(
'description' => 'Stores information on bookable resource nodes.',
'fields' => array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource nid.",
),
'vid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource vid.",
),
'merci_default_availability' => array(
'type' => 'int',
'not null' => TRUE,
'size' => 'tiny',
'default' => 0,
'description' => 'Default availability of the item .',
),
'merci_late_fee_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee if the resource is returned late.",
),
'merci_rate_per_hour' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Per hour fee for use of the resource.",
),
'merci_daypart1_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart2_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_daypart3_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between start and end of day part.",
),
'merci_weekend_price' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Fee for use of the resource between on day flagged as weekend.",
),
'merci_fee_free_hours' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
'description' => "Number of hours the item can be used before fees are charged.",
),
'merci_min_cancel_hours' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "Minimum number of hours a user can cancel a reservation for the item.",
),
'merci_autocheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked out when Reservation starts.",
),
'merci_autocheckin' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is automatically checked in when Reservation starts.",
),
'merci_selfcheckout' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
'description' => "TRUE if the resource is managed by selfcheckout.",
),
'merci_sub_type' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "The subtype of resource node, either item or reservation.",
),
),
'primary key' => array(
'nid',
'vid',
),
);
$schema['merci_reservation_item_node'] = array(
'description' => 'Stores information on bookable resource and bucket nodes.',
'fields' => array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource nid.",
),
'vid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => "The bookable resource vid.",
),
'merci_default_availability' => array(
'type' => 'int',
'not null' => TRUE,
'size' => 'tiny',
'default' => 0,
'description' => 'Default availability of the item .',
),
'merci_sub_type' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "The subtype of resource node, either item or reservation.",
),
'merci_item_status' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'The status of the item associated in the item_nid column.',
),
),
'primary key' => array(
'nid',
'vid',
),
'indexes' => array(
'merci_sub_type' => array(
'merci_sub_type',
),
),
);
return $schema;
}
function merci_update_1() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_bucket_node} ADD min_cancel_hours TINYINT NOT NULL DEFAULT '0';");
$ret[] = update_sql("ALTER TABLE {merci_resource_node} ADD min_cancel_hours TINYINT NOT NULL DEFAULT '0';");
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD min_cancel_hours TINYINT NOT NULL DEFAULT '0';");
return $ret;
}
function merci_update_3() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_bucket_node} ADD autocheckout TINYINT NOT NULL DEFAULT '0', ADD autocheckin TINYINT NOT NULL DEFAULT '0', ADD selfcheckout TINYINT NOT NULL DEFAULT '0';");
$ret[] = update_sql("ALTER TABLE {merci_resource_node} ADD autocheckout TINYINT NOT NULL DEFAULT '0', ADD autocheckin TINYINT NOT NULL DEFAULT '0', ADD selfcheckout TINYINT NOT NULL DEFAULT '0';");
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD autocheckout TINYINT NOT NULL DEFAULT '0', ADD autocheckin TINYINT NOT NULL DEFAULT '0', ADD selfcheckout TINYINT NOT NULL DEFAULT '0';");
return $ret;
}
function merci_update_4() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD grouping TINYINT NULL;");
return $ret;
}
function merci_update_5() {
if (module_exists("number")) {
merci_add_group_taxonomy();
merci_create_cck_fields();
}
else {
drupal_set_message(t("You need to install and enable the cck number module for this update."));
}
return array(
array(
'success' => TRUE,
'query' => 'Should only be doing db updates. But I am doing a lot more.',
),
);
}
function merci_update_6200() {
return array(
array(
'success' => TRUE,
'query' => 'Should only be doing db updates. But I am doing a lot more.',
),
);
}
function merci_update_6201() {
merci_create_cck_fields();
return array(
array(
'success' => TRUE,
'query' => 'Should only be doing db updates. But I am doing a lot more.',
),
);
}
function merci_update_6202() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD auto_assign_bucket_item TINYINT NULL;");
return $ret;
}
function merci_update_6203() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_node_type} CHANGE `type` `type` VARCHAR(32) ;");
return $ret;
}
function merci_update_6204() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_bucket_node} ADD daypart1_price FLOAT NOT NULL, ADD daypart2_price FLOAT NOT NULL, ADD daypart3_price FLOAT NOT NULL;");
$ret[] = update_sql("ALTER TABLE {merci_resource_node} ADD daypart1_price FLOAT NOT NULL, ADD daypart2_price FLOAT NOT NULL, ADD daypart3_price FLOAT NOT NULL;");
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD daypart1_price FLOAT NOT NULL, ADD daypart2_price FLOAT NOT NULL, ADD daypart3_price FLOAT NOT NULL;");
return $ret;
}
function merci_update_6205() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_bucket_node} ADD weekend_price FLOAT NOT NULL;");
$ret[] = update_sql("ALTER TABLE {merci_resource_node} ADD weekend_price FLOAT NOT NULL;");
$ret[] = update_sql("ALTER TABLE {merci_node_type} ADD weekend_price FLOAT NOT NULL;");
return $ret;
}
function merci_update_6206() {
$ret = array();
$results = db_query("SELECT type,type_setting FROM {merci_node_type}");
while ($result = db_fetch_array($results)) {
variable_set('merci_type_setting_' . $result['type'], $result['type_setting']);
}
return $ret;
}
function merci_update_6207() {
$ret = array();
$schemas = merci_schema();
db_create_table($ret, 'merci_reservation_item_node', $schemas['merci_reservation_item_node']);
// Migrate default_availability and sub_type to new table.
$ret[] = update_sql("INSERT INTO {merci_reservation_item_node} (nid,vid,merci_default_availability,merci_sub_type) SELECT nid,vid,default_availability,sub_type FROM {merci_bucket_node} ON DUPLICATE KEY UPDATE {merci_reservation_item_node}.nid = {merci_reservation_item_node}.nid");
$ret[] = update_sql("INSERT INTO {merci_reservation_item_node} (nid,vid,merci_default_availability,merci_sub_type) SELECT nid,vid,default_availability,sub_type FROM {merci_resource_node} ON DUPLICATE KEY UPDATE {merci_reservation_item_node}.nid = {merci_reservation_item_node}.nid");
// Migrate reservation to new table.
// Pull the merci_item_status for items which are in the CHECKED OUT state for the current reservation revision.
$ret[] = update_sql("UPDATE {merci_reservation_item_node} mrn LEFT JOIN {merci_reservation_detail} md ON mrn.nid = md.item_nid SET mrn.item_status = md.item_status WHERE md.item_nid <> 0 AND md.item_status =2");
return $ret;
}
function merci_update_6208() {
$ret = array();
$results = db_query("SELECT type,grouping FROM {merci_node_type}");
while ($result = db_fetch_array($results)) {
variable_set('merci_grouping_' . $result['type'], $result['grouping']);
}
return $ret;
}
function merci_update_6209() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_bucket_node}\n CHANGE default_availability merci_default_availability TINYINT(4) NOT NULL DEFAULT '0',\n CHANGE late_fee_per_hour merci_late_fee_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE rate_per_hour merci_rate_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart1_price merci_daypart1_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart2_price merci_daypart2_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart3_price merci_daypart3_price FLOAT NOT NULL DEFAULT '0',\n CHANGE weekend_price merci_weekend_price FLOAT NOT NULL DEFAULT '0',\n CHANGE fee_free_hours merci_fee_free_hours FLOAT NOT NULL DEFAULT '0',\n CHANGE min_cancel_hours merci_min_cancel_hours INT(11) NOT NULL DEFAULT '0',\n CHANGE autocheckout merci_autocheckout TINYINT(4) NOT NULL DEFAULT '0',\n CHANGE autocheckin merci_autocheckin TINYINT(4) NOT NULL DEFAULT '0',\n CHANGE selfcheckout merci_selfcheckout TINYINT(4) NOT NULL DEFAULT '0',\n CHANGE sub_type merci_sub_type INT(11) NOT NULL DEFAULT '0'");
$ret[] = update_sql("ALTER TABLE {merci_node_type}\n CHANGE type_setting merci_type_setting VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'disabled',\n CHANGE max_hours_per_reservation merci_max_hours_per_reservation INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE allow_overnight merci_allow_overnight TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE allow_weekends merci_allow_weekends TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE late_fee_per_hour merci_late_fee_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE rate_per_hour merci_rate_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE fee_free_hours merci_fee_free_hours FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart1_price merci_daypart1_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart2_price merci_daypart2_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart3_price merci_daypart3_price FLOAT NOT NULL DEFAULT '0',\n CHANGE weekend_price merci_weekend_price FLOAT NOT NULL DEFAULT '0',\n CHANGE status merci_active_status INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE spare_items merci_spare_items INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE min_cancel_hours merci_min_cancel_hours INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE autocheckout merci_autocheckout TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE autocheckin merci_autocheckin TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE selfcheckout merci_selfcheckout TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE grouping merci_grouping TINYINT( 4 ) NULL DEFAULT NULL ,\n CHANGE auto_assign_bucket_item merci_auto_assign_bucket_item TINYINT( 4 ) NULL DEFAULT NULL\n ");
$ret[] = update_sql("ALTER TABLE {merci_reservation} CHANGE status merci_reservation_status TINYINT( 4 ) NOT NULL DEFAULT '1'");
$ret[] = update_sql("ALTER TABLE {merci_reservation_detail}\n CHANGE placeholder_nid merci_placeholder_nid INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE item_nid merci_item_nid INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE item_status merci_item_status INT( 11 ) NOT NULL DEFAULT '0'\n ");
$ret[] = update_sql("ALTER TABLE {merci_reservation_item_node}\n CHANGE default_availability merci_default_availability TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE sub_type merci_sub_type INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE item_status merci_item_status INT( 11 ) NOT NULL DEFAULT '0'\n ");
$ret[] = update_sql("ALTER TABLE {merci_resource_node}\n CHANGE default_availability merci_default_availability TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE late_fee_per_hour merci_late_fee_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE rate_per_hour merci_rate_per_hour FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart1_price merci_daypart1_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart2_price merci_daypart2_price FLOAT NOT NULL DEFAULT '0',\n CHANGE daypart3_price merci_daypart3_price FLOAT NOT NULL DEFAULT '0',\n CHANGE weekend_price merci_weekend_price FLOAT NOT NULL DEFAULT '0',\n CHANGE fee_free_hours merci_fee_free_hours FLOAT NOT NULL DEFAULT '0',\n CHANGE min_cancel_hours merci_min_cancel_hours INT( 11 ) NOT NULL DEFAULT '0',\n CHANGE autocheckout merci_autocheckout TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE autocheckin merci_autocheckin TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE selfcheckout merci_selfcheckout TINYINT( 4 ) NOT NULL DEFAULT '0',\n CHANGE sub_type merci_sub_type INT( 11 ) NOT NULL DEFAULT '0'");
cache_clear_all('merci_content_type_info', 'cache');
return $ret;
}
function merci_update_6210() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_reservation_item_node} ADD INDEX ( merci_sub_type )");
return $ret;
}
function merci_update_6211() {
return array(
array(
'success' => TRUE,
'query' => 'Permissions have been changed. Please edit your user permissions to make sure they are what you want. I have done nothing for you. Please refer to ' . l("MERCI Permissions", "http://drupal.org/node/1013528") . ' documentation for more information',
),
);
}
function merci_update_6212() {
$days_of_the_week = array(
'sun',
'mon',
'tue',
'wed',
'thu',
'fri',
'sat',
);
$hours_of_operation = array();
foreach ($days_of_the_week as $num => $day) {
$hours = variable_get('merci_hours_' . $day, '');
if (empty($hours)) {
$hours_of_operation[$num] = FALSE;
}
else {
list($open, $close) = explode('-', $hours);
$hours_of_operation[$num]['open'] = trim($open);
$hours_of_operation[$num]['close'] = trim($close);
}
}
$closed_days_raw = variable_get('merci_closed_dates', '');
$hours_of_operation['closed_days'] = array();
$parts = explode("\n", $closed_days_raw);
foreach ($parts as $date) {
$date = trim($date);
if (drupal_strlen($date) == 5) {
$hours_of_operation['closed_days'][] = $date;
}
}
variable_set('merci_hours_operation', $hours_of_operation);
return array(
array(
'success' => TRUE,
'query' => 'Should only be doing db updates. But I am doing a lot more.',
),
);
}
function merci_update_6213() {
$ret = array();
$ret[] = update_sql("ALTER TABLE {merci_reservation} ADD INDEX ( merci_reservation_status )");
return $ret;
}
function merci_update_6214() {
$ret = array();
// Rebuild possibly out of sync reservation statuses.
$ret[] = update_sql("UPDATE {merci_reservation_item_node} mrn SET mrn.merci_item_status = 0");
// Migrate reservation to new table.
// Pull the merci_item_status for items which are in the CHECKED OUT state for the current reservation revision.
$ret[] = update_sql("UPDATE {merci_reservation_item_node} mrn LEFT JOIN {merci_reservation_detail} md ON mrn.nid = md.merci_item_nid JOIN {node} n ON n.vid = md.vid SET mrn.merci_item_status = md.merci_item_status WHERE md.merci_item_nid <> 0 AND md.merci_item_status =2");
return $ret;
}
function merci_create_cck_fields() {
// Create the date, commercial_total, and member_total fields for the reservation.
$short_date_format = variable_get('date_format_short', 'm/d/Y - H:i');
$date_only_format = substr($short_date_format, 0, 5);
// Create the date, commercial_total, and member_total fields for the reservation.
$merci_reservation_fields = array(
array(
'field_name' => 'field_merci_date',
'type_name' => 'merci_reservation',
'display_settings' => array(
'label' => array(
'format' => 'above',
'exclude' => 0,
),
'teaser' => array(
'format' => 'default',
'exclude' => 0,
),
'full' => array(
'format' => 'default',
'exclude' => 0,
),
4 => array(
'format' => 'default',
'exclude' => 0,
),
),
'widget_active' => '1',
'type' => 'datetime',
'required' => '1',
'multiple' => '0',
'db_storage' => '1',
'module' => 'date',
'active' => '1',
'locked' => '1',
'columns' => array(
'value' => array(
'type' => 'datetime',
'not null' => FALSE,
'sortable' => TRUE,
),
'value2' => array(
'type' => 'datetime',
'not null' => FALSE,
'sortable' => TRUE,
),
),
'granularity' => array(
'year' => 'year',
'month' => 'month',
'day' => 'day',
'hour' => 'hour',
'minute' => 'minute',
),
'timezone_db' => 'UTC',
'tz_handling' => 'site',
'todate' => 'required',
'repeat' => 0,
'repeat_collapsed' => '',
'output_format_date' => $short_date_format,
'output_format_custom' => '',
'output_format_date_long' => $date_only_format,
'output_format_custom_long' => '',
'output_format_date_medium' => $date_only_format,
'output_format_custom_medium' => '',
'output_format_date_short' => $date_only_format,
'output_format_custom_short' => '',
'widget' => array(
'default_value' => 'blank',
'default_value_code' => '',
'default_value2' => 'same',
'default_value_code2' => '',
'input_format' => $short_date_format,
'input_format_custom' => '',
'increment' => '15',
'text_parts' => array(),
'year_range' => '-3:+3',
'label_position' => 'above',
'label' => 'Reservation',
'weight' => '-1',
'description' => 'Select the start and end times for your reservation.',
'type' => 'date_popup',
'module' => 'date',
),
),
);
// Need to load the CCK include file where content_field_instance_create() is defined.
module_load_include('inc', 'content', 'includes/content.crud');
foreach ($merci_reservation_fields as $field) {
// Create the fields
if (!content_field_instance_read(array(
'field_name' => $field['field_name'],
), TRUE)) {
content_field_instance_create($field, FALSE);
if (array_key_exists('group', $field)) {
fieldgroup_update_fields($field);
}
}
}
// Clear caches and rebuild menu.
content_clear_type_cache(TRUE);
menu_rebuild();
}
function merci_add_group_taxonomy() {
// borrowed from Forum module
// Create the forum vocabulary if it does not exist. Assign the vocabulary
// a low weight so it will appear first in forum topic create and edit
// forms.
// Delete the vocabulary.
$vid = variable_get('merci_equipment_grouping_vid', '');
if (!taxonomy_vocabulary_load($vid)) {
$vocabulary = array(
'name' => t('MERCI Equipment Grouping'),
'multiple' => 0,
'required' => 0,
'hierarchy' => 0,
'relations' => 0,
'module' => 'merci',
'weight' => -10,
);
taxonomy_save_vocabulary($vocabulary);
variable_set('merci_equipment_grouping_vid', $vocabulary['vid']);
}
}
Functions
Name | Description |
---|---|
merci_add_group_taxonomy | |
merci_create_cck_fields | |
merci_enable | Implementation of hook_enable(). |
merci_install | Implementation of hook_install(). |
merci_schema | Implements hook_schema(). |
merci_uninstall | Implementation of hook_uninstall(). |
merci_update_1 | |
merci_update_3 | |
merci_update_4 | |
merci_update_5 | |
merci_update_6200 | |
merci_update_6201 | |
merci_update_6202 | |
merci_update_6203 | |
merci_update_6204 | |
merci_update_6205 | |
merci_update_6206 | |
merci_update_6207 | |
merci_update_6208 | |
merci_update_6209 | |
merci_update_6210 | |
merci_update_6211 | |
merci_update_6212 | |
merci_update_6213 | |
merci_update_6214 |