You are here

function tools_admin_form_submit in Tools 7

Submit handler for the 'manage features' form

File

./tools.admin.inc, line 163

Code

function tools_admin_form_submit($form, &$form_state) {

  // Compare submitted values to enabled modules
  $confirmation = false;
  $features = tools_get_features();
  $enabled_features = array();
  foreach ($features as $feature) {
    if ($feature->status == 1) {
      $enabled_features[] = $feature->name;
    }
  }
  foreach ($form_state['values']['status'] as $feature_name => $feature_status) {

    // Are we disabling a feature?
    if ($feature_status == 0 && in_array($feature_name, $enabled_features)) {
      $confirmation = true;
    }
  }

  // Only show confirmation form if a feature is being disabled
  if (!isset($form_state['storage']['confirm']) && $confirmation) {
    $form_state['storage']['confirm'] = TRUE;
    $form_state['rebuild'] = TRUE;
  }
  else {

    // Process the form
    // Increase memory limits
    ini_set('memory_limit', '512M');
    ini_set('max_execution_time', '60');
    $status = $form_state['values']['status'];
    $install = array_keys(array_filter($status));
    $disable = array_diff(array_keys($status), $install);

    // Disable first. If there are any features that are disabled that are
    // dependencies of features that have been queued for install, they will
    // be re-enabled.
    module_disable($disable);
    features_install_modules($install);
    if (module_exists('views')) {
      ctools_include('export');
      ctools_export_load_object_reset('views_view');
    }
    menu_rebuild();
    menu_cache_clear_all();
    drupal_flush_all_caches();
    drupal_set_message(t('The configuration options have been saved.'));
  }
}