You are here

function advagg_set_admin_form_defaults_recommended in Advanced CSS/JS Aggregation 7.2

Save form defaults or recommended values.

Parameters

array $form_state: Form state array from drupal form submit.

string $trigger_key: The key of the setting from the form that controls this.

4 calls to advagg_set_admin_form_defaults_recommended()
advagg_admin_settings_form_submit in ./advagg.admin.inc
Clear out the advagg cache bin when the save configuration button is pressed.
advagg_bundler_admin_settings_form_submit in advagg_bundler/advagg_bundler.admin.inc
Submit callback, clear out the advagg cache bin.
advagg_mod_admin_settings_form_submit in advagg_mod/advagg_mod.admin.inc
Submit callback, clear out the advagg cache bin.
advagg_relocate_admin_settings_form_submit in advagg_relocate/advagg_relocate.admin.inc
Submit callback, clear out the advagg cache bin.

File

./advagg.module, line 6863
Advanced CSS/JS aggregation module.

Code

function advagg_set_admin_form_defaults_recommended(array &$form_state, $trigger_key) {
  $changed = array();
  $recommended_values = array();

  // Set to recommended values.
  if ($form_state['values'][$trigger_key] == 2) {
    $recommended_values = advagg_find_all_recommended_admin_values($form_state['complete form']);
    foreach ($recommended_values as $key => $value) {
      if (!isset($form_state['values'][$key])) {
        $changed[$key] = array(
          $value,
        );
      }
      elseif ($value != $form_state['values'][$key]) {
        $changed[$key] = array(
          $value,
          $form_state['values'][$key],
        );
      }
      $form_state['values'][$key] = $value;
    }
  }

  // Set to defaults.
  if ($form_state['values'][$trigger_key] == 0 || $form_state['values'][$trigger_key] == 2) {

    // Reset to defaults.
    foreach ($form_state['values'] as $key => &$value) {

      // Skip non advagg settings, trigger key, or if a recommended value.
      if (strpos($key, 'advagg_') !== 0 || $key === $trigger_key || isset($changed[$key]) || isset($recommended_values[$key])) {
        continue;
      }

      // Default to FALSE.
      $default = FALSE;

      // Get easy defaults.
      if (defined(strtoupper($key))) {
        $default = constant(strtoupper($key));
      }

      // Get more complex default values.
      if ($key === 'advagg_resource_hints_preload_settings') {
        $default = advagg_get_resource_hints_preload_settings(TRUE);
        foreach ($default as $key => &$values) {
          $default[$key]['weight'] = $values['#weight'];
          unset($default[$key]['#weight'], $values['#weight'], $default[$key]['title'], $values['title']);
          ksort($values);
        }
        ksort($default);
        foreach ($value as $key => &$values) {
          ksort($values);
        }
        ksort($value);
      }
      if ($key === 'advagg_relocate_css_inline_import_browsers') {
        $default = array(
          'woff2' => 'woff2',
          'woff' => 'woff',
          'ttf' => 'ttf',
          'eot' => 0,
          'svg' => 0,
        );
      }

      // See if it changed.
      if ($default != $value) {

        // After, Before.
        $changed[$key] = array(
          $default,
          $value,
        );
        $value = $default;
      }
    }
  }
  if ($form_state['values'][$trigger_key] == 4) {
    $changed = advagg_find_all_changed_admin_values($form_state['complete form']);
    if (isset($changed[$trigger_key])) {
      unset($changed[$trigger_key]);
    }
  }
  $all_titles_descriptions = advagg_find_title($form_state['complete form']);
  foreach ($changed as $key => $values) {

    // Remove things that didn't really change.
    if (isset($values[1])) {
      if ($values[0] == $values[1]) {
        unset($changed[$key]);
        continue;
      }
      if (is_string($values[0]) && is_string($values[1]) && trim($values[0]) == trim($values[1])) {
        unset($changed[$key]);
        continue;
      }
    }

    // Make output nicer.
    if (!isset($values[1])) {
      $values[1] = NULL;
    }
    if (is_bool($values[0]) && !is_bool($values[1]) || !is_bool($values[0]) && is_bool($values[1])) {
      $values[0] = (bool) $values[0];
      $values[1] = (bool) $values[1];
    }
    if (is_int($values[0]) && !is_int($values[1]) || !is_int($values[0]) && is_int($values[1])) {
      $values[0] = (int) $values[0];
      $values[1] = (int) $values[1];
    }

    // Let user know what changed.
    if (empty($all_titles_descriptions[$key])) {
      drupal_set_message(t('%before -> %after for %title', array(
        '%title' => $key,
        '%before' => var_export($values[1], TRUE),
        '%after' => var_export($values[0], TRUE),
      )));
    }
    else {
      drupal_set_message(t('%before -> %after for %title', array(
        '%title' => $all_titles_descriptions[$key],
        '%before' => var_export($values[1], TRUE),
        '%after' => var_export($values[0], TRUE),
      )));
    }
  }
  return $changed;
}