acquia_dam-1.0.0-rc1/modules/acquia_dam_integration_links/src/AssetDetector/AssetDetectorBase.php
modules/acquia_dam_integration_links/src/AssetDetector/AssetDetectorBase.php
<?php
namespace Drupal\acquia_dam_integration_links\AssetDetector;
use Drupal\acquia_dam_integration_links\AssetDetectorInterface;
use Drupal\Core\Entity\ContentEntityInterface;
/**
* Base class for asset detectors.
*/
abstract class AssetDetectorBase implements AssetDetectorInterface {
/**
* Checks if the given fields have relevant updates.
*
* @param \Drupal\Core\Field\FieldDefinitionInterface[] $field_definitions
* The array of field definitions for the entity.
* @param \Drupal\Core\Entity\ContentEntityInterface $entity
* Entity instance.
*
* @return bool
* TRUE if there was any change on one of the given fields.
*/
protected function hasRelevantUpdates(array $field_definitions, ContentEntityInterface $entity): bool {
if (!isset($entity->original)) {
return TRUE;
}
foreach ($field_definitions as $definition) {
$field_name = $definition->getName();
$items = $entity->get($field_name);
$original_items = $entity->original->get($field_name);
if ($items->hasAffectingChanges($original_items, $entity->language()->getId())) {
return TRUE;
}
}
return FALSE;
}
/**
* Returns supported fields.
*
* @param \Drupal\Core\Field\FieldDefinitionInterface[] $field_definitions
* The array of field definitions for the entity.
* @param string[] $supported_field_types
* The array of field definitions for the entity.
*
* @return \Drupal\Core\Field\FieldDefinitionInterface[]
* Array with the supported field definitions.
*/
protected function filterSupportedFields(array $field_definitions, array $supported_field_types) : array {
$supported_fields = [];
foreach ($field_definitions as $field) {
if (!in_array($field->getType(), $supported_field_types, TRUE)) {
continue;
}
$supported_fields[] = $field;
}
return $supported_fields;
}
}
