cms_content_sync-3.0.x-dev/src/Plugin/cms_content_sync/field_handler/DefaultMenuLinkContentReferenceHandler.php
src/Plugin/cms_content_sync/field_handler/DefaultMenuLinkContentReferenceHandler.php
<?php
namespace Drupal\cms_content_sync\Plugin\cms_content_sync\field_handler;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\cms_content_sync\PullIntent;
/**
* Reference menu references and make sure they're published as the content
* comes available.
*
* @FieldHandler(
* id = "cms_content_sync_default_menu_link_content_reference_handler",
* label = @Translation("Default Menu Link Content Reference"),
* weight = 80
* )
*/
class DefaultMenuLinkContentReferenceHandler extends DefaultEntityReferenceHandler {
/**
* {@inheritdoc}
*/
public static function supports($entity_type, $bundle, $field_name, FieldDefinitionInterface $field) {
return 'menu_link_content' == $entity_type && 'parent' == $field_name;
}
/**
* {@inheritdoc}
*/
protected function forcePushingReferencedEntities() {
return TRUE;
}
/**
* {@inheritdoc}
*/
protected function loadReferencedEntityFromFieldValue($value) {
if (empty($value) || empty($value['value'])) {
return NULL;
}
[$entity_type, $uuid] = explode(':', $value['value']);
if ('menu_link_content' != $entity_type || empty($uuid)) {
return NULL;
}
return \Drupal::service('entity.repository')->loadEntityByUuid(
'menu_link_content',
$uuid
);
}
/**
* {@inheritdoc}
*/
protected function getFieldValuesForReference(EntityInterface $reference, PullIntent $intent, array $info) {
return 'menu_link_content:' . $reference->uuid();
}
/**
* {@inheritdoc}
*/
protected function getReferencedEntityTypes() {
return ['menu_link_content'];
}
}
