class BibtexReferenceNormalizer in Bibliography & Citation 8
Same name and namespace in other branches
- 2.0.x modules/bibcite_bibtex/src/Normalizer/BibtexReferenceNormalizer.php \Drupal\bibcite_bibtex\Normalizer\BibtexReferenceNormalizer
Normalizes/denormalizes reference entity to BibTeX format.
Hierarchy
- class \Drupal\serialization\Normalizer\NormalizerBase implements \Symfony\Component\Serializer\SerializerAwareInterface, CacheableNormalizerInterface uses \Symfony\Component\Serializer\SerializerAwareTrait
- class \Drupal\serialization\Normalizer\ComplexDataNormalizer
- class \Drupal\serialization\Normalizer\EntityNormalizer implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface uses FieldableEntityNormalizerTrait
- class \Drupal\bibcite_entity\Normalizer\ReferenceNormalizerBase
- class \Drupal\bibcite_bibtex\Normalizer\BibtexReferenceNormalizer
- class \Drupal\bibcite_entity\Normalizer\ReferenceNormalizerBase
- class \Drupal\serialization\Normalizer\EntityNormalizer implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface uses FieldableEntityNormalizerTrait
- class \Drupal\serialization\Normalizer\ComplexDataNormalizer
Expanded class hierarchy of BibtexReferenceNormalizer
1 string reference to 'BibtexReferenceNormalizer'
- bibcite_bibtex.services.yml in modules/
bibcite_bibtex/ bibcite_bibtex.services.yml - modules/bibcite_bibtex/bibcite_bibtex.services.yml
1 service uses BibtexReferenceNormalizer
File
- modules/
bibcite_bibtex/ src/ Normalizer/ BibtexReferenceNormalizer.php, line 13
Namespace
Drupal\bibcite_bibtex\NormalizerView source
class BibtexReferenceNormalizer extends ReferenceNormalizerBase {
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = NULL, array $context = []) {
$contributors = [];
$contributor_key = $this
->getContributorKey();
foreach ([
$contributor_key,
'editor',
] as $role) {
if (!empty($data[$role])) {
foreach ((array) $data[$role] as $author_name) {
$contributors[] = [
'name' => $author_name,
'role' => $role,
];
}
unset($data[$role]);
}
}
/* @var \Drupal\bibcite_entity\Entity\Reference $entity */
$entity = parent::denormalize($data, $class, $format, $context);
if (!empty($contributors)) {
$author_field = $entity
->get('author');
foreach ($contributors as $contributor) {
$author = $this->serializer
->denormalize([
'name' => [
[
'value' => $contributor['name'],
],
],
], Contributor::class, $format, $context);
$author_field
->appendItem([
'entity' => $author,
'role' => $contributor['role'],
]);
}
}
return $entity;
}
/**
* {@inheritdoc}
*/
public function normalize($reference, $format = NULL, array $context = []) {
/** @var \Drupal\bibcite_entity\Entity\ReferenceInterface $reference */
$attributes = [];
$attributes[$this->typeKey] = $this
->convertEntityType($reference
->bundle(), $format);
if ($keywords = $this
->extractKeywords($reference
->get('keywords'))) {
$attributes[$this->keywordKey] = $keywords;
}
$contributors = $this
->extractContributors($reference
->get('author'));
if (isset($contributors['author'])) {
$attributes[$this->contributorKey] = $contributors['author'];
}
if (isset($contributors['editor'])) {
$attributes['editor'] = $contributors['editor'];
}
$attributes += $this
->extractFields($reference, $format);
return $attributes;
}
/**
* {@inheritdoc}
*/
protected function extractFields(ReferenceInterface $reference, $format) {
$attributes = parent::extractFields($reference, $format);
$attributes['title'] = $this
->extractScalar($reference
->get('title'));
$attributes['reference'] = $reference
->id();
return $attributes;
}
/**
* Extract contributors values from field.
*
* @param \Drupal\Core\Field\FieldItemListInterface $field_item_list
* List of field items.
*
* @return array
* Contributors in BibTeX format.
*/
private function extractContributors(FieldItemListInterface $field_item_list) {
$contributors = [];
foreach ($field_item_list as $field) {
$role = $field
->get('role')
->getValue() === 'editor' ? 'editor' : 'author';
$contributors[$role][] = $field->entity
->getName();
}
return $contributors;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BibtexReferenceNormalizer:: |
public | function |
Denormalizes data back into an object of the given class. Overrides ReferenceNormalizerBase:: |
|
BibtexReferenceNormalizer:: |
private | function | Extract contributors values from field. | |
BibtexReferenceNormalizer:: |
protected | function |
Extract fields values from reference entity. Overrides ReferenceNormalizerBase:: |
|
BibtexReferenceNormalizer:: |
public | function |
Normalizes an object into a set of arrays/scalars. Overrides ReferenceNormalizerBase:: |
|
CacheableNormalizerInterface:: |
constant | Name of key for bubbling cacheability metadata via serialization context. | ||
FieldableEntityNormalizerTrait:: |
protected | property | The entity field manager. | |
FieldableEntityNormalizerTrait:: |
protected | property | The entity type manager. | 1 |
FieldableEntityNormalizerTrait:: |
protected | property | The entity type repository. | |
FieldableEntityNormalizerTrait:: |
protected | function | Build the field item value using the incoming data. | 7 |
FieldableEntityNormalizerTrait:: |
protected | function | Denormalizes entity data by denormalizing each field individually. | |
FieldableEntityNormalizerTrait:: |
protected | function | Determines the entity type ID to denormalize as. | |
FieldableEntityNormalizerTrait:: |
protected | function | Denormalizes the bundle property so entity creation can use it. | |
FieldableEntityNormalizerTrait:: |
protected | function | Returns the entity field manager. | |
FieldableEntityNormalizerTrait:: |
protected | function | Gets the entity type definition. | |
FieldableEntityNormalizerTrait:: |
protected | function | Returns the entity type manager. | |
FieldableEntityNormalizerTrait:: |
protected | function | Returns the entity type repository. | |
NormalizerBase:: |
protected | function | Adds cacheability if applicable. | |
NormalizerBase:: |
protected | function | Checks if the provided format is supported by this normalizer. | 2 |
NormalizerBase:: |
public | function | Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization() | 1 |
NormalizerBase:: |
public | function | Checks whether the given class is supported for normalization by this normalizer. | 1 |
ReferenceNormalizerBase:: |
protected | property | Configuration factory service. | |
ReferenceNormalizerBase:: |
public | property | Format contributor key. | |
ReferenceNormalizerBase:: |
public | property | Default publication type. Will be assigned for types without mapping. | |
ReferenceNormalizerBase:: |
protected | property | Mapping between bibcite_entity and format fields. | |
ReferenceNormalizerBase:: |
protected | property |
The format that this Normalizer supports. Overrides NormalizerBase:: |
|
ReferenceNormalizerBase:: |
public | property | Format keyword key. | |
ReferenceNormalizerBase:: |
protected | property |
The interface or class that this Normalizer supports. Overrides EntityNormalizer:: |
|
ReferenceNormalizerBase:: |
public | property | Format type key. | |
ReferenceNormalizerBase:: |
protected | property | Mapping between bibcite_entity and format publication types. | |
ReferenceNormalizerBase:: |
protected | function | Convert publication type to format type. | |
ReferenceNormalizerBase:: |
protected | function | Convert format type to publication type. | |
ReferenceNormalizerBase:: |
protected | function | Convert format keys to Bibcite entity keys and filter non-mapped. | |
ReferenceNormalizerBase:: |
constant | Default reference type. Will be assigned for types without mapping. | ||
ReferenceNormalizerBase:: |
protected | function | Extract authors values from field. | 1 |
ReferenceNormalizerBase:: |
protected | function | Extract keywords labels from field. | |
ReferenceNormalizerBase:: |
protected | function | Extract scalar value. | |
ReferenceNormalizerBase:: |
protected | function | Get format contributor key. | |
ReferenceNormalizerBase:: |
protected | function | Get format keyword key. | |
ReferenceNormalizerBase:: |
protected | function | Get format type key. | |
ReferenceNormalizerBase:: |
public | function | Format setter for DI calls. | |
ReferenceNormalizerBase:: |
public | function |
Construct new BibliographyNormalizer object. Overrides EntityNormalizer:: |