diff --git a/filefield_paths.module b/filefield_paths.module index dd207c5..5611692 100644 --- a/filefield_paths.module +++ b/filefield_paths.module @@ -344,16 +344,23 @@ function filefield_paths_entity_insert(EntityInterface $entity) { /** * Implements hook_entity_update(). + * + * There's a temporary override mechanism in case we want to disable / change + * filefield paths' settings for a specific entity. Just set the settings to + * override in $field->filefield_paths_settings */ function filefield_paths_entity_update(EntityInterface $entity) { if ($entity instanceof ContentEntityInterface) { foreach ($entity->getFields() as $field) { if ($field instanceof FileFieldItemList) { + $field_value = $field->getValue(); + // Check for temporary settings overrides in this field + $override_settings = !empty($field_value[0]['filefield_paths_settings']) ? $field_value[0]['filefield_paths_settings'] : array(); /** @var FieldConfig $definition */ $definition = $field->getFieldDefinition(); // Ignore base fields. if ($definition instanceof ThirdPartySettingsInterface) { - $settings = $definition->getThirdPartySettings('filefield_paths'); + $settings = $override_settings + $definition->getThirdPartySettings('filefield_paths'); if (isset($settings['enabled']) && $settings['enabled']) { // Invoke hook_filefield_paths_process_file(). foreach (\Drupal::moduleHandler()