function availability_calendars_update_7202 in Availability Calendars 7.2
Same name and namespace in other branches
- 6.2 availability_calendars.install \availability_calendars_update_7202()
Optimize storage for Availability Calendars settings (issue #31107230).
File
- ./
availability_calendars.install, line 417 - Install, update and uninstall functions for the Availability Calendars module.
Code
function availability_calendars_update_7202(&$sandbox) {
// - Combine these settings in 1 array in the variables table:
// - startofweek
// - showteaser
// - showkey
// - firstletter
// - hideold
// - defaultstatus
// - monthcount
// - splitday
// - nodeview (exists only on system level)
// Notes: the settings pernodeoverride and supported content types are kept separate
// - Rename availability_calendars_settings_system_generate to availability_calendars_styles_generate.
// - Rename availability_calendar_settings_system-type_... to availability_calendar_settings_content_type_....
// Group system settings
$settings_system = availability_calendars_get_settings_old();
$settings_styles_generate = variable_get('availability_calendars_settings_system_generate');
$settings_system_pernodeoverride = variable_get('availability_calendars_settings_system_pernodeoverride');
// Get content type settings into variables.
// Get each unique node id for which there are settings and group these in a 2nd loop further on
global $conf;
$settings_nodes = array();
$settings_content_types = array();
foreach ($conf as $name => $value) {
$matches = array();
if (preg_match('/^availability_calendars_settings_node_([0-9]+)_/', $name, $matches) > 0) {
$settings_nodes[$matches[1]] = TRUE;
}
else {
if (preg_match('/^availability_calendars_settings_system-type_(.+)$/', $name, $matches) > 0) {
$settings_content_types[$matches[1]] = $value;
}
}
}
// Group node settings
foreach ($settings_nodes as $nid => &$value) {
$value = availability_calendars_get_settings_old($nid);
}
// We now have all settings (except the styles) in local variables:
// - Remove old settings.
availability_calendars_variable_del_all('availability_calendars_settings_');
// - Store settings under their new names
variable_set('availability_calendars_settings_system', $settings_system);
variable_set('availability_calendars_settings_system_pernodeoverride', $settings_system_pernodeoverride);
variable_set('availability_calendars_styles_generate', $settings_styles_generate);
foreach ($settings_content_types as $content_type => $value) {
variable_set('availability_calendars_settings_content_type_' . $content_type, $value);
}
// The following loop *might* be time consuming, but for now I'm not rewriting it to do this in batches.
foreach ($settings_nodes as $nid => $value) {
variable_set('availability_calendars_settings_node_' . $nid, $value);
}
}