FlaggingCollectionDeleteForm.php in Flag Lists 4.0.x
File
src/Form/FlaggingCollectionDeleteForm.php
View source
<?php
namespace Drupal\flag_lists\Form;
use Drupal\Core\Entity\ContentEntityDeleteForm;
use Drupal\Core\Form\FormStateInterface;
class FlaggingCollectionDeleteForm extends ContentEntityDeleteForm {
public function buildForm(array $form, FormStateInterface $form_state) {
$entity = $this
->getEntity();
$flagListsService = \Drupal::service('flaglists');
$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;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$entity = $this
->getEntity();
$message = $this
->getDeletionMessage();
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');
$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();
}
}
$this
->messenger()
->addStatus($message);
$this
->logDeletionMessage();
}
}