diff --git a/src/Annotation/ResourceFieldEnhancer.php b/src/Annotation/ResourceFieldEnhancer.php index 4a32309..9a90350 100644 --- a/src/Annotation/ResourceFieldEnhancer.php +++ b/src/Annotation/ResourceFieldEnhancer.php @@ -47,4 +47,11 @@ class ResourceFieldEnhancer extends Plugin { */ public $class; + /** + * The name of modules that are required for this Field Enhancer to be usable. + * + * @var array + */ + public $dependencies; + } diff --git a/src/Plugin/ResourceFieldEnhancerManager.php b/src/Plugin/ResourceFieldEnhancerManager.php index 91287c6..8c09e86 100644 --- a/src/Plugin/ResourceFieldEnhancerManager.php +++ b/src/Plugin/ResourceFieldEnhancerManager.php @@ -35,4 +35,27 @@ class ResourceFieldEnhancerManager extends DefaultPluginManager { $this->setCacheBackend($cache_backend, 'resource_field_enhancer_plugins'); } + /** + * {@inheritDoc} + */ + protected function alterDefinitions(&$definitions) { + // Loop through all definitions. + foreach ($definitions AS $definition_key => $definition_info) { + // Check to see if dependencies key is set. + if (!empty($definition_info['dependencies'])) { + $definition_dependencies = $definition_info['dependencies']; + // Loop through dependencies to confirm if enabled. + foreach ($definition_dependencies AS $dependency) { + // If dependency is not enabled removed from list of definitions. + if (!$this->moduleHandler->moduleExists($dependency)) { + unset($definitions[$definition_key]); + continue; + } + } + } + } + + $this->moduleHandler->alter($this->alterHook, $definitions); + } + } diff --git a/src/Plugin/jsonapi/FieldEnhancer/DateTimeEnhancer.php b/src/Plugin/jsonapi/FieldEnhancer/DateTimeEnhancer.php index 1875c9d..460a96f 100644 --- a/src/Plugin/jsonapi/FieldEnhancer/DateTimeEnhancer.php +++ b/src/Plugin/jsonapi/FieldEnhancer/DateTimeEnhancer.php @@ -12,7 +12,8 @@ use Shaper\Util\Context; * @ResourceFieldEnhancer( * id = "date_time", * label = @Translation("Date Time (Timestamp field)"), - * description = @Translation("Formats a date based the configured date format for timestamp fields.") + * description = @Translation("Formats a date based the configured date format for timestamp fields."), + * dependencies={"datetime"} * ) */ class DateTimeEnhancer extends DateTimeEnhancerBase { diff --git a/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php b/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php index 6d741c4..5ebbc5b 100644 --- a/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php +++ b/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php @@ -11,7 +11,8 @@ use Shaper\Util\Context; * @ResourceFieldEnhancer( * id = "date_time_from_string", * label = @Translation("Date Time (Date Time field)"), - * description = @Translation("Formats a date based the configured date format for date fields.") + * description = @Translation("Formats a date based the configured date format for date fields."), + * dependencies={"datetime"} * ) */ class DateTimeFromStringEnhancer extends DateTimeEnhancerBase {