Added another front page space for Yaffs info. Added roave security for composer.
[yaffs-website] / web / core / lib / Drupal / Core / Entity / ContentEntityDeleteForm.php
1 <?php
2
3 namespace Drupal\Core\Entity;
4
5 use Drupal\Core\Form\FormStateInterface;
6
7 /**
8  * Provides a generic base class for a content entity deletion form.
9  *
10  * @todo Re-evaluate and streamline the entity deletion form class hierarchy in
11  *   https://www.drupal.org/node/2491057.
12  */
13 class ContentEntityDeleteForm extends ContentEntityConfirmFormBase {
14
15   use EntityDeleteFormTrait {
16     getQuestion as traitGetQuestion;
17     logDeletionMessage as traitLogDeletionMessage;
18     getDeletionMessage as traitGetDeletionMessage;
19     getCancelUrl as traitGetCancelUrl;
20   }
21
22   /**
23    * {@inheritdoc}
24    */
25   public function buildForm(array $form, FormStateInterface $form_state) {
26     $form = parent::buildForm($form, $form_state);
27
28     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
29     $entity = $this->getEntity();
30     if ($entity->isDefaultTranslation()) {
31       if (count($entity->getTranslationLanguages()) > 1) {
32         $languages = [];
33         foreach ($entity->getTranslationLanguages() as $language) {
34           $languages[] = $language->getName();
35         }
36
37         $form['deleted_translations'] = [
38           '#theme' => 'item_list',
39           '#title' => $this->t('The following @entity-type translations will be deleted:', [
40             '@entity-type' => $entity->getEntityType()->getLowercaseLabel()
41           ]),
42           '#items' => $languages,
43         ];
44
45         $form['actions']['submit']['#value'] = $this->t('Delete all translations');
46       }
47     }
48     else {
49       $form['actions']['submit']['#value'] = $this->t('Delete @language translation', ['@language' => $entity->language()->getName()]);
50     }
51
52     return $form;
53   }
54
55   /**
56    * {@inheritdoc}
57    */
58   public function submitForm(array &$form, FormStateInterface $form_state) {
59     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
60     $entity = $this->getEntity();
61
62     // Make sure that deleting a translation does not delete the whole entity.
63     if (!$entity->isDefaultTranslation()) {
64       $untranslated_entity = $entity->getUntranslated();
65       $untranslated_entity->removeTranslation($entity->language()->getId());
66       $untranslated_entity->save();
67       $form_state->setRedirectUrl($untranslated_entity->urlInfo('canonical'));
68     }
69     else {
70       $entity->delete();
71       $form_state->setRedirectUrl($this->getRedirectUrl());
72     }
73
74     drupal_set_message($this->getDeletionMessage());
75     $this->logDeletionMessage();
76   }
77
78   /**
79    * {@inheritdoc}
80    */
81   public function getCancelUrl() {
82     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
83     $entity = $this->getEntity();
84     return $entity->isDefaultTranslation() ? $this->traitGetCancelUrl() : $entity->urlInfo('canonical');
85   }
86
87   /**
88    * {@inheritdoc}
89    */
90   protected function getDeletionMessage() {
91     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
92     $entity = $this->getEntity();
93
94     if (!$entity->isDefaultTranslation()) {
95       return $this->t('The @entity-type %label @language translation has been deleted.', [
96         '@entity-type' => $entity->getEntityType()->getLowercaseLabel(),
97         '%label'       => $entity->label(),
98         '@language'    => $entity->language()->getName(),
99       ]);
100     }
101
102     return $this->traitGetDeletionMessage();
103   }
104
105   /**
106    * {@inheritdoc}
107    */
108   protected function logDeletionMessage() {
109     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
110     $entity = $this->getEntity();
111
112     if (!$entity->isDefaultTranslation()) {
113       $this->logger($entity->getEntityType()->getProvider())->notice('The @entity-type %label @language translation has been deleted.', [
114         '@entity-type' => $entity->getEntityType()->getLowercaseLabel(),
115         '%label'       => $entity->label(),
116         '@language'    => $entity->language()->getName(),
117       ]);
118     }
119     else {
120       $this->traitLogDeletionMessage();
121     }
122   }
123
124   /**
125    * {@inheritdoc}
126    */
127   public function getQuestion() {
128     /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
129     $entity = $this->getEntity();
130
131     if (!$entity->isDefaultTranslation()) {
132       return $this->t('Are you sure you want to delete the @language translation of the @entity-type %label?', [
133         '@language' => $entity->language()->getName(),
134         '@entity-type' => $this->getEntity()->getEntityType()->getLowercaseLabel(),
135         '%label' => $this->getEntity()->label(),
136       ]);
137     }
138
139     return $this->traitGetQuestion();
140   }
141
142 }