Save form defaults or recommended values.

Paramètres

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 dans ./advagg.admin.inc
Clear out the advagg cache bin when the save configuration button is pressed.
advagg_bundler_admin_settings_form_submit dans advagg_bundler/advagg_bundler.admin.inc
Submit callback, clear out the advagg cache bin.
advagg_mod_admin_settings_form_submit dans advagg_mod/advagg_mod.admin.inc
Submit callback, clear out the advagg cache bin.
advagg_relocate_admin_settings_form_submit dans advagg_relocate/advagg_relocate.admin.inc
Submit callback, clear out the advagg cache bin.

Fichier

./advagg.module, line 6865

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;
}