Commit 8445043c authored by webchick's avatar webchick

Issue #1782244 follow-up by sun, znerol: Fixed Convert image styles array...

Issue #1782244 follow-up by sun, znerol: Fixed Convert image styles  array into ImageStyle (extends ConfigEntity).
parent 65872127
......@@ -206,23 +206,11 @@ function image_style_form_submit($form, &$form_state) {
}
}
// Update the image style name if it has changed. We can not rename a piece
// of config, all we can do is create a new one and delete the old one.
if (isset($form_state['values']['name']) && $style->id() != $form_state['values']['name']) {
$old_style = $style;
$data = array(
'effects' => $style->effects,
'name' => $form_state['values']['name'],
);
$style = entity_create('image_style', $data);
}
$style->set('name', $form_state['values']['name']);
$style->set('label', $form_state['values']['label']);
$style->save();
if (isset($old_style)) {
image_style_delete($old_style, $style->id());
}
$status = $style->save();
if ($form_state['values']['op'] == t('Update style')) {
if ($status == SAVED_UPDATED) {
drupal_set_message(t('Changes to the style have been saved.'));
}
$form_state['redirect'] = 'admin/config/media/image-styles/edit/' . $style->id();
......@@ -262,11 +250,10 @@ function image_style_add_form($form, &$form_state) {
* Submit handler for adding a new image style.
*/
function image_style_add_form_submit($form, &$form_state) {
$style = array(
$style = entity_create('image_style', array(
'name' => $form_state['values']['name'],
'label' => $form_state['values']['label'],
);
$style = entity_create('image_style', $style);
));
$style->save();
drupal_set_message(t('Style %name was created.', array('%name' => $style->label())));
$form_state['redirect'] = 'admin/config/media/image-styles/edit/' . $style->id();
......@@ -306,8 +293,8 @@ function image_style_delete_form($form, &$form_state, $style) {
*/
function image_style_delete_form_submit($form, &$form_state) {
$style = $form_state['image_style'];
image_style_delete($style, $form_state['values']['replacement']);
$style->set('replacementID', $form_state['values']['replacement']);
$style->delete();
drupal_set_message(t('Style %name was deleted.', array('%name' => $style->label())));
$form_state['redirect'] = 'admin/config/media/image-styles';
}
......@@ -316,8 +303,8 @@ function image_style_delete_form_submit($form, &$form_state) {
* Form builder; Form for adding and editing image effects.
*
* This form is used universally for editing all image effects. Each effect adds
* its own custom section to the form by calling the form function specified in
* hook_image_effects().
* its own custom section to the form by calling the 'form callback' specified
* in hook_image_effect_info().
*
* @param $form_state
* An associative array containing the current state of the form.
......@@ -327,8 +314,6 @@ function image_style_delete_form_submit($form, &$form_state) {
* An image effect array.
*
* @ingroup forms
* @see hook_image_effects()
* @see image_effects()
* @see image_resize_form()
* @see image_scale_form()
* @see image_rotate_form()
......
......@@ -71,6 +71,15 @@ function image_help($path, $arg) {
}
}
/**
* Entity URI callback for image style.
*/
function image_style_entity_uri(ImageStyle $style) {
return array(
'path' => 'admin/config/media/image-styles/manage/' . $style->id(),
);
}
/**
* Implements hook_menu().
*/
......@@ -326,9 +335,9 @@ function image_file_predelete(File $file) {
}
/**
* Implements hook_image_style_save().
* Implements hook_image_style_update().
*/
function image_image_style_save($style) {
function image_image_style_update(ImageStyle $style) {
if ($style->id() != $style->getOriginalID()) {
$instances = field_read_instances();
// Loop through all fields searching for image fields.
......@@ -361,10 +370,17 @@ function image_image_style_save($style) {
/**
* Implements hook_image_style_delete().
*/
function image_image_style_delete($style) {
image_image_style_save($style);
function image_image_style_delete(ImageStyle $style) {
// Flush cached media for the style.
image_style_flush($style);
// Check whether field instance settings need to be updated.
// In case no replacement style was specified, all image fields that are using
// the deleted style are left in a broken state.
if ($new_id = $style->get('replacementID')) {
// The deleted ID is still set as originalID.
$style->set('name', $new_id);
image_image_style_update($style);
}
}
/**
......@@ -529,38 +545,6 @@ function image_image_style_load($styles) {
}
}
/**
* Implements hook_image_style_update().
*/
function image_image_style_update($style) {
// Flush cached media for the style.
image_style_flush($style);
}
/**
* Delete an image style.
*
* @param Drupal\image\Plugin\Core\Entity\ImageStyle $style
* An image style array.
* @param $replacement_style_name
* (optional) When deleting a style, specify a replacement style name so
* that existing settings (if any) may be converted to a new style.
*
* @return
* TRUE on success.
*/
function image_style_delete($style, $replacement_style_name = '') {
$style->delete();
// Let other modules update as necessary on save.
if ($replacement_style_name) {
$style->set('name', $replacement_style_name);
}
module_invoke_all('image_style_delete', $style);
return TRUE;
}
/**
* Get an array of image styles suitable for using as select list options.
*
......@@ -766,12 +750,6 @@ function image_style_flush($style) {
// Let other modules update as necessary on flush.
module_invoke_all('image_style_flush', $style);
// // Clear image style and effect caches.
// cache()->delete('image_styles');
// cache()->deletePrefix('image_effects:');
// drupal_static_reset('image_styles');
// drupal_static_reset('image_effects');
// Clear field caches so that formatters may be added for this style.
field_info_cache_clear();
drupal_theme_rebuild();
......@@ -905,43 +883,6 @@ function image_effect_definition_load($effect) {
return isset($definitions[$effect]) ? $definitions[$effect] : FALSE;
}
/**
* Load all image effects from the database.
*
* @return
* An array of all image effects.
* @see image_effect_load()
*
* @todo Remove after moving/resolving the todo.
*/
function image_effects() {
$effects = &drupal_static(__FUNCTION__);
if (!isset($effects)) {
$effects = array();
// Add database image effects.
// @todo Strictly speaking, this is obsolete. However, it demonstrates a
// use-case for retrieving/listing configuration objects using a wildcard
// within the name (instead of only the suffix).
$result = db_select('image_effects', NULL, array('fetch' => PDO::FETCH_ASSOC))
->fields('image_effects')
->orderBy('image_effects.weight', 'ASC')
->execute();
foreach ($result as $effect) {
$effect['data'] = unserialize($effect['data']);
$definition = image_effect_definition_load($effect['name']);
// Do not load image effects whose definition cannot be found.
if ($definition) {
$effect = array_merge($definition, $effect);
$effects[$effect['ieid']] = $effect;
}
}
}
return $effects;
}
/**
* Load a single image effect.
*
......@@ -991,6 +932,10 @@ function image_effect_load($ieid, $style_name) {
* The saved image effect array. The 'ieid' key will be set for the effect.
*/
function image_effect_save($style, &$effect) {
// Remove all values that are not properties of an image effect.
// @todo Convert image effects into plugins.
$effect = array_intersect_key($effect, array_flip(array('ieid', 'module', 'name', 'data', 'weight')));
// Generate a unique image effect ID for a new effect.
if (empty($effect['ieid'])) {
$uuid = new Uuid();
......@@ -1106,11 +1051,3 @@ function _image_effect_definitions_sort($a, $b) {
return strcasecmp($a['name'], $b['name']);
}
/**
* URI callbacks for image styles.
*/
function image_style_uri(ImageStyle $image_style) {
return array(
'path' => 'admin/config/media/image-styles/manage/' . $image_style->id(),
);
}
......@@ -19,7 +19,7 @@
* label = @Translation("Image style"),
* module = "image",
* controller_class = "Drupal\image\ImageStyleStorageController",
* uri_callback = "image_style_uri",
* uri_callback = "image_style_entity_uri",
* config_prefix = "image.style",
* entity_keys = {
* "id" = "name",
......@@ -30,6 +30,13 @@
*/
class ImageStyle extends ConfigEntityBase {
/**
* The name of the image style to use as replacement upon delete.
*
* @var string
*/
protected $replacementID;
/**
* The name of the image style.
*
......@@ -51,7 +58,6 @@ class ImageStyle extends ConfigEntityBase {
*/
public $effects;
/**
* Overrides Drupal\Core\Entity\Entity::id().
*/
......
......@@ -17,7 +17,6 @@
* image_style_create_derivative()
*
* image.module:
* image_style_delete()
* image_style_options()
* image_style_flush()
* image_effect_definition_load()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment