You are here

function biblio_admin_author_edit_form_submit in Bibliography Module 7.2

Same name and namespace in other branches
  1. 6.2 includes/biblio.admin.inc \biblio_admin_author_edit_form_submit()
  2. 6 biblio.admin.inc \biblio_admin_author_edit_form_submit()
  3. 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;
  }
}