function styles_style_save_preset in Styles 7.2
Save a style/preset instance.
@TODO: Throw an error instead?
Parameters
string $field_type: The field type of the style/preset to save.
string $container_name: The container.
string $style_name: The name of the style to save to.
string $preset_name: The name of the preset.
boolean $delete_only: If TRUE, then we delete only, rather than saving.
Return value
boolean Return TRUE, or FALSE if the save was not successful.
1 call to styles_style_save_preset()
- styles_ui_style_edit_form_submit in contrib/
styles_ui/ styles_ui.admin.inc - Submission handler for the add style form.
File
- ./
styles.module, line 572 - Bundles similar display formatters together.
Code
function styles_style_save_preset($field_type, $container_name, $style_name, $preset_name, $delete_only = FALSE) {
$query = db_select('styles_presets', 'p');
$query
->addField('p', 'pid');
$query
->condition('p.name', $preset_name);
$query
->condition('p.field_type', $field_type);
$query
->condition('p.container_name', $container_name);
$result = $query
->execute();
foreach ($result as $preset) {
$preset = (array) $preset;
}
if (empty($preset)) {
$preset = array(
'name' => $preset_name,
'field_type' => $field_type,
'container_name' => $container_name,
);
drupal_write_record('styles_presets', $preset);
}
$styles = styles_default_styles($field_type);
if (!isset($styles['styles'][$style_name])) {
return FALSE;
}
else {
$style = $styles['styles'][$style_name];
}
if (!isset($style['sid'])) {
return FALSE;
}
// Delete old style/preset instances for this container.
// Unfortunately, we can't use joins with DeleteQuery. See following comment.
db_query("DELETE FROM {styles_preset_instances} WHERE {styles_preset_instances}.sid = :sid AND EXISTS (SELECT * FROM {styles} s, {styles_presets} p WHERE s.sid = {styles_preset_instances}.sid AND p.pid = {styles_preset_instances}.pid AND s.field_type = p.field_type AND p.container_name = :container_name);", array(
':sid' => $style['sid'],
':container_name' => $container_name,
));
// @TODO: See if there's a way to implement something like the following:
// db_delete('styles_preset_instances')
// ->join('styles', 's')
// ->join('styles_presets', 'p')
// ->condition('s.sid', 'styles_preset_instances.sid')
// ->condition('styles_preset_instances.pid', 'p.pid')
// ->condition('s.field_type', 'p.field_type')
// ->condition('styles_preset_instances.sid', $style['sid'])
// ->condition('p.container_name', $container_name)
// ->execute();
// Write the revised style for an update, unless we're only deleting the old.
if (!$delete_only) {
$record = array(
'sid' => $style['sid'],
'pid' => $preset['pid'],
);
drupal_write_record('styles_preset_instances', $record);
}
// Let other modules update as necessary on save.
module_invoke_all('styles_preset_save', $field_type, $container_name, $style_name, $preset_name, $delete_only);
// Clear all caches and flush.
styles_style_flush($style);
return TRUE;
}