function availability_calendars_update_7201 in Availability Calendars 6.2
Same name and namespace in other branches
- 7.2 availability_calendars.install \availability_calendars_update_7201()
Optimize storage for Availability Calendars (issue #1083198).
File
- ./
availability_calendars.install, line 498 - Install, update and uninstall functions for the Availability Calendars module.
Code
function availability_calendars_update_7201(&$sandbox) {
$ret = array();
// Change datetime field to date (text on sqlite).
// Assumption is that the conversion will be executed nicely by the database, keeping the date part...
db_change_field($ret, 'availability_calendars_day', 'date', 'date', array(
'description' => 'Date of availability state.',
'mysql_type' => 'DATE',
'pgsql_type' => 'DATE',
'sqlite_type' => 'TEXT',
// SQLite does not have a DATE type
'not null' => TRUE,
));
// Add primary key on nid, date.
// Drop first but do not mention this in the results. People might already
// have added a primary key themselves (e.g. to edit the table in a db-tool).
$ret1 = array();
@db_drop_primary_key($ret1, 'availability_calendars_day');
db_add_primary_key($ret, 'availability_calendars_day', array(
'nid',
'date',
));
// Remove fields year, month, day. Do this after changing the type of the datetime field,
// and after setting the primary key (possibly removing it from these fields if set manually earlier).
// We will only get here if the prior operations succeeded and thus we can be quite sure that we will not
// loose any availability data.
db_drop_field($ret, 'availability_calendars_day', 'day');
db_drop_field($ret, 'availability_calendars_day', 'month');
db_drop_field($ret, 'availability_calendars_day', 'year');
// Warn about a change that needs a regeneration of the CSS file
$link = l(st('Availability Calendars') . ' ' . st('Styling'), 'admin/settings/availability-calendars/styling');
drupal_set_message(st("Please visit the '!link' page to regenerate the CSS file.", array(
'!link' => $link,
)), 'warning');
return $ret;
}