You are here

protected static function CdnSettingsForm::mapFormValuesToConfig in CDN 8.3

Overrides ValidatableConfigFormBase::mapFormValuesToConfig

File

cdn_ui/src/Form/CdnSettingsForm.php, line 301

Class

CdnSettingsForm
Configure CDN settings for this site.

Namespace

Drupal\cdn_ui\Form

Code

protected static function mapFormValuesToConfig(FormStateInterface $form_state, Config $config) {

  // Vertical tab: 'Status'.
  $config
    ->set('status', (bool) $form_state
    ->getValue('status'));

  // Vertical tab: 'Stream wrappers'.
  $stream_wrappers = array_values(array_filter($form_state
    ->getValue([
    'wrappers',
    'stream_wrappers',
  ])));
  $config
    ->set('stream_wrappers', $stream_wrappers);

  // Vertical tab: 'Mapping'.
  if ($form_state
    ->getValue([
    'mapping',
    'type',
  ]) === 'simple') {
    $simple_mapping = $form_state
      ->getValue([
      'mapping',
      'simple',
    ]);
    $config
      ->set('mapping', []);
    $config
      ->set('mapping.type', 'simple');
    $config
      ->set('mapping.domain', $simple_mapping['domain']);

    // Only the 'extensions' condition is supported in this UI, to KISS.
    if ($simple_mapping['extensions_condition_toggle'] === 'limited') {

      // Set the 'extensions' condition unconditionally.
      $config
        ->set('mapping.conditions.extensions', explode(' ', trim($simple_mapping['extensions_condition_value'])));
    }
    elseif ($simple_mapping['extensions_condition_toggle'] === 'nocssjs') {
      $config
        ->set('mapping.conditions', static::CONDITIONS_PRESET_NOCSSJS);
    }
    else {

      // Remove the 'not' or 'extensions' conditions if set.
      $conditions = $config
        ->getOriginal('mapping.type') === 'simple' ? $config
        ->getOriginal('mapping.conditions') : [];
      if (isset($conditions['not'])) {
        unset($conditions['not']);
      }
      if (isset($conditions['extensions'])) {
        unset($conditions['extensions']);
      }
      $config
        ->set('mapping.conditions', $conditions);
    }
    $config
      ->set('scheme', $simple_mapping['scheme']);
  }

  // Vertical tab: 'Forever cacheable files'.
  $config
    ->set('farfuture.status', (bool) $form_state
    ->getValue([
    'farfuture',
    'status',
  ]));
  return $config;
}