ifthenelse-8.x-1.x-dev-no-core/modules/contrib/if_then_else/src/core/Nodes/Actions/AddItemListAction/AddItemListAction.php

modules/contrib/if_then_else/src/core/Nodes/Actions/AddItemListAction/AddItemListAction.php
<?php

namespace Drupal\if_then_else\core\Nodes\Actions\AddItemListAction;

use Drupal\if_then_else\core\Nodes\Actions\Action;
use Drupal\if_then_else\Event\NodeSubscriptionEvent;

/**
 * Add Item To A List action class.
 */
class AddItemListAction extends Action {

  /**
   * {@inheritdoc}
   */
  public static function getName() {
    return 'add_item_list_action';
  }

  /**
   * {@inheritdoc}
   */
  public function registerNode(NodeSubscriptionEvent $event) {
    $event->nodes[static::getName()] = [
      'label' => t('Add Item To List'),
      'type' => 'action',
      'class' => 'Drupal\\if_then_else\\core\\Nodes\\Actions\\AddItemListAction\\AddItemListAction',
      'library' => 'if_then_else/AddItemListAction',
      'control_class_name' => 'AddItemListActionControl',
      'compare_options' => [
        ['code' => 'start', 'name' => 'Add to beginning of the list'],
        ['code' => 'end', 'name' => 'Add to end of the list'],
      ],
      'inputs' => [
        'list' => [
          'label' => t('List'),
          'description' => t('A list to which an item is added.'),
          'sockets' => ['array'],
          'required' => TRUE,
        ],
        'item' => [
          'label' => t('Item'),
          'description' => t('An item being added to the list.'),
          'sockets' => ['string', 'number', 'array'],
          'required' => TRUE,
        ],
      ],
      'outputs' => [
        'list' => [
          'label' => t('List'),
          'description' => t('List'),
          'socket' => 'array',
        ],
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function process() {
    $list = $this->inputs['list'];
    $item = $this->inputs['item'];
    $unique = FALSE;
    $position = 'end';
    if (isset($this->data->selection)) {
      $unique = $this->data->selection;
    }
    if (!empty($this->data->postion)) {
      $position = $this->data->postion[0]->code;
    }
    // Optionally, only add the list item if it is not yet contained.
    if (!((bool) $unique && in_array($item, $list))) {
      if ($position === 'start') {
        array_unshift($list, $item);
      }
      else {
        $list[] = $item;
      }
    }
    $this->outputs['list'] = $list;

  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc