/** * Form builder; Configure clean URL settings. * * @ingroup forms * @see system_settings_form() */ function system_clean_url_settings($form, &$form_state) { global $base_url; $available = FALSE; $conflict = FALSE; // If the request uri is a clean URL, clean URLs must be available. // Otherwise, run a test. if (strpos(request_uri(), '?q=') === FALSE) { $available = TRUE; } else { $request = drupal_http_request($base_url . '/admin/config/search/clean-urls/check'); // If the request returns HTTP 200, clean URLs are available. if (isset($request->code) && $request->code == 200) { $available = TRUE; // If the user started the clean URL test, provide explicit feedback. if (isset($form_state['input']['op']) && $form_state['input']['op'] == t('Run the clean URL test')) { drupal_set_message(t('The clean URL test passed.')); } } else { // If the test failed while clean URLs are enabled, make sure clean URLs // can be disabled. if (variable_get('clean_url',0)) { $conflict = TRUE; // Warn the user of a conflicting situation, unless after processing // a submitted form. if (!isset($form_state['input']['op'])) { drupal_set_message(t('Clean URLs are enabled, but the clean URL test failed. If needed, you can disable clean URLs now.'), 'warning'); } } // If the user started the clean URL test, provide explicit feedback. else if (isset($form_state['input']['op']) && $form_state['input']['op'] == t('Run the clean URL test')) { drupal_set_message(t('The clean URL test failed.'), 'warning'); } } } if ($available || $conflict) { $form['clean_url'] = array( '#type' => 'checkbox', '#title' => t('Enable clean URLs'), '#default_value' => variable_get('clean_url', 0), '#description' => t('Use URLs like example.com/user instead of example.com/?q=user.'), ); $form = system_settings_form($form); if ($conflict) { $form_state['redirect'] = $base_url . '?q=/admin/config/search/clean-urls'; } } else { drupal_add_js(drupal_get_path('module', 'system') . '/system.js'); $form_state['redirect'] = $base_url . '/admin/config/search/clean-urls'; $form['clean_url_description'] = array( '#type' => 'markup', '#markup' => '

' . t('Use URLs like example.com/user instead of example.com/?q=user.'), ); $form['clean_url_test_result'] = array( '#type' => 'markup', '#markup' => '

' . t('Clean URLs cannot be enabled. If you are directed to this page or to a Page not found (404) error after testing for clean URLs, see the online handbook.', array('@handbook' => 'http://drupal.org/node/15365')) . '

', ); $form['clean_url_test'] = array( '#type' => 'submit', '#value' => t('Run the clean URL test'), ); } return $form; }