multiversion-8.x-1.0-beta34/src/Entity/MenuLinkContent.php
src/Entity/MenuLinkContent.php
<?php
namespace Drupal\multiversion\Entity;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\menu_link_content\Entity\MenuLinkContent as CoreMenuLinkContent;
class MenuLinkContent extends CoreMenuLinkContent {
/**
* {@inheritdoc}
*/
public function getPluginId() {
// Make the plugin ID unique adding the entity ID.
return 'menu_link_content:' . $this->uuid() . ':' . $this->id();
}
/**
* {@inheritdoc}
*/
public function preSave(EntityStorageInterface $storage) {
parent::preSave($storage);
$parent = $this->parent->value;
if ($parent && strpos($parent, 'menu_link_content') === 0) {
list($content_type_id, $parent_uuid, $parent_id) = explode(':', $parent);
if (empty($parent_id) && $content_type_id == 'menu_link_content') {
$parents = $storage->loadByProperties(['uuid' => $parent_uuid]);
if (!empty($parents)) {
$parent = reset($parents);
$parent_id = $parent->id();
$this->parent->value = "$content_type_id:$parent_uuid:$parent_id";
}
}
}
}
/**
* {@inheritdoc}
*/
public function getPluginDefinition() {
$definition = parent::getPluginDefinition();
$definition['class'] = 'Drupal\multiversion\Plugin\Menu\MenuLinkContent';
return $definition;
}
}
