You are here

function imageinfo_cache_admin_settings_form_submit in Imageinfo Cache 7.3

Only record the non-default presets.

Parameters

array $form: Drupal form array.

array $form_state: Drupal form state.

1 string reference to 'imageinfo_cache_admin_settings_form_submit'
imageinfo_cache_admin_settings_form in ./imageinfo_cache.admin.inc
Form builder; Configure advagg settings.

File

./imageinfo_cache.admin.inc, line 223
Admin page callbacks for the imageinfo cache module.

Code

function imageinfo_cache_admin_settings_form_submit(array $form, array &$form_state) {

  // Flush the menu cache if imageinfo_cache_disable_on_demand_generation is
  // changing state.
  $new = $form_state['values']['imageinfo_cache_disable_on_demand_generation'];
  $old = variable_get('imageinfo_cache_disable_on_demand_generation', IMAGEINFO_CACHE_DISABLE_ON_DEMAND_GENERATION);
  if ($new !== $old) {
    drupal_set_message(t('Rebuilding the menu cache.'));
    $GLOBALS['conf']['imageinfo_cache_disable_on_demand_generation'] = $new;
    drupal_register_shutdown_function('menu_rebuild');
  }
  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
  if ($op === t('Reset to defaults')) {
    foreach ($form_state['values'] as $key => $value) {
      if (is_array($value)) {
        variable_del($key);
      }
      elseif (strpos($key, 'imageinfo_cache_') === 0) {
        variable_del($key);
      }
    }
    drupal_set_message(t('The configuration options have been reset to their default values.'));
    return;
  }
  module_load_include('inc', 'imageinfo_cache', 'imageinfo_cache');

  // Get image styles; set value to 0.
  $image_styles = array_fill_keys(array_keys(image_styles()), 0);

  // Get the default values.
  $default_values = array();
  $image_fields = imageinfo_cache_get_image_fields(FALSE, FALSE);
  foreach ($image_fields as $field_name => &$image_styles_used) {
    if (isset($image_styles_used['#field_info'])) {
      unset($image_styles_used['#field_info']);
    }
    $image_styles_used = array_keys($image_styles_used);
    if (empty($image_styles_used)) {
      $default_values['imageinfo_cache_' . $field_name] = array();
    }
    else {
      $default_values['imageinfo_cache_' . $field_name] = array_combine($image_styles_used, $image_styles_used);
    }

    // Add in not selected image styles.
    if (!is_array($default_values['imageinfo_cache_' . $field_name])) {
      $default_values['imageinfo_cache_' . $field_name] = array();
    }
    $default_values['imageinfo_cache_' . $field_name] += $image_styles;
    ksort($default_values['imageinfo_cache_' . $field_name]);
  }

  // Get the saved values.
  $values = array();
  foreach ($form_state['values'] as $field_name => $selection) {
    if (is_array($selection) && isset($default_values[$field_name])) {
      ksort($selection);
      $values[$field_name] = $selection;
    }
    elseif (strpos($field_name, 'imageinfo_cache_') === 0) {
      variable_set($field_name, $selection);
    }
  }

  // Compute the array difference.
  $array_diff = array();
  foreach ($default_values as $field_name => $image_styles_used) {
    $array_diff[$field_name] = array_diff_assoc($values[$field_name], $image_styles_used);
  }

  // Save values.
  foreach ($array_diff as $key => $value) {
    if (empty($value)) {
      variable_del($key);
    }
    variable_set($key, $value);
  }
  drupal_set_message(t('The configuration options have been saved.'));
}