You are here

function biblio_pm_form_biblio_node_form_submit in Bibliography Module 7

1 string reference to 'biblio_pm_form_biblio_node_form_submit'
biblio_pm_form_biblio_node_form_alter in modules/pubmed/biblio_pm.module

File

modules/pubmed/biblio_pm.module, line 174

Code

function biblio_pm_form_biblio_node_form_submit($form, &$form_state) {
  $node_data = array();
  if (strlen($pmid = $form_state['values']['PMID'])) {
    if (!($dup = biblio_pm_check_pmid($pmid))) {
      module_load_include('php', 'biblio_pm', 'EntrezClient');
      module_load_include('php', 'biblio_pm', 'EntrezPubmedArticle');
      $Eclient = new BiblioEntrezClient();
      try {
        $result = $Eclient
          ->fetch($pmid);
      } catch (Exception $e) {
        form_set_error($e
          ->getMessage());
      }
      if (!isset($result->PubmedArticle)) {
        unset($form_state['values']['biblio_type']);
        unset($form_state['post']['biblio_type']);
        form_set_error('PMID', 'No data available for PubMed ID: ' . check_plain($pmid));
        return;
      }
      $data = new BiblioEntrezPubmedArticle($result->PubmedArticle);
      $node_data = $data
        ->getBiblio();
    }
    else {
      $message = t('The PubMed ID that you are trying to import already exists in the database, see !url', array(
        '!url' => l('node/' . $dup, 'node/' . $dup),
      ));
      form_set_error('PMID', $message);
      $form_state['rebuild'] = TRUE;
      $form_state['submitted'] = FALSE;
      unset($form_state['values']['biblio_type']);
    }
  }
  if (!empty($node_data)) {
    $form_state['values'] = array_merge($form_state['values'], $node_data);
    $form_state['input']['biblio_type'] = $form_state['biblio_type'] = $node_data['biblio_type'];
    $form_state['input']['biblio_pmcid'] = $form_state['biblio_pmcid'] = isset($node_data['biblio_pmcid']) ? $node_data['biblio_pmcid'] : '';
    $form_state['input']['biblio_pubmed_id'] = $form_state['biblio_pubmed_id'] = $node_data['biblio_pubmed_id'];
    $form_state['input']['biblio_pubmed_grants'] = $form_state['biblio_pubmed_grants'] = isset($node_data['biblio_pmcid']) ? $node_data['biblio_pmcid'] : array();
    $form_state['rebuild'] = TRUE;
  }
}