flag_lists-4.0.x-dev/src/Form/FlaggingCollectionDeleteForm.php

src/Form/FlaggingCollectionDeleteForm.php
<?php

namespace Drupal\flag_lists\Form;

use Drupal\Core\Entity\ContentEntityDeleteForm;
use Drupal\Core\Form\FormStateInterface;

/**
 * Provides a form for deleting Flagging collection entities.
 *
 * @ingroup flag_lists
 */
class FlaggingCollectionDeleteForm extends ContentEntityDeleteForm {

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {

    $entity = $this->getEntity();

    // Build a list of Flag list items related to this connection.
    $flagListsService = \Drupal::service('flaglists');
    if ($entity->getRelatedFlag() == NULL) {
      // If this happen the database is seriously broken and must be fixed.
      return parent::buildForm($form, $form_state);
    }
    $flag_list_items = $flagListsService->getFlagListItemIds(
      $entity->getRelatedFlag()->id());

    if (!empty($flag_list_items)) {
      $output = [];
      $items = $flagListsService->getFlagListItems($flag_list_items);
      foreach ($items as $item) {
        $output[] = $item->getName();
      }

      $form['active_items'] = [
        '#theme' => 'item_list',
        '#list_type' => 'ul',
        '#items' => $output,
        '#title' => $this->t('The following connected Flag List Items will be deleted as well:'),
        '#empty' => $this->t('No Flag List Items found'),
      ];
    }

    $form = parent::buildForm($form, $form_state);
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
    $entity = $this->getEntity();
    $message = $this->getDeletionMessage();

    // Make sure that deleting a translation does not delete the whole entity.
    if (!$entity->isDefaultTranslation()) {
      $untranslated_entity = $entity->getUntranslated();
      $untranslated_entity->removeTranslation($entity->language()->getId());
      $untranslated_entity->save();
      $form_state->setRedirectUrl($untranslated_entity->toUrl('canonical'));
    }
    else {
      $entity->delete();
      $form_state->setRedirectUrl($this->getRedirectUrl());
    }

    $flagListsService = \Drupal::service('flaglists');
    if ($entity->getRelatedFlag() !== NULL) {
      $flag_list_items = $flagListsService->getFlagListItemIds(
        $entity->getRelatedFlag()->id());
      if (!empty($flag_list_items)) {
        $items = $flagListsService->getFlagListItems($flag_list_items);
        foreach ($items as $item) {
          $item->delete();
        }
      }
    }
    else {
      // If this happen the database was seriously broken and must be checked.
      $this->logger('flag_lists')
           ->error('Your Related Flag for the Flag Lists "@flag_list" was missing!',
           ['@flag_list' => $entity->label()]);
    }
    $this->messenger()->addStatus($message);
    $this->logDeletionMessage();
  }

}

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

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