From e34b57694b3b630abd6787a61c8a7c7a7ef9effe Mon Sep 17 00:00:00 2001 From: ajstanley Date: Tue, 4 Feb 2025 15:44:52 +0000 Subject: [PATCH] added field --- src/Form/DoiPrepopulateForm.php | 8 +++----- src/NodeBuilder.php | 13 ++++++------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/Form/DoiPrepopulateForm.php b/src/Form/DoiPrepopulateForm.php index bdf9537..cca0465 100644 --- a/src/Form/DoiPrepopulateForm.php +++ b/src/Form/DoiPrepopulateForm.php @@ -45,6 +45,8 @@ final class DoiPrepopulateForm extends FormBase { * The Api reader. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager * The EntityTypeManager. + * @param Drupal\doi_prefill\NodeBuilder $nodeBuilder + * The NodeBuilder. */ public function __construct(CrossrefApiReader $doiApi, EntityTypeManagerInterface $entityTypeManager, NodeBuilder $nodeBuilder) { $this->doiApi = $doiApi; @@ -79,7 +81,7 @@ final class DoiPrepopulateForm extends FormBase { parent::validateForm($form, $form_state); $doi = trim($form_state->getValue('doi')); if (!empty($doi)) { - $existing_nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties([ + $existing_nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([ 'field_doi' => $doi, ]); @@ -151,10 +153,6 @@ final class DoiPrepopulateForm extends FormBase { */ public function submitForm(array &$form, FormStateInterface $form_state): void { $doi = trim($form_state->getValue('doi')); - $existing_nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([ - 'field_doi' => $doi, - ]); - $collection = $form_state->getValue('collection'); $nid = $this->nodeBuilder->buildNode($collection, $doi); diff --git a/src/NodeBuilder.php b/src/NodeBuilder.php index 177b855..c2e8241 100644 --- a/src/NodeBuilder.php +++ b/src/NodeBuilder.php @@ -61,7 +61,8 @@ final class NodeBuilder { '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. $new_node = Node::create([ @@ -74,6 +75,7 @@ final class NodeBuilder { 'field_genre' => $genre->id(), 'field_issue' => $contents['issue'] ?? '', 'field_volume' => $contents['volume'] ?? '', + 'field_date_issued' => $contents['created']['date-parts'][0][0] ?? '', ]); // Optional fields. @@ -83,6 +85,9 @@ final class NodeBuilder { 'format' => 'basic_html', ]); } + if (isset($contents['container-title'])) { + $new_node->set('field_host_title', $contents['container-title'][0]); + } if (isset($contents['published-online'])) { $field_date_online = []; foreach ($contents['published-online']['date-parts'] as $date_parts) { @@ -95,12 +100,6 @@ final class NodeBuilder { } // 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 = []; foreach (($contents['ISSN'] ?? []) as $issn) { $field_series_issn[] = ['value' => $issn];