class CslReferenceNormalizer in Bibliography & Citation 8
Same name and namespace in other branches
- 2.0.x modules/bibcite_entity/src/Normalizer/CslReferenceNormalizer.php \Drupal\bibcite_entity\Normalizer\CslReferenceNormalizer
Normalizes/denormalizes reference entity to CSL 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_entity\Normalizer\CslReferenceNormalizer
- 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 CslReferenceNormalizer
1 string reference to 'CslReferenceNormalizer'
- bibcite_entity.services.yml in modules/
bibcite_entity/ bibcite_entity.services.yml - modules/bibcite_entity/bibcite_entity.services.yml
1 service uses CslReferenceNormalizer
File
- modules/
bibcite_entity/ src/ Normalizer/ CslReferenceNormalizer.php, line 12
Namespace
Drupal\bibcite_entity\NormalizerView source
class CslReferenceNormalizer extends ReferenceNormalizerBase {
/**
* List of date fields.
*
* @var array
*/
protected $dateFields = [
'bibcite_year',
'bibcite_access_date',
'bibcite_date',
];
/**
* {@inheritdoc}
*/
public function supportsDenormalization($data, $type, $format = NULL) {
return FALSE;
}
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = NULL, array $context = []) {
throw new LogicException("Cannot denormalize from 'CSL' format.");
}
/**
* {@inheritdoc}
*/
public function normalize($reference, $format = NULL, array $context = []) {
/** @var \Drupal\bibcite_entity\Entity\ReferenceInterface $reference */
$attributes = parent::normalize($reference, $format, $context);
$contributor_key = $this
->getContributorKey();
if (isset($attributes[$contributor_key])) {
$authors = $attributes[$contributor_key];
foreach ($authors as $role => $contributors) {
$attributes[$role] = $contributors;
}
}
return $attributes;
}
/**
* {@inheritdoc}
*/
protected function extractFields(ReferenceInterface $reference, $format = NULL) {
$attributes = [];
$attributes['title'] = $this
->extractScalar($reference
->get('title'));
foreach ($this->fieldsMapping[$this->format] as $csl_field => $entity_field) {
if ($entity_field && $reference
->hasField($entity_field) && ($field = $reference
->get($entity_field)) && !$field
->isEmpty()) {
if (in_array($entity_field, $this->dateFields)) {
$attributes[$csl_field] = $this
->extractDate($field);
}
else {
$attributes[$csl_field] = $this
->extractScalar($field);
}
}
}
return $attributes;
}
/**
* Extract authors values from field.
*
* @param \Drupal\Core\Field\FieldItemListInterface $field_item_list
* List of field items.
*
* @return array
* Authors in CSL format.
*/
protected function extractAuthors(FieldItemListInterface $field_item_list) {
$authors = [];
foreach ($field_item_list as $field) {
/** @var \Drupal\bibcite_entity\Entity\ContributorInterface $contributor */
if ($contributor = $field->entity) {
switch ($field->role) {
case 'editor':
case 'series_editor':
$authors['editor'][] = [
'category' => $field->category,
'role' => $field->role,
'family' => $contributor
->getLastName(),
'given' => $contributor
->getFirstName() . ' ' . $contributor
->getMiddleName(),
'suffix' => $contributor
->getSuffix(),
'literal' => $contributor
->getName(),
];
break;
case 'recipient':
case 'translator':
$authors[$field->role][] = [
'category' => $field->category,
'role' => $field->role,
'family' => $contributor
->getLastName(),
'given' => $contributor
->getFirstName() . ' ' . $contributor
->getMiddleName(),
'suffix' => $contributor
->getSuffix(),
'literal' => $contributor
->getName(),
];
break;
default:
$authors['author'][] = [
'category' => $field->category,
'role' => $field->role,
'family' => $contributor
->getLastName(),
'given' => $contributor
->getFirstName() . ' ' . $contributor
->getMiddleName(),
'suffix' => $contributor
->getSuffix(),
'literal' => $contributor
->getName(),
];
break;
}
}
}
return $authors;
}
/**
* Extract date value to CSL format.
*
* @param \Drupal\Core\Field\FieldItemListInterface $date_field
* Date item list.
*
* @return array
* Date in CSL format.
*/
protected function extractDate(FieldItemListInterface $date_field) {
$value = $this
->extractScalar($date_field);
return [
'date-parts' => [
[
$value,
],
],
'literal' => $value,
];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CacheableNormalizerInterface:: |
constant | Name of key for bubbling cacheability metadata via serialization context. | ||
CslReferenceNormalizer:: |
protected | property | List of date fields. | |
CslReferenceNormalizer:: |
public | function |
Denormalizes data back into an object of the given class. Overrides ReferenceNormalizerBase:: |
|
CslReferenceNormalizer:: |
protected | function |
Extract authors values from field. Overrides ReferenceNormalizerBase:: |
|
CslReferenceNormalizer:: |
protected | function | Extract date value to CSL format. | |
CslReferenceNormalizer:: |
protected | function |
Extract fields values from reference entity. Overrides ReferenceNormalizerBase:: |
|
CslReferenceNormalizer:: |
public | function |
Normalizes an object into a set of arrays/scalars. Overrides ReferenceNormalizerBase:: |
|
CslReferenceNormalizer:: |
public | function |
Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization() Overrides NormalizerBase:: |
|
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 | 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 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:: |