You are here

function skinr_submit_handler in Skinr 6

Same name and namespace in other branches
  1. 6.2 skinr.handlers.inc \skinr_submit_handler()

Skinr submit handler.

Parameters

&$form: Passes in the $form parameter from hook_form_submit().

$form_state: Passes in the $form_state parameter from hook_form_submit().

$module: The module that is currently being processed.

$form_settings: The settings from hook_skinr_data() for the form that's currently being processed.

Return value

TRUE if we get access, FALSE if we don't.

1 string reference to 'skinr_submit_handler'
_skinr_fetch_data_defaults in ./skinr.module
Fetch default configuration data for modules.

File

includes/handlers.inc, line 70
Defines the various handler objects to support Skinr.

Code

function skinr_submit_handler(&$form, $form_state, $module, $form_settings) {
  if (isset($form_state['values']['skinr_settings'][$module . '_group'])) {
    foreach ($form_state['values']['skinr_settings'][$module . '_group'] as $theme_name => $theme) {
      if (!empty($theme['widgets']) && is_array($theme['widgets']) || isset($theme['advanced']['_additional'])) {
        $hook = $module;
        $key = skinr_handler('form_index_handler', 'submit', $form_settings['index_handler'], $form, $form_state);
        $value = array();
        $saved = skinr_get($theme_name, $hook, $key);
        if (!empty($theme['widgets']) && is_array($theme['widgets'])) {
          foreach ($theme['widgets'] as $skin_id => $skin_value) {
            $skin_value = is_array($skin_value) ? _skinr_array_strip_empty($skin_value) : $skin_value;
            if (!empty($skin_value)) {
              $value[$skin_id] = $skin_value;
            }
          }
        }
        if (isset($theme['advanced']['_additional'])) {
          $theme['advanced']['_additional'] = trim($theme['advanced']['_additional']);
          if (!empty($theme['advanced']['_additional'])) {
            $value['_additional'] = $theme['advanced']['_additional'];
          }
        }
        else {
          if (!user_access('access skinr classes') && isset($saved['_additional'])) {

            // The user didn't have access to change this. Ensure the existing
            // custom classes remain by populating the element with the
            // previously saved values.
            $value['_additional'] = $saved['_additional'];
          }
        }
        if (isset($theme['advanced']['_template'])) {
          $theme['advanced']['_template'] = trim($theme['advanced']['_template']);
          if (!empty($theme['advanced']['_template'])) {
            $value['_template'] = $theme['advanced']['_template'];
          }
        }
        else {
          if (!user_access('access skinr classes') && isset($saved['_template'])) {

            // The user didn't have access to change this. Ensure the existing
            // template selection remains by populating the element with the
            // previously saved values.
            $value['_template'] = $saved['_template'];
          }
        }
        if (empty($key)) {

          // We didn't receive a valid key, so raise an error
          drupal_set_message(t("Skinr settings weren't saved due to an error."), 'error');
        }
        skinr_set($theme_name, $hook, $key, $value);
      }
    }
  }
}