You are here

function library_transaction_form_validate in Library 5.2

Same name and namespace in other branches
  1. 6.2 library.pages.inc \library_transaction_form_validate()
  2. 6 library.pages.inc \library_transaction_form_validate()
  3. 7 library.pages.inc \library_transaction_form_validate()

Handles transaction form submissions.

See also

library_transaction_form()

1 string reference to 'library_transaction_form_validate'
library_transaction_form in ./library.pages.inc

File

./library.pages.inc, line 107

Code

function library_transaction_form_validate($form, &$form_state) {
  $barcodes = variable_get('library_item_barcodes', LIBRARY_NO_BARCODES) == LIBRARY_BARCODES;
  if ($form_state['values']['op'] == t('Save')) {
    if ($form_state['values']['item_id']) {
      if ($barcodes) {
        preg_match('/^(?:\\s*|(.*))?\\[\\s*title\\s*:\\s*(.+)\\s*\\]\\s*?\\[\\s*id\\s*:\\s*(\\d+)\\s*\\]$/', $form_state['values']['item_id'], $matches);
      }
      else {
        preg_match('/^(?:\\s*|(.*))?\\[\\s*id\\s*:\\s*(\\d+)\\s*\\]$/', $form_state['values']['item_id'], $matches);
      }
      if (!empty($matches)) {
        if ($barcodes) {
          list($temp, $barcode, $title, $id) = $matches;
        }
        else {
          list($temp, $full_title, $id) = $matches;
          $vol_pos = strpos($full_title, ' [v. ');
          $no_pos = strpos($full_title, ' [no. ');
          if ($vol_pos === false && $no_pos === false) {
            $title = $full_title;
          }
          else {
            if ($vol_pos === false) {
              $title = substr($full_title, 0, $vol_pos);
            }
            else {
              $title = substr($full_title, 0, $no_pos);
            }
          }
        }
        $item = library_load($id);
        if (isset($item) && !empty($title) && strcasecmp(rtrim(check_plain($title)), rtrim(check_plain($item->title))) != 0) {
          form_set_error('item_id', t('Library Item : Title mismatch. Please check your selection.'));
        }
        elseif (!empty($item) && !empty($title) && !empty($id)) {
          $form_state['values']['item_id'] = $item->id;
          $form_state['values']['item_name'] = $item->title;
          $form_state['values']['nid'] = $item->nid;
          $form_state['values']['barcode'] = $item->barcode;
          $form_state['values']['node_type'] = $item->type;
          if ($form_state['values']['action_aid']) {
            $action = library_get_action($form_state['values']['action_aid']);
            if (!empty($action)) {
              if ($item->library_status == LIBRARY_ITEM_AVAILABLE && $action->status_change == LIBRARY_ITEM_TYPE_AVAILABLE) {
                form_set_error('action_aid', t('This item is already available.'));
              }
              elseif ($item->library_status == LIBRARY_ITEM_UNAVAILABLE && $action->status_change == LIBRARY_ITEM_TYPE_UNAVAILABLE) {
                form_set_error('action_aid', t('This item is not currently available.'));
              }
              $form_state['values']['action_name'] = $action->name;
              $form_state['values']['status_change'] = $action->status_change;
            }
          }
        }
        else {
          form_set_error('item_id', t('You must specify a valid library item.'));
        }
      }
      else {
        form_set_error('item_id', t('You must specify a valid library item.'));
      }
    }
    else {
      form_set_error('item_id', t('You must specify a library item.'));
    }
    if ($form_state['values']['patron_id']) {
      preg_match('/^(?:\\s*|(.*) )?\\[\\s*nid\\s*:\\s*(\\d+)\\s*\\]$/', $form_state['values']['patron_id'], $matches);
      if (!empty($matches)) {

        // explicit nid
        list($temp, $title, $nid) = $matches;
        if (!empty($title) && ($n = node_load($nid))) {
          if ($title != $n->title) {
            form_set_error('patron_id', t('Library Patron : Name mismatch. Please check your selection.'));
          }
          $form_state['values']['patron_email'] = $n->email;
          $form_state['values']['patron_uid'] = $n->patron_uid;
          $form_state['values']['patron_id'] = $nid;
          $form_state['values']['patron_name'] = $title;
          $form_state['values']['patron_name_last'] = $n->name_last;
          $form_state['values']['patron_name_first'] = $n->name_first;
        }
      }
    }
    else {
      form_set_error('patron_id', t('You must specify a library patron.'));
    }
  }
}