Mercurial > hg > isophonics-drupal-site
diff core/modules/node/src/Form/DeleteMultiple.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 1fec387a4317 |
children |
line wrap: on
line diff
--- a/core/modules/node/src/Form/DeleteMultiple.php Tue Jul 10 15:07:59 2018 +0100 +++ b/core/modules/node/src/Form/DeleteMultiple.php Thu Feb 28 13:21:36 2019 +0000 @@ -2,78 +2,15 @@ namespace Drupal\node\Form; -use Drupal\Core\Entity\EntityManagerInterface; -use Drupal\Core\Form\ConfirmFormBase; -use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Entity\Form\DeleteMultipleForm as EntityDeleteMultipleForm; use Drupal\Core\Url; -use Drupal\Core\TempStore\PrivateTempStoreFactory; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\RedirectResponse; /** * Provides a node deletion confirmation form. * * @internal */ -class DeleteMultiple extends ConfirmFormBase { - - /** - * The array of nodes to delete. - * - * @var string[][] - */ - protected $nodeInfo = []; - - /** - * The tempstore factory. - * - * @var \Drupal\Core\TempStore\PrivateTempStoreFactory - */ - protected $tempStoreFactory; - - /** - * The node storage. - * - * @var \Drupal\Core\Entity\EntityStorageInterface - */ - protected $storage; - - /** - * Constructs a DeleteMultiple form object. - * - * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store_factory - * The tempstore factory. - * @param \Drupal\Core\Entity\EntityManagerInterface $manager - * The entity manager. - */ - public function __construct(PrivateTempStoreFactory $temp_store_factory, EntityManagerInterface $manager) { - $this->tempStoreFactory = $temp_store_factory; - $this->storage = $manager->getStorage('node'); - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container) { - return new static( - $container->get('tempstore.private'), - $container->get('entity.manager') - ); - } - - /** - * {@inheritdoc} - */ - public function getFormId() { - return 'node_multiple_delete_confirm'; - } - - /** - * {@inheritdoc} - */ - public function getQuestion() { - return $this->formatPlural(count($this->nodeInfo), 'Are you sure you want to delete this item?', 'Are you sure you want to delete these items?'); - } +class DeleteMultiple extends EntityDeleteMultipleForm { /** * {@inheritdoc} @@ -85,117 +22,15 @@ /** * {@inheritdoc} */ - public function getConfirmText() { - return t('Delete'); + protected function getDeletedMessage($count) { + return $this->formatPlural($count, 'Deleted @count content item.', 'Deleted @count content items.'); } /** * {@inheritdoc} */ - public function buildForm(array $form, FormStateInterface $form_state) { - $this->nodeInfo = $this->tempStoreFactory->get('node_multiple_delete_confirm')->get(\Drupal::currentUser()->id()); - if (empty($this->nodeInfo)) { - return new RedirectResponse($this->getCancelUrl()->setAbsolute()->toString()); - } - /** @var \Drupal\node\NodeInterface[] $nodes */ - $nodes = $this->storage->loadMultiple(array_keys($this->nodeInfo)); - - $items = []; - foreach ($this->nodeInfo as $id => $langcodes) { - foreach ($langcodes as $langcode) { - $node = $nodes[$id]->getTranslation($langcode); - $key = $id . ':' . $langcode; - $default_key = $id . ':' . $node->getUntranslated()->language()->getId(); - - // If we have a translated entity we build a nested list of translations - // that will be deleted. - $languages = $node->getTranslationLanguages(); - if (count($languages) > 1 && $node->isDefaultTranslation()) { - $names = []; - foreach ($languages as $translation_langcode => $language) { - $names[] = $language->getName(); - unset($items[$id . ':' . $translation_langcode]); - } - $items[$default_key] = [ - 'label' => [ - '#markup' => $this->t('@label (Original translation) - <em>The following content translations will be deleted:</em>', ['@label' => $node->label()]), - ], - 'deleted_translations' => [ - '#theme' => 'item_list', - '#items' => $names, - ], - ]; - } - elseif (!isset($items[$default_key])) { - $items[$key] = $node->label(); - } - } - } - - $form['nodes'] = [ - '#theme' => 'item_list', - '#items' => $items, - ]; - $form = parent::buildForm($form, $form_state); - - return $form; - } - - /** - * {@inheritdoc} - */ - public function submitForm(array &$form, FormStateInterface $form_state) { - if ($form_state->getValue('confirm') && !empty($this->nodeInfo)) { - $total_count = 0; - $delete_nodes = []; - /** @var \Drupal\Core\Entity\ContentEntityInterface[][] $delete_translations */ - $delete_translations = []; - /** @var \Drupal\node\NodeInterface[] $nodes */ - $nodes = $this->storage->loadMultiple(array_keys($this->nodeInfo)); - - foreach ($this->nodeInfo as $id => $langcodes) { - foreach ($langcodes as $langcode) { - $node = $nodes[$id]->getTranslation($langcode); - if ($node->isDefaultTranslation()) { - $delete_nodes[$id] = $node; - unset($delete_translations[$id]); - $total_count += count($node->getTranslationLanguages()); - } - elseif (!isset($delete_nodes[$id])) { - $delete_translations[$id][] = $node; - } - } - } - - if ($delete_nodes) { - $this->storage->delete($delete_nodes); - $this->logger('content')->notice('Deleted @count posts.', ['@count' => count($delete_nodes)]); - } - - if ($delete_translations) { - $count = 0; - foreach ($delete_translations as $id => $translations) { - $node = $nodes[$id]->getUntranslated(); - foreach ($translations as $translation) { - $node->removeTranslation($translation->language()->getId()); - } - $node->save(); - $count += count($translations); - } - if ($count) { - $total_count += $count; - $this->logger('content')->notice('Deleted @count content translations.', ['@count' => $count]); - } - } - - if ($total_count) { - drupal_set_message($this->formatPlural($total_count, 'Deleted 1 post.', 'Deleted @count posts.')); - } - - $this->tempStoreFactory->get('node_multiple_delete_confirm')->delete(\Drupal::currentUser()->id()); - } - - $form_state->setRedirect('system.admin_content'); + protected function getInaccessibleMessage($count) { + return $this->formatPlural($count, "@count content item has not been deleted because you do not have the necessary permissions.", "@count content items have not been deleted because you do not have the necessary permissions."); } }