You are here

public function HtaccessDisplayForm::htaccess_admin_settings_generate_submit in Htaccess 8.2

Admin htaccess generate submit handler.

File

src/Form/HtaccessDisplayForm.php, line 149
Administration pages.

Class

HtaccessDisplayForm
Defines a form to configure RSVP List module settings

Namespace

Drupal\htaccess\Form

Code

public function htaccess_admin_settings_generate_submit($form, &$form_state) {
  \Drupal::moduleHandler()
    ->invokeAll("htaccess_generate_before");
  $htaccess_template = file_get_contents(HTACCESS_TEMPLATE_PATH);
  $rules_before_config = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_custom_settings');
  $redirection_config = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_url_prefix_redirection');
  $ssl_config = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_ssl') == 'HTTPS_mixed_mode' ? "%{ENV:protossl}" : "s";
  $boot_rules = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_boost_module_rules');
  switch ($redirection_config) {
    case 'without_www':
      $without_www_config = "RewriteCond %{HTTP_HOST} ^www\\.(.+)\$ [NC]" . PHP_EOL;
      $without_www_config .= "RewriteRule ^ http" . $ssl_config . "://%1%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      $with_www_config = "#RewriteCond %{HTTP_HOST} ." . PHP_EOL;
      $with_www_config .= "#RewriteCond %{HTTP_HOST} !^www\\. [NC]" . PHP_EOL;
      $with_www_config .= "#RewriteRule ^ http" . $ssl_config . "://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      break;
    case 'with_www':
      $without_www_config = "#RewriteCond %{HTTP_HOST} ^www\\.(.+)\$ [NC]" . PHP_EOL;
      $without_www_config .= "#RewriteRule ^ http" . $ssl_config . "://%1%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      $with_www_config = "RewriteCond %{HTTP_HOST} ." . PHP_EOL;
      $with_www_config .= "RewriteCond %{HTTP_HOST} !^www\\. [NC]" . PHP_EOL;
      $with_www_config .= "RewriteRule ^ http" . $ssl_config . "://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      break;
    default:
      $without_www_config = "#RewriteCond %{HTTP_HOST} ^www\\.(.+)\$ [NC] " . PHP_EOL;
      $without_www_config .= "#RewriteRule ^ http" . $ssl_config . "://%1%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      $with_www_config = "#RewriteCond %{HTTP_HOST} ." . PHP_EOL;
      $with_www_config .= "#RewriteCond %{HTTP_HOST} !^www\\. [NC]" . PHP_EOL;
      $with_www_config .= "#RewriteRule ^ http" . $ssl_config . "://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]" . PHP_EOL;
      break;
  }
  $symbolic_links_config = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_symlinks');
  switch ($symbolic_links_config) {
    case 'FollowSymLinks':
      $symbolic_links_config = "+FollowSymLinks";
      break;
    case 'SymLinksifOwnerMatch':
      $symbolic_links_config = "+SymLinksifOwnerMatch";
      break;
    default:
      $symbolic_links_config = "+FollowSymLinks";
      break;
  }
  $ssl_force_redirect_rules = "# Force redirect HTTPS." . PHP_EOL;
  $ssl_force_redirect_rules .= "RewriteCond %{HTTPS} off" . PHP_EOL;
  $ssl_force_redirect_rules .= "RewriteCond %{HTTP:X-Forwarded-Proto} !https" . PHP_EOL;
  $ssl_force_redirect_rules .= "RewriteRule ^(.*)\$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]" . PHP_EOL;
  $ssl_force_redirect = \Drupal::config('htaccess.settings')
    ->get('htaccess_settings_ssl') == 'HTTPS_mixed_mode' ? NULL : $ssl_force_redirect_rules;
  $search = array(
    "%%%rules_before%%%",
    "%%%symbolic_links%%%",
    "%%%ssl_force_redirect%%%",
    "%%%with_www%%%",
    "%%%without_www%%%",
    "%%%boost_rules%%%",
  );
  $replace = array(
    $rules_before_config,
    $symbolic_links_config,
    $ssl_force_redirect,
    $with_www_config,
    $without_www_config,
    $boot_rules,
  );
  $htaccess = str_replace($search, $replace, $htaccess_template);
  $htaccess_profile_name = $form_state['values']['htaccess_settings_generate_name'];
  $htaccess_description = $form_state['values']['htaccess_settings_generate_description'];
  db_insert('htaccess')
    ->fields(array(
    'name' => $htaccess_profile_name,
    'description' => $htaccess_description,
    'htaccess' => $htaccess,
    'created' => REQUEST_TIME,
  ))
    ->execute();
  \Drupal::moduleHandler()
    ->invokeAll("htaccess_generate_after", [
    $htaccess,
  ]);
  drupal_set_message(t('A new htaccess profile has been generated.'));
  drupal_goto("admin/config/system/htaccess/deployment");
}