You are here

public function ScheduledPublishWidget::handleEntries in Scheduled Publish 8.3

Handles entry values, clean-up and ordering.

3 calls to ScheduledPublishWidget::handleEntries()
ScheduledPublishWidget::handleSubmissions in src/Plugin/Field/FieldWidget/ScheduledPublishWidget.php
Handles submissions.
ScheduledPublishWidget::prepareFormState in src/Plugin/Field/FieldWidget/ScheduledPublishWidget.php
Prepares the form state for the current widget.
ScheduledPublishWidget::submitSaveEntry in src/Plugin/Field/FieldWidget/ScheduledPublishWidget.php
Saves entry into form state.

File

src/Plugin/Field/FieldWidget/ScheduledPublishWidget.php, line 536

Class

ScheduledPublishWidget
Plugin implementation of the 'scheduled_publish_widget' widget.

Namespace

Drupal\scheduled_publish\Plugin\Field\FieldWidget

Code

public function handleEntries(FormStateInterface $form_state, $field_name) {
  $formObject = $form_state
    ->getFormObject();
  $entity = $formObject
    ->getEntity();
  $orig_status = $entity->moderation_state->value;
  $m_options = $this
    ->getModerationOptions($entity);
  $entries = $form_state
    ->get([
    'scheduled_publish',
    $field_name,
  ]);

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

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

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