You are here

function defaultconfig_optional_admin_submit in Default config 7

File

./defaultconfig.admin.inc, line 123
Main administration page for default config.

Code

function defaultconfig_optional_admin_submit($form, &$form_state) {
  $components = defaultconfig_get_components();
  $enabled_optionals = array();
  defaultconfig_include();
  foreach ($form_state['values']['components'] as $type => $optionals) {
    $optional_values = array();
    if (isset($components[$type])) {
      defaultconfig_component_include($components[$type]);
      $defaults = module_invoke_all($components[$type]['hook']);
      $selected_defaults = array();
      $not_selected = array();
      foreach ($optionals as $name => $status) {
        if (!empty($defaults[$name]) && $status) {
          $selected_defaults[$name] = $defaults[$name];
        }
        else {
          $not_selected[$name] = $defaults[$name];
        }
        $optional_values[$name] = $status;
      }

      // Save enabled stuff.
      $components[$type]['rebuild callback']($components[$type], $selected_defaults);

      // Disable the rest.
      if (isset($components[$type]['disable callback'])) {
        $components[$type]['disable callback']($components[$type], $not_selected);
      }
      foreach ($optional_values as $name => $optional_status) {
        $name = $type . ':' . $name;
        if (isset($form_state['optional_settings'][$name])) {
          $optional = $form_state['optional_settings'][$name];
        }
        else {
          $optional = new stdClass();
          $optional->export_type = 0;
        }
        $enabled_optionals[] = $name;
        $optional->name = $name;
        $optional->status = $optional_status;
        ctools_export_crud_save('defaultconfig_optionals', $optional);
      }
    }
  }
}