You are here

public function MultipleUpdatesForm::handleSubmissions in Scheduled Publish 8.3

Handles submissions.

1 call to MultipleUpdatesForm::handleSubmissions()
MultipleUpdatesForm::buildForm in src/Form/MultipleUpdatesForm.php
Form constructor.

File

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

Class

MultipleUpdatesForm

Namespace

Drupal\scheduled_publish\Form

Code

public function handleSubmissions(FormStateInterface $form_state) {
  $triggering_element = $form_state
    ->getTriggeringElement();
  if (!$triggering_element || !isset($triggering_element['#name'])) {
    return;
  }

  // Selecting workflow.
  if ($triggering_element['#name'] === 'workflow') {
    $workflow = $form_state
      ->getValue('workflow');
    $form_state
      ->set([
      'scheduled_publish',
      'workflow',
    ], $workflow);
    return;
  }

  // Saving new entities.
  if ($triggering_element['#name'] === 'sp-entities-save') {
    $this
      ->submitSaveEntities($form_state);
    return;
  }

  // Saving new states.
  if ($triggering_element['#name'] === 'sp-state-add') {
    $this
      ->submitSaveState($form_state);
  }
  if (!isset($triggering_element['#sp_row_delta'])) {
    return;
  }
  $states = $form_state
    ->get([
    'scheduled_publish',
    'states',
  ]);

  // Enabling remove form.
  $button_name = 'sp-state-remove-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    $states[$triggering_element['#sp_row_delta']]['form'] = 'remove';
  }

  // Canceling remove form.
  $button_name = 'sp-state-remove-cancel-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    $states[$triggering_element['#sp_row_delta']]['form'] = NULL;
  }

  // Saving remove form.
  $button_name = 'sp-state-remove-confirm-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    unset($states[$triggering_element['#sp_row_delta']]);
  }

  // Enabling edit form.
  $button_name = 'sp-state-edit-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    $states[$triggering_element['#sp_row_delta']]['form'] = 'edit';
  }

  // Canceling edit form.
  $button_name = 'sp-state-edit-cancel-' . $triggering_element['#sp_row_delta'];
  if ($triggering_element['#name'] === $button_name) {
    $states[$triggering_element['#sp_row_delta']]['form'] = NULL;
  }

  // Saving edit form.
  $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['value']['date'] && $values['value']['time']) {
      $date = new DrupalDateTime($values['value']['date'] . ' ' . $values['value']['time'], date_default_timezone_get());
      $date_display = $date
        ->format('d.m.Y - H:i');
      $date
        ->setTimezone(new \DateTimezone(ScheduledPublish::STORAGE_TIMEZONE));
      $states[$triggering_element['#sp_row_delta']] = [
        'date' => $date
          ->format(ScheduledPublish::DATETIME_STORAGE_FORMAT),
        'date_display' => $date_display,
        'state' => $values['moderation_state'],
        'state_display' => NULL,
        'state_options' => [],
        'delta' => NULL,
        'form' => NULL,
      ];
    }
  }
  $form_state
    ->set([
    'scheduled_publish',
    'states',
  ], $states);
  $this
    ->handleStates($form_state);
}