cms_content_sync-3.0.x-dev/src/Form/PoolDeleteForm.php

src/Form/PoolDeleteForm.php
<?php

namespace Drupal\cms_content_sync\Form;

use Drupal\cms_content_sync\Entity\EntityStatus;
use Drupal\cms_content_sync\Entity\Flow;
use Drupal\Core\Entity\EntityConfirmFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use function t;

/**
 * Builds the form to delete an Pool.
 */
class PoolDeleteForm extends EntityConfirmFormBase {

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    $flows = [];

    foreach (Flow::getAll(FALSE) as $flow) {
      if ($flow->getController()->usesPool($this->entity)) {
        $flows[] = $flow->name;
      }
    }

    if (count($flows)) {
      $form_state->setError(
            $form,
            t(
                'You can\'t delete a pool that is used in a Flow. Please remove it from the following Flows first: %flows',
                ['%flows' => implode(' ', $flows)]
            )
        );
    }

    return parent::validateForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function getQuestion() {
    return $this->t('Are you sure you want to delete %name?', ['%name' => $this->entity->label()]);
  }

  /**
   * {@inheritdoc}
   */
  public function getConfirmText() {
    return $this->t('Delete');
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Delete config related status entities.
    $entity_status = \Drupal::entityTypeManager()->getStorage('cms_content_sync_entity_status')
      ->loadByProperties(['pool' => $this->getEntity()->id()]);

    foreach ($entity_status as $status) {
      $entity = EntityStatus::load($status->id());
      $entity->delete();
    }

    $this->entity->delete();
    \Drupal::messenger()->addMessage($this->t('Pool %label has been deleted.', ['%label' => $this->entity->label()]));

    $form_state->setRedirectUrl($this->getCancelUrl());
  }

  /**
   * {@inheritdoc}
   */
  public function getCancelUrl() {
    return new Url('entity.cms_content_sync_pool.collection');
  }

}

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

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