You are here

public function EntityDeleteForm::buildForm in Entity Delete 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/EntityDeleteForm.php, line 73

Class

EntityDeleteForm
Class EntityDeleteForm.

Namespace

Drupal\entity_delete\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form['displays'] = [];
  $input =& $form_state
    ->getUserInput();
  $wrapper = 'entity-wrapper';

  // Create the part of the form that allows the user to select the basic
  // properties of what the entity to delete.
  $form['displays']['show'] = [
    '#type' => 'fieldset',
    '#title' => t('Entity Delete Settings'),
    '#tree' => TRUE,
    '#attributes' => [
      'class' => [
        'container-inline',
      ],
    ],
  ];
  $content_entity_types = [];
  $entity_type_definations = $this->entityTypeManager
    ->getDefinitions();

  /* @var $definition \Drupal\Core\Entity\EntityTypeInterface */
  foreach ($entity_type_definations as $definition) {
    if ($definition instanceof ContentEntityType) {
      $content_entity_types[$definition
        ->id()] = $definition
        ->getLabel();
    }
  }
  $form['displays']['show']['entity_type'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Select Entity Type'),
    '#options' => $content_entity_types,
    '#empty_option' => $this
      ->t('-select-'),
    '#size' => 1,
    '#required' => TRUE,
    '#ajax' => [
      'callback' => [
        $this,
        'ajaxCallChangeEntity',
      ],
      'wrapper' => $wrapper,
    ],
  ];
  $type_options = [
    'all' => $this
      ->t('All'),
  ];
  $form['displays']['show']['type'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('of type'),
    '#options' => $type_options,
    '#prefix' => '<div id="' . $wrapper . '">',
    '#suffix' => '</div>',
  ];
  if (isset($input['show']['entity_type']) && $input['show']['entity_type'] != 'comment') {
    $default_bundles = \Drupal::service('entity_type.bundle.info')
      ->getBundleInfo($input['show']['entity_type']);

    /*If the current base table support bundles and has more than one (like user).*/
    if (!empty($default_bundles)) {

      // Get all bundles and their human readable names.
      foreach ($default_bundles as $type => $bundle) {
        $type_options[$type] = $bundle['label'];
      }
      $form['displays']['show']['type']['#options'] = $type_options;
    }
  }
  $form['displays']['show']['comment_message'] = [
    '#type' => 'fieldset',
    '#markup' => $this
      ->t('<br>Note: bundle. (not supported in comment entity types) Refer this <a target="_blank" href="https://www.drupal.org/node/1343708">How to use EntityFieldQuery</a>.<br>'),
    '#states' => [
      'visible' => [
        'select[name="show[entity_type]"]' => [
          'value' => 'comment',
        ],
      ],
    ],
  ];
  $form['message'] = [
    '#markup' => $this
      ->t('Note: Use <b>ENTITY DELETE</b> only to delete Comment, Content, Log Entries, Taxonomy, User(s).<br>'),
  ];
  if (\Drupal::moduleHandler()
    ->moduleExists('commerce')) {
    $form['commerce_message'] = [
      '#markup' => $this
        ->t('<br>And Also supports Commerce - Line Item, Product, Order, Product Attribute, Product Variation, Profile, Store</br>'),
    ];
  }
  $form['submit'] = [
    '#type' => 'submit',
    '#value' => 'Delete',
  ];
  return $form;
}