You are here

public function MultipleUpdatesForm::handleStates in Scheduled Publish 8.3

Handles state values, clean-up and ordering.

2 calls to MultipleUpdatesForm::handleStates()
MultipleUpdatesForm::handleSubmissions in src/Form/MultipleUpdatesForm.php
Handles submissions.
MultipleUpdatesForm::submitSaveState in src/Form/MultipleUpdatesForm.php
Saves state into form state.

File

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

Class

MultipleUpdatesForm

Namespace

Drupal\scheduled_publish\Form

Code

public function handleStates(FormStateInterface $form_state) {
  $entity = $form_state
    ->get([
    'scheduled_publish',
    'first_entity',
  ]);
  $orig_status = $entity->moderation_state->value;
  $m_options = $this
    ->getModerationOptions($entity);
  $states = $form_state
    ->get([
    'scheduled_publish',
    'states',
  ]);

  // Make sure states are ordered correctly.
  $this
    ->handleStateOrdering($states);
  foreach ($states as $key => $state) {
    if (isset($m_options[$state['state']])) {
      $states[$key]['state_display'] = $m_options[$state['state']];
      $states[$key]['state_options'] = $m_options;
      $entity->moderation_state->value = $state['state'];
      $m_options = $this
        ->getModerationOptions($entity);
    }
    else {

      // Delete invalid state changes.
      unset($states[$key]);
    }
  }
  $entity->moderation_state->value = $orig_status;

  // Adjust ordering in case any invalid entries got removed.
  $this
    ->handleStateOrdering($states);
  $form_state
    ->set([
    'scheduled_publish',
    'states',
  ], $states);
}