You are here

public static function MultipleUpdatesForm::validateElement in Scheduled Publish 8.3

Handle element validation.

File

src/Form/MultipleUpdatesForm.php, line 384
Contains \Drupal\scheduled_publish\Form\MultipleUpdatesForm.

Class

MultipleUpdatesForm

Namespace

Drupal\scheduled_publish\Form

Code

public static function validateElement($element, FormStateInterface $form_state) {
  $triggering_element = $form_state
    ->getTriggeringElement();
  if (!$triggering_element || !isset($triggering_element['#name'])) {
    return;
  }
  $error_past_date = t("Date cannot be in the past");

  // Saving new state entries.
  if ($triggering_element['#name'] === 'sp-state-add') {
    $values = $form_state
      ->getValue('states');
    if (!$values || !$values['value']) {
      $form_state
        ->setError($element, t('All fields need to be filled'));
    }
    elseif ($values['value'] < new DrupalDateTime()) {
      $form_state
        ->setError($element, $error_past_date);
    }
  }
  if (!isset($triggering_element['#sp_row_delta'])) {
    return;
  }

  // Editing state entries.
  $button_name = 'sp-state-edit-confirm-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    $value_array = [
      'states',
      'entries',
      $triggering_element['#sp_row_delta'],
      'form',
    ];
    $values = $form_state
      ->getValue($value_array);
    if (!$values['moderation_state'] || !$values['value']['date'] || !$values['value']['time']) {
      $form_state
        ->setError($element, t('All fields need to be filled'));
    }
    elseif (strtotime($values['value']['date'] . ' ' . $values['value']['time']) < time()) {
      $form_state
        ->setError($element, $error_past_date);
    }
  }
}