function biblio_admin_author_edit_form_submit in Bibliography Module 7.2
Same name and namespace in other branches
- 6.2 includes/biblio.admin.inc \biblio_admin_author_edit_form_submit()
- 6 biblio.admin.inc \biblio_admin_author_edit_form_submit()
- 7 includes/biblio.admin.inc \biblio_admin_author_edit_form_submit()
File
- includes/
biblio.admin.inc, line 2048
Code
function biblio_admin_author_edit_form_submit($form, &$form_state) {
module_load_include('inc', 'biblio', 'includes/biblio.contributors');
$op = $form_state['values']['op'];
$merge_authors = FALSE;
$link_authors = FALSE;
$linked_authors = FALSE;
switch ($op) {
case t('Save'):
case t('Merge'):
if (isset($form_state['values']['merge_authors']) && $op == t('Merge')) {
$merge_authors = array_filter($form_state['values']['merge_authors']);
}
if (isset($form_state['values']['linked_authors'])) {
$linked_authors = $form_state['values']['linked_authors'];
}
if (isset($form_state['values']['link_authors'])) {
$link_authors = $form_state['values']['link_authors'];
}
unset($form_state['values']['merge_authors']);
unset($form_state['values']['link_authors']);
unset($form_state['values']['linked_authors']);
if ($form_state['values']['drupal_uid'] == 0) {
$uid = $form['drupal_uid']['#default_value'];
$cid = 0;
}
else {
$uid = $form_state['values']['drupal_uid'];
$cid = $form_state['values']['cid'];
}
if ($uid) {
db_update('biblio_contributor_data')
->fields(array(
'drupal_uid' => 0,
))
->condition('drupal_uid', $uid)
->execute();
$result = db_query('SELECT data FROM {users} WHERE uid = :uid', array(
':uid' => $uid,
))
->fetchField();
$data = unserialize($result);
$data['biblio_contributor_id'] = $cid;
$v = serialize($data);
db_update('users')
->fields(array(
'data' => $v,
))
->condition('uid', $uid)
->execute();
}
$author = biblio_parse_author($form_state['values']);
$form_state['values']['name'];
$form_state['values']['prefix'];
$form_state['values']['firstname'];
$form_state['values']['lastname'];
$form_state['values']['suffix'];
drupal_write_record('biblio_contributor_data', $author, 'cid');
// merge authors
if ($merge_authors && count($merge_authors)) {
db_update('biblio_contributor')
->fields(array(
'cid' => $form_state['values']['cid'],
))
->condition('cid', $merge_authors, 'IN')
->execute();
db_delete('biblio_contributor_data')
->condition('cid', $merge_authors, 'IN')
->execute();
}
if ($linked_authors) {
foreach ($linked_authors as $key => $value) {
if ($value == 0) {
db_update('biblio_contributor_data')
->fields(array(
'aka' => $key,
))
->condition('cid', $key)
->execute();
}
}
}
if ($link_authors) {
//db_query("UPDATE {biblio_contributor_data} SET aka=$form_state['values']['cid'] WHERE cid IN ($authors)");
foreach ($link_authors as $key => $value) {
db_update('biblio_contributor_data')
->fields(array(
'aka' => $form_state['values']['cid'],
))
->condition('cid', $key)
->execute();
}
}
break;
case t('Cancel'):
break;
}
}