multiversion-8.x-1.0-beta34/src/Entity/Storage/Sql/MenuLinkContentStorage.php
src/Entity/Storage/Sql/MenuLinkContentStorage.php
<?php
namespace Drupal\multiversion\Entity\Storage\Sql;
use Drupal\multiversion\Entity\Storage\ContentEntityStorageInterface;
use Drupal\multiversion\Entity\Storage\ContentEntityStorageTrait;
// Support Drupal 8.7.0 which introduced a dedicated entity storage class for
// the menu_link_content entity type.
if (class_exists('\Drupal\menu_link_content\MenuLinkContentStorage')) {
class_alias('\Drupal\menu_link_content\MenuLinkContentStorage', '\CoreMenuLinkContentStorage');
}
else {
class_alias('\Drupal\Core\Entity\Sql\SqlContentEntityStorage', '\CoreMenuLinkContentStorage');
}
/**
* Storage handler for menu link content.
*/
class MenuLinkContentStorage extends \CoreMenuLinkContentStorage implements ContentEntityStorageInterface {
use ContentEntityStorageTrait {
delete as deleteEntities;
}
/**
* {@inheritdoc}
*/
public function delete(array $entities) {
$this->deleteEntities($entities);
// Remove the deleted entity as parent for all children.
foreach ($entities as $entity) {
$children = $this->loadByProperties(['parent' => $entity->getPluginId()]);
foreach ($children as $child) {
$child->parent->value = '';
$child->save();
}
}
/** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
$menu_link_manager = \Drupal::service('plugin.manager.menu.link');
foreach ($entities as $menu_link) {
// Remove link definition from the menu tree storage.
$menu_link_manager->removeDefinition($menu_link->getPluginId(), FALSE);
}
}
}
