You are here

public function GeneratorForm::validateForm in AT Tools 8.3

Same name and namespace in other branches
  1. 8.2 at_theme_generator/src/Form/GeneratorForm.php \Drupal\at_theme_generator\Form\GeneratorForm::validateForm()

Form validation handler.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Overrides FormBase::validateForm

File

at_theme_generator/src/Form/GeneratorForm.php, line 355

Class

GeneratorForm
Generator form.

Namespace

Drupal\at_theme_generator\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $values = $form_state
    ->getValues();

  // Validate Theme Generator.
  if (!empty($values['generate']['generate_machine_name'])) {
    $machine_name = $values['generate']['generate_machine_name'];
    $theme_data = $this->themeInfoData;
    if (array_key_exists($machine_name, $theme_data) == FALSE) {

      // Targets.
      $target = $values['generate']['options']['generate_directory'];
      $target_error = 'generate][options][generate_directory';
      if ($target == 'custom') {
        $target = $values['generate']['options']['generate_directory_custom'];
        $target_error = 'generate][options][generate_directory_custom';
        if (empty($target)) {
          $form_state
            ->setErrorByName($target_error, t('Custom directory field is empty.'));
        }
      }
      if (!is_dir($target) || !is_writable($target)) {
        $form_state
          ->setErrorByName($target_error, t('The target directory does not exist or is not writable (check permissions and target directory name): <code>:target</code>.', [
          ':target' => $target,
        ]));
      }
      $subtheme_type = $values['generate']['generate_type'];
      $source = '';
      $source_error = '';
      if ($subtheme_type == 'starterkit') {
        $source = drupal_get_path('module', 'at_theme_generator') . '/starterkits/starterkit';
      }
      else {
        if ($subtheme_type == 'clone') {
          $source = drupal_get_path('theme', $values['generate']['generate_clone_source']);
          $source_error = 'generate][generate_clone_source';
        }
        else {
          if ($subtheme_type == 'skin') {
            $source = drupal_get_path('module', 'at_theme_generator') . '/starterkits/skin';
            $source_error = 'generate][generate_skin_base';
          }
        }
      }

      // Check if directories and files exist and are readable/writable etc.
      if (!file_exists($source) && !is_readable($source)) {
        $form_state
          ->setErrorByName($source_error, t('The source theme (starter kit, skin base or clone source) can not be found or is not readable:<br /><code>@source</code>', [
          '@source' => $source,
        ]));
      }
    }
  }
}