Browse Source

Added null check

main
astanley 4 months ago
parent
commit
2fb4836184
  1. 19
      src/Form/DoiPrepopulateForm.php
  2. 5
      src/NodeBuilder.php

19
src/Form/DoiPrepopulateForm.php

@ -12,7 +12,7 @@ use Drupal\doi_prefill\CrossrefApiReader;
use Drupal\doi_prefill\NodeBuilder;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\Core\Render\Markup;
use Drupal\Core\Messenger\MessengerInterface;
/**
* Provides a DOI Prefill form.
*/
@ -39,6 +39,13 @@ final class DoiPrepopulateForm extends FormBase {
*/
protected $entityTypeManager;
/**
* The messenger service.
*
* @var \Drupal\Core\Messenger\MessengerInterface
*/
protected $messenger;
/**
* The constructor.
*
@ -49,10 +56,11 @@ final class DoiPrepopulateForm extends FormBase {
* @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, MessengerInterface $messenger) {
$this->doiApi = $doiApi;
$this->entityTypeManager = $entityTypeManager;
$this->nodeBuilder = $nodeBuilder;
$this->messenger = $messenger;
}
/**
@ -65,6 +73,7 @@ final class DoiPrepopulateForm extends FormBase {
$container->get('doi_prefill.crossref_api_reader'),
$container->get('entity_type.manager'),
$container->get('doi_prefill.node_builder'),
$container->get('messenger'),
);
}
@ -167,8 +176,10 @@ final class DoiPrepopulateForm extends FormBase {
$doi = trim($form_state->getValue('doi'));
$collection = $form_state->getValue('collection');
$nid = $this->nodeBuilder->buildNode($collection, $doi);
if ($form_state->getValue('redirect') == 'edit') {
if (empty($nid)) {
$this->messenger->addWarning($this->t('Crossref returned no information.'));
}
else {
$destination = "/node/{$nid}/edit";
$response = new RedirectResponse($destination);
$response->send();

5
src/NodeBuilder.php

@ -37,6 +37,9 @@ final class NodeBuilder {
*/
public function buildNode($collection, $doi) {
$contents = $this->doiApi->getWork($doi);
if (!$contents) {
return [];
}
$config = $this->config->get('doi_prefill.settings');
$field_settings = $config->get('field_settings');
$mapping = $config->get('doi_term_islandora_term_pairs');
@ -47,7 +50,7 @@ final class NodeBuilder {
// Build typed relations.
$typed_relations = [];
$vid = 'person';
$vid = 'coar_resource_types';
foreach ($contents['author'] as $author) {
$author_term = "{$author['family']}";
if (isset($author['given'])) {

Loading…
Cancel
Save