clean install

This commit is contained in:
2024-12-10 15:08:16 +01:00
commit e14eb2d8fd
31193 changed files with 3555714 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace Drupal\jsonapi_extras\Normalizer;
use Drupal\Core\Config\Entity\ConfigEntityInterface;
use Drupal\jsonapi\JsonApiResource\ResourceObject;
use Drupal\jsonapi\Normalizer\Value\CacheableNormalization;
use Drupal\jsonapi_extras\ResourceType\ConfigurableResourceType;
use Shaper\Util\Context;
/**
* Decorates the JSON:API ResourceObjectNormalizer.
*
* @internal
*/
class ResourceObjectNormalizer extends JsonApiNormalizerDecoratorBase {
/**
* {@inheritdoc}
*/
public function normalize($object, $format = NULL, array $context = []): array|bool|string|int|float|null|\ArrayObject {
assert($object instanceof ResourceObject);
$resource_type = $object->getResourceType();
$cacheable_normalization = parent::normalize($object, $format, $context);
assert($cacheable_normalization instanceof CacheableNormalization);
if (is_subclass_of($resource_type->getDeserializationTargetClass(), ConfigEntityInterface::class)) {
return new CacheableNormalization(
$cacheable_normalization,
static::enhanceConfigFields($object, $cacheable_normalization->getNormalization(), $resource_type)
);
}
return $cacheable_normalization;
}
/**
* Applies field enhancers to a config entity normalization.
*
* @param mixed $object
* The parent object.
* @param array $normalization
* The normalization to be enhanced.
* @param \Drupal\jsonapi_extras\ResourceType\ConfigurableResourceType $resource_type
* The resource type of the normalized resource object.
*
* @return array
* The enhanced field data.
*/
protected static function enhanceConfigFields($object, array $normalization, ConfigurableResourceType $resource_type) {
if (!empty($normalization['attributes'])) {
foreach ($normalization['attributes'] as $field_name => $field_value) {
$enhancer = $resource_type->getFieldEnhancer($field_name);
if (!$enhancer) {
continue;
}
$context['field_item_object'] = $object;
$normalization['attributes'][$field_name] = $enhancer->undoTransform($field_value, new Context($context));
}
}
return $normalization;
}
}