function key_save_config in Key 7.2
Same name and namespace in other branches
- 7 key.module \key_save_config()
Save a key configuration.
Parameters
array $fields: The fields of the configuration to save.
bool $messages: TRUE if messages should be displayed.
2 calls to key_save_config()
- key_config_features_rebuild in includes/
key_config.features.inc - Implements hook_features_rebuild().
- key_config_form_submit in includes/
key.admin.inc - Form submission handler for key_config_form().
File
- ./
key.module, line 371 - Provides the ability to manage keys, which can be used by other modules.
Code
function key_save_config($fields, $messages = TRUE) {
// Load the key provider.
$provider = key_get_provider($fields['provider']);
// Serialize any field that is an array.
foreach ($fields as $index => $field) {
if (is_array($field)) {
$fields[$index] = serialize($field);
}
}
// If the created field is empty, set it to the request time.
if (empty($fields['created'])) {
$fields['created'] = REQUEST_TIME;
}
// If the changed field is empty, set it to the request time.
if (empty($fields['changed'])) {
$fields['changed'] = REQUEST_TIME;
}
// Save the configuration.
$merge_status = db_merge('key_config')
->key(array(
'name' => $fields['name'],
))
->fields($fields)
->execute();
// Display message and log to watchdog.
if ($messages) {
$t_args = array(
'%label' => $fields['label'],
);
switch ($merge_status) {
case MergeQuery::STATUS_INSERT:
drupal_set_message(t('The key %label has been added.', $t_args));
watchdog('key', 'Added key %label.', $t_args, WATCHDOG_NOTICE, l(t('view'), KEY_MENU_PATH . '/list'));
break;
case MergeQuery::STATUS_UPDATE:
drupal_set_message(t('The key %label has been updated.', $t_args));
watchdog('key', 'Updated key %label.', $t_args, WATCHDOG_NOTICE, l(t('view'), KEY_MENU_PATH . '/list'));
break;
}
}
// Load the configuration to make sure it was saved.
$key_config = key_get_config($fields['name'], TRUE);
if (empty($key_config)) {
return NULL;
}
// Return the saved configuration.
return $key_config;
}