<?php
/**
* @file
* Contains the ILL forms.
*/
/**
* A form to wrap the different steps of our multi step form.
*
* @param array $form
* An array representing a Drupal form.
* @param array $form_state
* An array containing the Drupal form state.
*
* @return array
* An array representing the bibliographic form.
*/
function upei_roblib_ill_form($form, & $form_state) {
if (!isset($form_state['values'])) {
$form_name = 'upei_roblib_ill_request_form';
}
else {
$form_name = 'upei_roblib_ill_auth_form';
}
$form_state['step'] = $form_name;
return $form_name === 'upei_roblib_ill_request_form' ? upei_roblib_ill_request_form($form, $form_state) :
upei_roblib_ill_auth_form($form, $form_state);
}
/**
* Validation for the upei_roblib_ill_form form.
*
* @param array $form
* An array representing a Drupal form.
* @param array $form_state
* An array containing the Drupal form state.
*/
function upei_roblib_ill_form_validate($form, & $form_state) {
module_load_include('inc', 'upei_roblib_ill', 'includes/relais');
if ($form_state['step'] == 'upei_roblib_ill_auth_form') {
if (!valid_email_address($form_state['values']['DeliveryAddress'])) {
form_set_error('DeliveryAddress', t('Your email address appears to be invalid.'));
}
$aid = upei_roblib_ill_authenticate($form_state['values']['campus_id'], $form_state['values']['Surname']);
if (is_array($aid) & & isset($aid['Problem']['Message'])) {
form_set_error('Surname', $aid['Problem']['Message']);
form_set_error('campus_id', '');
// Log invalid requests, we need to build the full array here to log it, even though we won't send it yet as auth has failed.
$form_state['storage']['upei_roblib_ill_auth_form'] = $form_state['values'];
module_load_include('inc', 'upei_roblib_ill', 'includes/db');
$arr = upei_roblib_ill_build_relais_arr($form_state);
upei_roblib_ill_log_request($arr, $aid);
}
else {
$form_state['storage']['aid'] = $aid;
}
}
if ($form_state['step'] == 'upei_roblib_ill_request_form' & & $form_state['triggering_element']['#value'] !== 'lookup DOI' & & empty($form_state['values']['Title'])) {
form_set_error('Title', t('Source Title is required.'));
}
}
/**
* Submit handler for the upei_roblib_ill_form form.
*
* @param array $form
* An array representing a Drupal form.
* @param array $form_state
* An array containing the Drupal form state.
*/
function upei_roblib_ill_form_submit($form, & $form_state) {
$form_state['storage'][$form_state['step']] = $form_state['values'];
switch ($form_state['step']) {
case 'upei_roblib_ill_request_form':
if ($form_state['clicked_button']['#value'] != 'lookup DOI') {
$form_state['step'] = 'upei_roblib_ill_auth_form';
$form_state['rebuild'] = TRUE;
}
break;
case 'upei_roblib_ill_auth_form':
//process the form
$response = upei_roblib_ill_add_request($form_state, $form_state['storage']['aid']);
$error = isset($response['RequestNumber']) ? 'FALSE' : 'TRUE';
$form_state['redirect'] = array(
'upei/roblib/ill/finished',
array(
'query' => array(
'message' => $response['ConfirmMessage'],
'email' => $form_state['values']['DeliveryAddress'],
'error' => $error,
),
),
);
}
}
/**
* After submitting an ILL request patrons will be redirected to the content returned from this function.
* @return string
* a string of HTML to display including the results of the ILL request and some boilerplate text.
*/
function upei_roblib_ill_form_redirect() {
//TODO turn this into a drupal render array
//TODO phone number, email etc. could be variables read from the database.
if (isset($_GET['error']) & & $_GET['error'] === 'TRUE') {
$std_message = "< div class = 'upei-roblib-ill-message' > To contact the department about this request, you can send a message to < a href = 'mailto:ill@upei.ca' > ill@upei.ca< / a > or
call 902-566-0445< / div > ";
}
else {
$std_message = "< div class = 'upei-roblib-ill-email' > A message including the Request ID has been sent to " . $_GET['email'] . ".< / div > < div class = 'upei-roblib-ill-message' > To contact the department about this request, you can send a message to < a href = 'mailto:ill@upei.ca' > ill@upei.ca< / a > or
call 902-566-0445< / div >
< div class = 'upei-roblib-ill-wecanhelp' > We can help! Please contact your < a href = 'http://library.upei.ca/librarians' > subject-specific< / a > librarian if you'd like help finding more resources relating to your topic.< / div > ";
}
return "< div class = 'upei-roblib-ill-relais-message' > " . $_GET['message'] . '< / div > ' . $std_message;
}
/**
* The patron portion of the ILL form.
*
* The campus_id and email portion are also used in a request for an Relais aid.
*
* @param array $form
* An array representing a Drupal form.
* @param array $form_state
* An array containing the Drupal form state.
*
* @return array
* An array representing the bibliographic form.
*/
function upei_roblib_ill_auth_form($form, & $form_state) {
module_load_include('inc', 'upei_roblib_ill', 'includes/utilities');
$form['#prefix'] = upei_roblib_format_biblio_info($form_state);
$form['FirstName'] = array(
'#type' => 'textfield',
'#title' => t('Your First Name'),
'#size' => 50,
'#required' => TRUE,
);
$form['Surname'] = array(
'#type' => 'textfield',
'#title' => t('Your Last Name'),
'#size' => 50,
'#required' => TRUE,
);
$form['campus_id'] = array(
'#type' => 'textfield',
'#title' => t('Your Campus ID'),
'#size' => 50,
'#required' => TRUE,
);
$patron_types = array(
'None' => t('None'),
'UPEI Faculty/Staff' => t('UPEI Faculty/Staff'),
'UPEI Graduate Student' => t('UPEI Graduate Student'),
'UPEI Undergraduate Student' => t('UPEI Undergraduate Student'),
'UPEI Honours Undergraduate Student' => t('UPEI Honours Undergraduate Student'),
'UPEI Alumni Premiere member' => t('UPEI Alumni Premiere member'),
'UPEI Alumni member' => t('UPEI Alumni member'),
'Public Borrower' => t('Public Borrower'),
);
$departments = array(
'Applied Human Sciences' => t('Applied Human Sciences'),
'AVC - Biomedical Sciences' => t('AVC - Biomedical Sciences'),
'AVC - Companion Animals' => t('AVC - Companion Animals'),
'AVC - Health Management' => t('AVC - Health Management'),
'AVC - Pathology/Microbiology' => t('AVC - Pathology/Microbiology'),
'AVC - Lobster Science' => t('AVC - Lobster Science'),
'Biology' => t('Biology'),
'Business' => t('Business'),
'Chemistry' => t('Chemistry'),
'Classics' => t('Classics'),
'Diversity and Social Justice Studies' => t('Diversity and Social Justice Studies'),
'Economics' => t('Economics'),
'Education' => t('Education'),
'English' => t('English'),
'Engineering' => t('Engineering'),
'Environmental Studies' => t('Environmental Studies'),
'Fine Arts' => t('Fine Arts'),
'History' => t('History'),
'Island Studies' => t('Island Studies'),
'Island Studies (Masters)' => t('Island Studies (Masters)'),
'Robertson Library' => t('Robertson Library'),
'Robertson Library' => t('Robertson Library'),
'Mathematical and Computational Sciences' => t('Mathematical and Computational Sciences'),
'Modern Languages' => t('Modern Languages'),
'Music' => t('Music'),
'Nursing' => t('Nursing'),
'Philosophy' => t('Philosophy'),
'Physics' => t('Physics'),
'Political Science' => t('Political Science'),
'Psychology' => t('Psychology'),
'Religious Studies' => t('Religious Studies'),
'Sociology/Anthropology' => t('Sociology/Anthropology'),
'Other' => t('Other (Please add to the Notes field)'),
);
$form['patron_type'] = array(
'#type' => 'select',
'#title' => t('Your Patron Type'),
'#options' => $patron_types,
'#required' => TRUE,
);
$form['Department'] = array(
'#type' => 'select',
'#title' => t('Your Department'),
'#options' => $departments,
'#required' => TRUE,
);
$form['DeliveryAddress'] = array(
'#type' => 'textfield',
'#title' => t('Your Email'),
'#size' => 50,
'#required' => TRUE,
);
$form['InstitutionName'] = array(
'#type' => 'hidden',
'#title' => t('Name of Institution'),
'#size' => 50,
'#default_value' => 'University of Prince Edward Island',
'#required' => TRUE,
);
$form['LibraryName'] = array(
'#type' => 'hidden',
'#title' => t('Name of Library'),
'#size' => 50,
'#default_value' => 'Robertson Library',
'#required' => TRUE,
);
$form['notes'] = array(
'#type' => 'textarea',
'#title' => t('Notes'),
'#size' => 50,
'#required' => FALSE,
);
$form['certify'] = array(
'#type' => 'checkbox',
'#description' => 'I hereby certify that this item is being sought for a fair dealing purpose and any copying will be in accordance with the Copyright Act. ',
'#size' => 50,
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
}
/**
* The bibliographic portion of the ILL form.
*
* @param array $form
* An array representing a Drupal form.
* @param array $form_state
* An array containing the Drupal form state.
*
* @return array
* An array representing the bibliographic form.
*/
function upei_roblib_ill_request_form($form, & $form_state) {
module_load_include('inc', 'upei_roblib_ill', 'includes/utilities');
$form['#prefix'] = '< div id = "upei-roblib-ill-request-form" > ';
$form['#suffix'] = '< / div > ';
$genre = empty(upei_roblib_ill_get_request_variable('genre')) ? 'article' : upei_roblib_ill_get_request_variable('genre');
//$values = isset($form_state['multistep_values']['upei_roblib_ill_request']) ? orm_state['multistep_values']['ra$fte_the_room'] : array();
$form['Genre'] = array(
'#type' => 'select',
'#title' => t('Genre'),
'#default_value' => $genre,
'#options' => array(
'article' => t('Journal Article'),
'book' => t('Book'),
'chapter' => t('Book Chapter'),
),
'#required' => TRUE,
);
$form['doi'] = array(
'#type' => 'textfield',
'#title' => t('DOI'),
'#default_value' => upei_roblib_ill_get_request_variable('doi'),
'#description' => 'DOI, if you provide a DOI we will attempt to lookup the record for you',
'#size' => 50,
'#states' => array(
'visible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
'#required' => FALSE,
);
$form['doi_button'] = array(
'#type' => 'submit',
'#value' => 'lookup DOI',
'#ajax' => array(
'callback' => 'upei_roblib_ill_doi_callback',
'method' => 'replace',
'wrapper' => 'upei-roblib-ill-request-form',
'effect' => 'fade',
),
'#states' => array(
'visible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
'#required' => FALSE,
);
$form['Title'] = array(
'#type' => 'textarea',
'#rows' => 2,
'#title' => t('Source Title'),
'#default_value' => upei_roblib_ill_get_request_variable('title'),
'#description' => 'Journal or Book Title',
'#size' => 50,
'#required' => FALSE,
);
$form['ArticleTitle'] = array(
'#type' => 'textarea',
'#rows' => 2,
'#title' => t('Title'),
'#default_value' => upei_roblib_ill_get_request_variable('atitle'),
'#description' => 'Article or Chapter Title',
'#size' => 50,
'#states' => array(
'invisible' => array(
':input[name="Genre"]' => array('value' => 'book'),
),
),
'#required' => FALSE,
);
$form['ISSN'] = array(
'#type' => 'textfield',
'#title' => t('ISSN'),
'#default_value' => upei_roblib_ill_get_request_variable('issn'),
'#size' => 50,
'#states' => array(
'visible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
'#required' => FALSE,
);
$form['ArticleAuthor'] = array(
'#type' => 'textfield',
'#title' => t('Author'),
'#default_value' => upei_roblib_ill_get_request_variable('author'),
'#size' => 50,
'#required' => FALSE,
'#description' => 'Article or Chapter Author',
'#states' => array(
'invisible' => array(
':input[name="Genre"]' => array('value' => 'book'),
),
),
);
$form['Author'] = array(
'#type' => 'textfield',
'#title' => t('Book Author'),
'#default_value' => upei_roblib_ill_get_request_variable('author'),
'#size' => 50,
'#required' => FALSE,
'#states' => array(
'invisible' => array(
':input[name="Genre"]' => array('value' => t('article')),
),
),
);
$form['ISBN'] = array(
'#type' => 'textfield',
'#title' => t('ISBN'),
'#default_value' => upei_roblib_ill_get_request_variable('isbn'),
'#size' => 50,
'#states' => array(
'invisible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
'#required' => FALSE,
);
$form['SubTitle'] = array(
'#type' => 'hidden',
'#title' => t('Sub Title'),
'#default_value' => upei_roblib_ill_get_request_variable('ubtitle'),
'#size' => 50,
'#required' => FALSE,
);
$form['SeriesTitle'] = array(
'#type' => 'hidden',
'#title' => t('Series Title'),
'#default_value' => upei_roblib_ill_get_request_variable('stitle'),
'#size' => 50,
'#required' => FALSE,
);
$form['Volume'] = array(
'#type' => 'textfield',
'#title' => t('Volume'),
'#default_value' => upei_roblib_ill_get_request_variable('volume'),
'#size' => 50,
'#required' => FALSE,
'#states' => array(
'visible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
);
$form['Issue'] = array(
'#type' => 'textfield',
'#title' => t('Issue'),
'#default_value' => upei_roblib_ill_get_request_variable('issue'),
'#size' => 50,
'#required' => FALSE,
'#states' => array(
'visible' => array(
':input[name="Genre"]' => array('value' => 'article'),
),
),
);
$form['PagesRequested'] = array(
'#type' => 'textfield',
'#title' => t('Pages'),
'#default_value' => upei_roblib_ill_get_request_variable('pages'),
'#description' => 'Pages requested (startpage-endpage)',
'#size' => 50,
'#required' => FALSE,
'#states' => array(
'invisible' => array(
':input[name="Genre"]' => array('value' => 'book'),
),
),
);
$form['Date'] = array(
'#type' => 'textfield',
'#title' => t('Date'),
'#default_value' => upei_roblib_ill_get_request_variable('date'),
'#size' => 50,
'#required' => FALSE,
);
$form['next'] = array(
'#type' => 'submit',
'#value' => t('Next')
);
return $form;
}