public function LinkIt::parseEntitiesFromText in Entity Usage 8.4
Parse an HTML snippet looking for embedded entities.
Parameters
string $text: The partial (X)HTML snippet to load. Invalid markup will be corrected on import.
Return value
array An array of all embedded entities found, where keys are the uuids and the values are the entity types.
Overrides EmbedTrackInterface::parseEntitiesFromText
File
- src/
Plugin/ EntityTrack/ Track/ LinkIt.php, line 22
Class
- LinkIt
- Tracks usage of entities related in entity_reference fields.
Namespace
Drupal\entity_usage\Plugin\EntityTrack\TrackCode
public function parseEntitiesFromText($text) {
$dom = Html::load($text);
$xpath = new \DOMXPath($dom);
$entities = [];
foreach ($xpath
->query('//a[@data-entity-type and @data-entity-uuid]') as $node) {
// Note that this does not cover 100% of the situations. In the (unlikely
// but possible) use case where the user embeds the same entity twice in
// the same field, we are just recording 1 usage for this target entity,
// when we should record 2. The alternative is to add a lot of complexity
// to the update logic of our plugin, to deal with all possible
// combinations in the update scenario.
// @TODO Re-evaluate if this is worth the effort and overhead.
$entities[$node
->getAttribute('data-entity-uuid')] = $node
->getAttribute('data-entity-type');
}
return $entities;
}