You are here

function entityqueue_form_widget_form_node_form_submit in Entityqueue Form Widget 8

Same name and namespace in other branches
  1. 2.0.x entityqueue_form_widget.module \entityqueue_form_widget_form_node_form_submit()

Submit form function.

Parameters

object $form: The Form.

Drupal\Core\Form\FormStateInterface $form_state: The Form.

1 string reference to 'entityqueue_form_widget_form_node_form_submit'
entityqueue_form_widget_form_node_form_alter in ./entityqueue_form_widget.module
Implements hook_form_node_form_alter().

File

./entityqueue_form_widget.module, line 65
Allows editors to add content to an entityqueue from the same add/edit form.

Code

function entityqueue_form_widget_form_node_form_submit($form, FormStateInterface $form_state) {
  $node = $form_state
    ->getFormObject()
    ->getEntity();
  $entity_id = $node
    ->id();
  if (!$form_state
    ->isValueEmpty('entityqueue_form_widget')) {
    $values = $form_state
      ->getValue('entityqueue_form_widget');

    /* Add entity to all checked queues */
    $eqs_machine_names = array_keys($values['entityqueues'], "1");
    foreach ($eqs_machine_names as $eqs_machine_name) {
      $query = \Drupal::entityQuery('entity_subqueue')
        ->condition('name', $eqs_machine_name);
      $result = $query
        ->execute();
      $subqueues = EntitySubqueue::loadMultiple($result);
      foreach ($subqueues as $subqueue) {
        $items = $subqueue
          ->get('items')
          ->getValue();
        if (($item_key = array_search($entity_id, array_column($items, 'target_id'))) === FALSE) {
          $new_aitem = [
            "target_id" => $entity_id,
          ];
          array_push($items, $new_aitem);
          $subqueue
            ->set('items', $items);
          $subqueue
            ->save();
        }
      }
    }

    // Remove entity from all un-checked queues.
    $eqs_machine_names_delete = array_keys($values['entityqueues'], "0");
    foreach ($eqs_machine_names_delete as $eqs_machine_name) {
      $entity_subqueue = \Drupal::entityTypeManager()
        ->getStorage('entity_subqueue')
        ->load($eqs_machine_name);
      $items = $entity_subqueue
        ->get('items')
        ->getValue();
      if (($item_key = array_search($entity_id, array_column($items, 'target_id'))) !== FALSE) {
        unset($items[$item_key]);
        $entity_subqueue
          ->set('items', $items);
        $entity_subqueue
          ->save();
      }
    }
  }
}