function tripal_pub_add_authors
2.x tripal_pub.pub_importers.inc | tripal_pub_add_authors($pub_id, $authors, $do_contact) |
3.x tripal_chado.pub_importers.inc | tripal_pub_add_authors($pub_id, $authors, $do_contact) |
1.x tripal_pub.api.inc | tripal_pub_add_authors($pub_id, $authors, $do_contact) |
1 call to tripal_pub_add_authors()
- tripal_pub_add_publication in tripal_pub/
api/ tripal_pub.api.inc - Adds a new publication to the Chado, along with all properties and database cross-references. If the publication does not already exist in Chado then it is added. If it does exist nothing is done. If the $update parameter is TRUE then theā¦
File
- tripal_pub/
api/ tripal_pub.api.inc, line 824 - The Tripal Pub API
Code
function tripal_pub_add_authors($pub_id, $authors, $do_contact) {
$rank = 0;
// first remove any of the existing pubauthor entires
$sql = "DELETE FROM {pubauthor} WHERE pub_id = %d";
chado_query($sql, $pub_id);
// iterate through the authors and add them to the pubauthors and contact
// tables of chado, then link them through the custom pubauthors_contact table
foreach ($authors as $author) {
// skip invalid author entires
if ($author['valid'] == 'N') {
continue;
}
// remove the 'valid' property as we don't have a CV term for it
unset($author['valid']);
// construct the contact.name field using the author information
$name = '';
$type = 'Person';
if ($author['Given Name']) {
$name .= $author['Given Name'];
}
if ($author['Surname']) {
$name .= ' ' . $author['Surname'];
}
if ($author['Suffix']) {
$name .= ' ' . $author['Suffix'];
}
if ($author['Collective']) {
$name = $author['Collective'];
$type = 'Collective';
}
$name = trim($name);
// add an entry to the pubauthors table
$values = array(
'pub_id' => $pub_id,
'rank' => $rank,
'surname' => $author['Surname'] ? substr($author['Surname'], 0, 100) : substr($author['Collective'], 0, 100),
'givennames' => $author['Given Name'],
'suffix' => $author['Suffix'],
);
$options = array('statement_name' => 'ins_pubauthor_idrasugisu');
$pubauthor = tripal_core_chado_insert('pubauthor', $values, $options);
// if the user wants us to create a contact for each author then do it.
if ($do_contact) {
// Add the contact
$contact = tripal_contact_add_contact($name, '', $type, $author);
// if we have succesfully added the contact and the pubauthor entries then we want to
// link them together
if ($contact and $pubauthor) {
// link the pubauthor entry to the contact
$values = array(
'pubauthor_id' => $pubauthor['pubauthor_id'],
'contact_id' => $contact['contact_id'],
);
$options = array('statement_name' => 'ins_pubauthorcontact_puco');
$pubauthor_contact = tripal_core_chado_insert('pubauthor_contact', $values, $options);
if (!$pubauthor_contact) {
watchdog('tripal_pub', "Cannot link pub authro and contact.", array(), WATCHDOG_ERROR);
}
}
}
$rank++;
}
}