Browse Source

added field

main
ajstanley 11 months ago
parent
commit
e34b57694b
  1. 8
      src/Form/DoiPrepopulateForm.php
  2. 13
      src/NodeBuilder.php

8
src/Form/DoiPrepopulateForm.php

@ -45,6 +45,8 @@ final class DoiPrepopulateForm extends FormBase {
* The Api reader. * The Api reader.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
* The EntityTypeManager. * The EntityTypeManager.
* @param Drupal\doi_prefill\NodeBuilder $nodeBuilder
* The NodeBuilder.
*/ */
public function __construct(CrossrefApiReader $doiApi, EntityTypeManagerInterface $entityTypeManager, NodeBuilder $nodeBuilder) { public function __construct(CrossrefApiReader $doiApi, EntityTypeManagerInterface $entityTypeManager, NodeBuilder $nodeBuilder) {
$this->doiApi = $doiApi; $this->doiApi = $doiApi;
@ -79,7 +81,7 @@ final class DoiPrepopulateForm extends FormBase {
parent::validateForm($form, $form_state); parent::validateForm($form, $form_state);
$doi = trim($form_state->getValue('doi')); $doi = trim($form_state->getValue('doi'));
if (!empty($doi)) { if (!empty($doi)) {
$existing_nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties([ $existing_nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([
'field_doi' => $doi, 'field_doi' => $doi,
]); ]);
@ -151,10 +153,6 @@ final class DoiPrepopulateForm extends FormBase {
*/ */
public function submitForm(array &$form, FormStateInterface $form_state): void { public function submitForm(array &$form, FormStateInterface $form_state): void {
$doi = trim($form_state->getValue('doi')); $doi = trim($form_state->getValue('doi'));
$existing_nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([
'field_doi' => $doi,
]);
$collection = $form_state->getValue('collection'); $collection = $form_state->getValue('collection');
$nid = $this->nodeBuilder->buildNode($collection, $doi); $nid = $this->nodeBuilder->buildNode($collection, $doi);

13
src/NodeBuilder.php

@ -61,7 +61,8 @@ final class NodeBuilder {
'rel_type' => 'relators:aut', 'rel_type' => 'relators:aut',
]; ];
} }
$genre = $this->getOrCreateTerm($contents['type'], 'genre'); $type = $this->mapping[$contents['type']] ?? $contents['type'];
$genre = $this->getOrCreateTerm($type, 'genre');
// Build new node. // Build new node.
$new_node = Node::create([ $new_node = Node::create([
@ -74,6 +75,7 @@ final class NodeBuilder {
'field_genre' => $genre->id(), 'field_genre' => $genre->id(),
'field_issue' => $contents['issue'] ?? '', 'field_issue' => $contents['issue'] ?? '',
'field_volume' => $contents['volume'] ?? '', 'field_volume' => $contents['volume'] ?? '',
'field_date_issued' => $contents['created']['date-parts'][0][0] ?? '',
]); ]);
// Optional fields. // Optional fields.
@ -83,6 +85,9 @@ final class NodeBuilder {
'format' => 'basic_html', 'format' => 'basic_html',
]); ]);
} }
if (isset($contents['container-title'])) {
$new_node->set('field_host_title', $contents['container-title'][0]);
}
if (isset($contents['published-online'])) { if (isset($contents['published-online'])) {
$field_date_online = []; $field_date_online = [];
foreach ($contents['published-online']['date-parts'] as $date_parts) { foreach ($contents['published-online']['date-parts'] as $date_parts) {
@ -95,12 +100,6 @@ final class NodeBuilder {
} }
// Multivalued fields. // Multivalued fields.
$field_date_issued = [];
foreach (($contents['created']['date-parts'] ?? []) as $date_parts) {
$field_date_issued[] = ['value' => implode('-', $date_parts)];
}
$new_node->set('field_date_issued', $field_date_issued);
$field_series_issn = []; $field_series_issn = [];
foreach (($contents['ISSN'] ?? []) as $issn) { foreach (($contents['ISSN'] ?? []) as $issn) {
$field_series_issn[] = ['value' => $issn]; $field_series_issn[] = ['value' => $issn];

Loading…
Cancel
Save