# This patch file was generated by NetBeans IDE
# This patch can be applied using context Tools: Apply Diff Patch action on respective folder.
# It uses platform neutral UTF-8 encoding.
# Above lines and this line are ignored by the patching process.
Index: contributions/modules/millennium/millennium.admin.inc
--- contributions/modules/millennium/millennium.admin.inc Base (1.1.2.31)
+++ contributions/modules/millennium/millennium.admin.inc Locally Modified (Based On 1.1.2.31)
@@ -9,8 +9,8 @@
* Callback for drupal_get_form for general settings form
*/
function millennium_admin_settings() {
- if (variable_get('millennium_webopac_baseurl', false) === false) {
- drupal_set_message(t('You have not yet set the Base URL.'), 'warning');
+ if (sizeof(variable_get('millennium_sources', array())) == 0) {
+ drupal_set_message(t('You have not yet set any sources.'), 'warning');
}
$node_types = node_get_types();
@@ -33,22 +33,6 @@
'#default_value' => variable_get('millennium_marc_node_type', 'page'),
);
- $form['general']['millennium_webopac_baseurl'] = array(
- '#type' => 'textfield',
- '#title' => t("Base URL for WebOPAC"),
- '#size' => 40,
- '#default_value' => variable_get('millennium_webopac_baseurl', ''),
- '#description' => t('For example: http://example.com/'),
- '#prefix' => '
',
- '#ahah' => array(
- 'path' => 'millennium_checkurl_js',
- 'event' => 'change',
- 'wrapper' => 'checkurl',
- 'method' => 'replace',
- 'effect' => 'fade',
- ),
- );
$form['general']['millennium_action_on_last_item_deleted'] = array(
'#type' => 'radios',
'#title' => t('Action when imported records are no longer found in WebOPAC'),
@@ -56,7 +40,153 @@
'#default_value' => variable_get('millennium_action_on_last_item_deleted', 'unpublish'),
);
- $run_cron_url = l(t('run cron'), 'admin/reports/status/run-cron', array('query' => array('destination' => MILLENNIUM_SETTINGS_PATH)));
+ // Sources fieldset
+ $form['sources'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => true,
+ '#title' => t('Source OPACs'),
+ '#description' => t('You can enter OPAC sources that will be available for batch import and other operations.'),
+ );
+
+ // Show table for existing OPAC sources
+ $rows = array();
+ $headers = array(t('Action'), t('OPAC base URL'), t('OPAC name'));
+ foreach (variable_get("millennium_sources", array()) as $base_url => $source_data) {
+ // Element to remove this source
+ $remove_element = array(
+ '#name' => 'remove_source_' . $base_url,
+ '#type' => 'checkbox',
+ '#title' => t('Remove')
+ );
+ // Element to edit existing source name
+ $edit_name_element = array(
+ '#name' => 'edit_name_' . $base_url,
+ '#type' => 'textfield',
+ '#value' => $source_data["name"],
+ '#size' => 30,
+ );
+ // Add row to table
+ $rows[] = array(
+ drupal_render($remove_element),
+ l($base_url, $base_url),
+ drupal_render($edit_name_element)
+ );
+ }
+
+ // Add a final table row to allow adding new sources
+ $add_url_element = array(
+ '#name' => 'add_url',
+ '#type' => 'textfield',
+ '#size' => 30,
+ );
+ $add_name_element = array(
+ '#name' => 'add_name',
+ '#type' => 'textfield',
+ '#size' => 30,
+ );
+ $rows[] = array(t('Add new source:'), drupal_render($add_url_element), drupal_render($add_name_element));
+ // Add the themed table to the form
+ $form['sources']['table'] = array(
+ '#type' => 'markup',
+ '#value' => theme('table', $headers, $rows)
+ );
+ // Add custom validation and submission callbacks only for the table elements;
+ // the rest of the form is automatically handled by
+ // system_settings_form_submit() because of system_settings_form() call below.
+ $form['#validate'][] = 'millennium_admin_settings_form_validate';
+ $form['#submit'][] = 'millennium_admin_settings_form_submit';
+
+ // Render as a system settings form.
+ return system_settings_form($form);
+}
+
+/**
+ * Validate handler for settings form; handles special values in table
+ */
+function millennium_admin_settings_form_validate($form, &$form_state) {
+ $sources = variable_get('millennium_sources', array());
+
+ // Validate sources to remove
+ foreach ($sources as $base_url => $source_data) {
+ $base_url_as_index = str_replace(".", "_", $base_url);
+ if ($form_state['clicked_button']['#post']["remove_source_{$base_url_as_index}"]) {
+ // Check if there are existing records for this base_url
+ $count = (int)db_result(db_query("SELECT count(1) FROM {millennium_node_bib} WHERE base_url = '%s'", $base_url));
+ if ($count) {
+ form_set_error("remove_source_{$base_url_as_index}", t('The source %url cannot be removed since nodes that depend on it still exist.', array('%url' => $new_url)));
+ }
+ }
+ }
+
+ // Validate a new URL if given
+ $new_url = trim($form_state['clicked_button']['#post']['add_url']);
+ $new_name = trim($form_state['clicked_button']['#post']['add_name']);
+ if ($new_url) {
+ // Check for valid URL
+ if (strpos($new_url, 'http://') !== 0) {
+ form_set_error('add_url', t('The entered url %url is not valid.', array('%url' => $new_url)));
+ return;
+ }
+
+ // Normalize the base url
+ $new_url = check_plain(millennium_get_real_baseurl($new_url));
+
+ // Check for unique base URL
+ if (isset($sources[$new_url])) {
+ form_set_error('add_url', t('The url %url is already defined.', array('%url' => $new_url)));
+ return;
+ }
+ }
+ // All is OK, store the normalized URL for the submit function
+ $form_state['storage']['add_url'] = $new_url;
+}
+
+/**
+ * Submit handler for settings form; handles special values that are not
+ */
+function millennium_admin_settings_form_submit($form, &$form_state) {
+ #dpm($form_state);
+ $sources = variable_get('millennium_sources', array());
+
+ // Update any changes to sources
+ foreach ($sources as $base_url => $source_data) {
+ $base_url_as_index = str_replace(".", "_", $base_url);
+ #dsm("Checking $base_url");
+ #dpm($form_state['clicked_button']['#post']["remove_source_{$base_url_as_index}"]);
+ // Removal checked?
+ if ($form_state['clicked_button']['#post']["remove_source_{$base_url_as_index}"] == "1") {
+ drupal_set_message(t('Removed source %url', array('%url' => $base_url)));
+ unset($sources[$base_url]);
+ // TODO: Update taxonomy terms, etc.
+ continue;
+ }
+
+ // Name change
+ $sent_name = $form_state['clicked_button']['#post']["edit_name_{$base_url_as_index}"];
+ if ($sent_name != $source_data["name"]) {
+ $sources[$base_url]["name"] = check_plain($sent_name);
+ // TODO: Update taxonomy terms, etc.
+ }
+ }
+
+ // If sent, add the new url and name to the sources
+ $new_url = $form_state['storage']['add_url'];
+ $new_name = trim($form_state['clicked_button']['#post']['add_name']);
+ if ($new_url) {
+ $sources[$new_url] = array('name' => check_plain($new_name));
+ // TODO: Add taxonomy terms (??)
+ }
+
+ // Store the new value for sources
+ variable_set('millennium_sources', $sources);
+}
+
+/**
+ * Callback for drupal_get_form for crawl settings form.
+ */
+function millennium_admin_crawl() {
+ $form = array();
+ $run_cron_url = l(t('run cron'), 'admin/reports/status/run-cron', array('query' => array('destination' => MILLENNIUM_SETTINGS_PATH . '/crawl')));
$form['crawl'] = array(
'#type' => 'fieldset',
'#collapsible' => true,
@@ -71,6 +201,13 @@
'#description' => t('Enabling this will start (or continue) the automatic record import/update. Disabling this does not stop importing items queued manually for import.'),
'#default_value' => variable_get('millennium_crawl_flag', 0),
);
+ $form['crawl']['millennium_crawl_baseurl'] = array(
+ '#type' => 'select',
+ '#title' => t('Source WebOPAC'),
+ '#description' => t('Select one of the enabled sources.'),
+ '#default_value' => variable_get('millennium_crawl_baseurl', ''),
+ '#options' => drupal_map_assoc(array_keys(variable_get('millennium_sources', array()))),
+ );
$form['crawl']['millennium_webopac_maxrecords'] = array(
'#type' => 'select',
'#title' => t("Items to import per cron run"),
@@ -106,7 +243,6 @@
'#description' => t('WARNING: Set ONLY if you want to start over from that number onwards.'),
'#default_value' => variable_get('millennium_webopac_reset', false),
);
-
return system_settings_form($form);
}
@@ -322,15 +458,16 @@
if ($tot_queued_items > 0) {
$form['source']['#options']['queued'] = t('All records awaiting cron (@num items). Note: this will empty the cron queue!', array("@num" => $tot_queued_items));
}
- $form['millennium_webopac_baseurl'] = array(
+ $form['millennium_import_form_baseurl'] = array(
'#type' => 'textfield',
'#title' => t('Base URL for WebOPAC'),
'#description' => t('For example: http://example.com/'),
- '#default_value' => variable_get('millennium_import_form_baseurl', variable_get('millennium_webopac_baseurl', '')),
+ '#default_value' => variable_get('millennium_import_form_baseurl', ''),
'#prefix' => '',
+ '#autocomplete_path' => 'millennium_autocomplete_js',
'#ahah' => array(
- 'path' => 'millennium_checkurl_js',
+ 'path' => 'millennium_checkurl_js/millennium_import_form_baseurl',
'event' => 'change',
'wrapper' => 'checkurl',
'method' => 'replace',
@@ -458,9 +595,9 @@
if ($form_state["values"]["source"] == "range" ||
$form_state["values"]["source"] == "list" ||
$form_state["values"]["source"] == "query") {
- $base_url = $form_state['values']['millennium_webopac_baseurl'];
+ $base_url = millennium_get_real_baseurl($form_state['values']['millennium_import_form_baseurl']);
if (!$base_url) {
- form_set_error('millennium_webopac_baseurl', t("Not a valid base URL."));
+ form_set_error('millennium_import_form_baseurl', t("Not a valid base URL."));
}
}
if ($form_state["values"]["source"] == "range") {
@@ -537,7 +674,7 @@
// Store some values for later
variable_set('millennium_import_form_source', $form_state["values"]["source"]);
- variable_set('millennium_import_form_baseurl', $form_state["values"]["millennium_webopac_baseurl"]);
+ variable_set('millennium_import_form_baseurl', $form_state["values"]["millennium_import_form_baseurl"]);
variable_set('millennium_import_form_force_update', $form_state["values"]["force_update"]);
variable_set('millennium_list_form_checkdigit', $form_state["values"]["ignore_checkdigit"]);
variable_set('millennium_range_form_type', $form_state["values"]["type"]);
@@ -546,6 +683,8 @@
variable_set('millennium_import_form_kw', $form_state["values"]["kw"]);
variable_set('millennium_import_form_url', $form_state["values"]["url"]);
+ $base_url = millennium_get_real_baseurl($form_state['values']['millennium_import_form_baseurl']);
+
if ($form_state["clicked_button"]["#value"] == t("Process these records during cron runs")) {
// When? Cron runs
@@ -570,7 +709,7 @@
$recnum,
$form_state['values']['priority'],
$form_state['values']['force_update'],
- $form_state['values']['millennium_webopac_baseurl']);
+ $base_url);
if ($ok)
$queued++;
}
@@ -587,7 +726,7 @@
$type . $num,
$form_state['values']['priority'],
$form_state['values']['force_update'],
- $form_state['values']['millennium_webopac_baseurl']);
+ $base_url);
if ($ok) {
$queued++;
}
@@ -631,7 +770,7 @@
if ($form_state["values"]["ignore_checkdigit"] == true) {
$recnum = drupal_substr($recnum, 0, drupal_strlen($recnum)-1);
}
- $records_to_crawl[$form_state['values']['millennium_webopac_baseurl']][$recnum] = $recnum;
+ $records_to_crawl[$base_url][$recnum] = $recnum;
}
}
}
@@ -641,7 +780,6 @@
$type = $form_state["values"]["type"];
$start = $form_state["values"]["start"];
$end = $form_state["values"]["end"];
- $base_url = millennium_get_real_baseurl($form_state['values']['millennium_webopac_baseurl']);
for ($num = $start; $num <= $end; $num++) {
$records_to_crawl[$base_url]["{$type}{$num}"] = "{$type}{$num}";
}
@@ -650,7 +788,6 @@
if ($form_state["values"]["source"] == "query") {
require_once 'millennium.import.inc';
variable_set('millennium_import_form_num_items', $form_state["values"]["num_items"]);
- $base_url = $form_state['values']['millennium_webopac_baseurl'];
$records = millennium_query_scrape(
$form_state["values"]["kw"],
$base_url,
Index: contributions/modules/millennium/millennium.cron.inc
--- contributions/modules/millennium/millennium.cron.inc Base (1.1.2.9)
+++ contributions/modules/millennium/millennium.cron.inc Locally Modified (Based On 1.1.2.9)
@@ -11,11 +11,11 @@
$start_time = microtime(true);
// Is URL set?
- if (($base_url = millennium_get_real_baseurl()) === false) {
+ if (($base_url = variable_get('millennium_crawl_baseurl', false)) === false) {
return;
}
if (!millennium_ping($base_url)) {
- watchdog("Millennium", "Cron run aborted because WebOPAC at @url not responding", array("@url" => $base_url));
+ watchdog("Millennium", "Cron run aborted because WebOPAC at @url not responding", array("@url" => $base_url), WATCHDOG_ERROR);
return;
}
@@ -143,7 +143,7 @@
// Chunk array into groups of 50 (maximum number allowed by bookcart)
$recnums_chunks = array_chunk($recnums, 50);
foreach ($recnums_chunks as $recnums_chunk) {
- $fetched = millennium_fetch_records_via_bookcart($recnums_chunk);
+ $fetched = millennium_fetch_records_via_bookcart($recnums_chunk, false, $base_url);
#dpm($fetched);
foreach ($fetched['found'] as $data) {
$result = millennium_process_record($data);
@@ -206,8 +206,8 @@
$elapsed_time = microtime(true) - $start_time;
millennium_time_history($elapsed_time, $tot_attempted, $tot_notfound, $tot_imported, $tot_fail);
- watchdog("Millennium", "Cron import finished: @attempted attempted, @notfound not found on WebOpac, @imported imported ok, @failed could not import, in @time seconds (@time2 items per second)",
- array("@attempted" => $tot_attempted, "@notfound" => $tot_notfound, "@imported" => $tot_imported, "@failed" => $tot_fail+0, "@time" => sprintf("%2.1f", $elapsed_time), "@time2" => sprintf("%2.1f", $tot_attempted / $elapsed_time))
\ No newline at end of file
+ watchdog("Millennium", "Cron import finished: @url: @attempted attempted, @notfound not found on WebOpac, @imported imported ok, @failed could not import, in @time seconds (@time2 items per second)",
+ array("@url" => $base_url, "@attempted" => $tot_attempted, "@notfound" => $tot_notfound, "@imported" => $tot_imported, "@failed" => $tot_fail+0, "@time" => sprintf("%2.1f", $elapsed_time), "@time2" => sprintf("%2.1f", $tot_attempted / $elapsed_time))
\ No newline at end of file
);
}
}
Index: contributions/modules/millennium/millennium.import.inc
--- contributions/modules/millennium/millennium.import.inc Base (1.1.2.20)
+++ contributions/modules/millennium/millennium.import.inc Locally Modified (Based On 1.1.2.20)
@@ -71,12 +71,7 @@
* @param $limit
* Maximum number of records to return.
*/
-function millennium_query_scrape($query, $base_url = false, $limit = 100) {
- if ($base_url == false) {
- $base_url = millennium_get_real_baseurl();
- } else {
- $base_url = millennium_get_real_baseurl($base_url);
- }
+function millennium_query_scrape($query, $base_url, $limit = 100) {
// Build query URL
$url = "{$base_url}/search/X?" . drupal_urlencode($query);
// Get records
@@ -90,7 +85,7 @@
* @param $base_url
* The base url of the WebOPAC to process.
*/
-function millennium_mass_fetch($recnums, $base_url = false) {
+function millennium_mass_fetch($recnums, $base_url) {
// This seems to be the limit for WebOPACs, do not change =)
$max_records_for_bookcart = 40;
@@ -163,19 +158,13 @@
* 'not_found' => array('i100000', 'i100005', [...])
* );
*/
-function millennium_fetch_records_via_bookcart($recnums, $complete_holdings = false, $base_url = false) {
+function millennium_fetch_records_via_bookcart($recnums, $complete_holdings = false, $base_url) {
// Set the following to true for lots and lots of debugging info =)
$debug = false;
// Start timer to measure average performance
timer_start("millennium_fetch_records_via_bookcart");
- if ($base_url == false) {
- $base_url = millennium_get_real_baseurl();
- } else {
- $base_url = millennium_get_real_baseurl($base_url);
- }
-
$found_items = array();
$not_found_items = array();
@@ -344,11 +333,11 @@
// volume/copy" button? Do we want to check for complete holdings?
if ($match[3] != "" && $complete_holdings == true) {
// Yes. Issue additional request to OPAC to get holdings information for item.
- $found_items[$current_recnum]['holdings'] = millennium_get_holdings_info($this_bib_recnum, null, $base_url);
+ $found_items[$current_recnum]['holdings'] = millennium_get_holdings_info($this_bib_recnum, $base_url);
} else {
// No. Convert whatever holdings info (might be incomplete) we got along
// with the MARC export and add it to the item array.
- $found_items[$current_recnum]['holdings'] = millennium_get_holdings_info($this_bib_recnum, $match[2], $base_url);
\ No newline at end of file
+ $found_items[$current_recnum]['holdings'] = millennium_get_holdings_info($this_bib_recnum, $base_url, $match[2]);
\ No newline at end of file
}
$found_items_index++;
}
Index: contributions/modules/millennium/millennium.install
--- contributions/modules/millennium/millennium.install Base (1.1.2.5.2.1.2.10)
+++ contributions/modules/millennium/millennium.install Locally Modified (Based On 1.1.2.5.2.1.2.10)
@@ -23,6 +23,7 @@
if ($phase == 'runtime') {
$msg = array();
+ /* TODO: Decide if we will still check OPAC/OPACs
$base_url = millennium_get_real_baseurl();
if (!$base_url) {
$msg[] = $t("You must configure a base URL; please go to the !configurationpage", array("!configurationpage" => l($t("configuration page"), MILLENNIUM_SETTINGS_PATH)));
@@ -44,6 +45,7 @@
'description' => $description,
'severity' => $severity,
);
+ */
}
return $requirements;
}
@@ -341,3 +343,23 @@
);
return $ret;
}
+
+function millennium_update_6005() {
+ $ret = array();
+ $sources = variable_get('millennium_sources', array());
+ // Move millennium_webopac_baseurl variable into the new sources variable
+ $base_url = variable_get('millennium_webopac_baseurl', '');
+ if ($base_url && !isset($sources[$base_url])) {
+ $sources[$base_url] = array('name' => '');
+ }
+ // Add sources from all currently-imported records
+ $result = db_query("SELECT DISTINCT(base_url) FROM {millennium_node_bib}");
+ while ($data = db_fetch_object($result)) {
+ if (!isset($sources[$data->base_url])) {
+ $sources[$data->base_url] = array('name' => '');
+ }
+ }
+ // Update/create sources variable
+ variable_set('millennium_sources', $sources);
+ return $ret;
+}
\ No newline at end of file
Index: contributions/modules/millennium/millennium.module
--- contributions/modules/millennium/millennium.module Base (1.13.2.33.2.2.2.86)
+++ contributions/modules/millennium/millennium.module Locally Modified (Based On 1.13.2.33.2.2.2.86)
@@ -583,6 +583,16 @@
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
+ $items[MILLENNIUM_SETTINGS_PATH . '/crawl'] = array(
+ 'title' => 'Automatic crawl',
+ 'description' => 'Configure automatic crawl settings.',
+ 'type' => MENU_LOCAL_TASK,
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('millennium_admin_crawl'),
+ 'access callback' => 'user_access',
+ 'access arguments' => array('administer millennium'),
+ 'file' => 'millennium.admin.inc',
+ );
$items[MILLENNIUM_SETTINGS_PATH . '/map'] = array(
'title' => 'Taxonomy mapping',
'description' => 'Configure MARC import mapping settings.',
@@ -623,6 +633,7 @@
'type' => MENU_CALLBACK,
'file' => 'millennium.pages.inc',
);
+ /* TODO: make this work with a URL at the end
$items['millennium/preview/%'] = array(
'title' => 'Millennium node import preview',
'page callback' => 'millennium_preview_import' ,
@@ -632,6 +643,7 @@
'type' => MENU_CALLBACK,
'file' => 'millennium.pages.inc',
);
+ */
$items['admin/reports/millennium'] = array(
'title' => 'Millennium import statistics',
@@ -647,12 +659,19 @@
'access arguments' => array('access content'),
'file' => 'millennium.pages.inc',
);
- $items['millennium_checkurl_js'] = array(
+ $items['millennium_checkurl_js/%'] = array(
'page callback' => 'millennium_checkurl_js',
+ 'page arguments' => array(1),
'type' => MENU_CALLBACK,
'access arguments' => array('administer millennium'),
'file' => 'millennium.pages.inc',
);
+ $items['millennium_autocomplete_js'] = array(
+ 'page callback' => 'millennium_autocomplete_js',
+ 'type' => MENU_CALLBACK,
+ 'access arguments' => array('administer millennium'),
+ 'file' => 'millennium.pages.inc',
+ );
$items['node/%node/millennium'] = array(
'title' => 'Millennium Tools',
@@ -1111,7 +1130,7 @@
if ($data['base_url']) {
$base_url = $data['base_url'];
} else {
- $base_url = millennium_get_real_baseurl();
+ return array("success" => false, "error" => "No base_url in item #" . $data['item_recnum']);
}
// Had we already imported this item record?
@@ -1184,7 +1203,7 @@
function millennium_process_item_record_new_import($data, $nid) {
// Link item to bib, node
$record = array('nid' => $nid, 'bib_recnum' => $data['bib_recnum'], 'item_recnum' => $data['item_recnum'],
- 'updated' => date("Y-m-d H:i:s"), 'created' => date("Y-m-d H:i:s"), 'base_url' => millennium_get_real_baseurl());
+ 'updated' => date("Y-m-d H:i:s"), 'created' => date("Y-m-d H:i:s"), 'base_url' => $data['base_url']);
$result = drupal_write_record('millennium_bib_item', $record);
if (!$result) {
drupal_set_message("millennium_process_item_record_new_import: drupal_write_record('millennium_bib_item') returned false");
@@ -1277,7 +1296,7 @@
if ($data['base_url']) {
$base_url = millennium_get_real_baseurl($data['base_url']);
} else {
- $base_url = millennium_get_real_baseurl();
+ return array("success" => false, "error" => "Could not get bib_recnum for bib #" . $data['bib_recnum']);
}
$bib_import_history = db_fetch_object(db_query("SELECT * FROM {millennium_node_bib} WHERE bib_recnum='%s' AND base_url = '%s'", $data['bib_recnum'], $base_url));
@@ -1313,7 +1332,7 @@
}
// Re-create a nodeobject from the MARC record
- $new_node = millennium_record_to_nodeobject($data['bib_recnum'], $data['marc'], $base_url);
+ $new_node = millennium_record_to_nodeobject($data['bib_recnum'], $base_url, $data['marc']);
if ($new_node->success === false) {
#drupal_set_message("millennium_process_bib_record(): millennium_record_to_nodeobject() returned error ". $result["error"]);
return array("success" => false, "error" => $new_node->error);
@@ -1373,7 +1392,7 @@
if ($data['base_url']) {
$base_url = $data['base_url'];
} else {
- $base_url = millennium_get_real_baseurl();
+ return;
}
// Get bibrecord number and erase any existing node-item relationships
@@ -1418,7 +1437,7 @@
if ($data['base_url']) {
$base_url = $data['base_url'];
} else {
- $base_url = millennium_get_real_baseurl();
+ return;
}
db_query("DELETE FROM {millennium_bib_item} WHERE bib_recnum='%s' AND base_url = '%s'", $data['bib_recnum'], $base_url);
@@ -1448,9 +1467,8 @@
* @param recnum Millennium record number (b123456, i123456) to fetch
* @param string $marc_text An optional MARC record to import from.
*/
-function millennium_record_to_nodeobject($recnum, $marc_text = null, $base_url = false) {
+function millennium_record_to_nodeobject($recnum, $base_url, $marc_text = null) {
$result = new stdClass();
- $base_url = millennium_get_real_baseurl($base_url);
if ($marc_text == null) {
$marc_text = millennium_fetch_marc($recnum, $base_url);
if (!$marc_text) {
@@ -1540,14 +1558,11 @@
/**
* Returns the user-defined base URL for the Millennium server (e.g. http://example.com/)
*/
-function millennium_get_real_baseurl($base_url = false) {
- if ($base_url === false) {
- $base_url = variable_get('millennium_webopac_baseurl', '');
- }
- if ($base_url == '') {
+function millennium_get_real_baseurl($base_url) {
+ if ($base_url === false || $base_url == '') {
return false;
}
- $parts = @parse_url($base_url);
+ $parts = @parse_url(trim($base_url));
if (!$parts['host']) {
return false;
}
@@ -1563,7 +1578,7 @@
* @param recnum Millennium record number (b123456, i123456) to fetch
* @param mode String specifying type of view: plain, marc, items, xml
*/
-function millennium_fetch_recordpage($recnum, $mode = "plain", $base_url = false) {
+function millennium_fetch_recordpage($recnum, $mode = "plain", $base_url) {
global $millennium_fetch_recordpage_cache;
$key = $recnum . $mode . $base_url;
#drupal_set_message("millennium_fetch_recordpage($recnum, $mode): key = $key");
@@ -1590,15 +1605,7 @@
/**
* Returns a URL for a certain item record view in Millennium
*/
-function millennium_permalink($recnum, $mode = 'plain', $base_url = false) {
- if ($base_url === false) {
- $base_url = millennium_get_real_baseurl();
- }
- if ($base_url == false) {
- return false;
- } else {
- $base_url = millennium_get_real_baseurl($base_url);
- }
+function millennium_permalink($recnum, $mode = 'plain', $base_url) { // TODO fix argument order
// Determine if record is for an item or bib
$recnum_type = substr($recnum, 0, 1);
@@ -1613,7 +1620,7 @@
case "hold":
case "items":
if ($recnum_type == "i") {
- $bib_recnum = db_result(db_query("SELECT bib_recnum FROM {millennium_bib_item} WHERE item_recnum='%s' AND base_url = '%s'", $recnum, millennium_get_real_baseurl()));
+ $bib_recnum = db_result(db_query("SELECT bib_recnum FROM {millennium_bib_item} WHERE item_recnum='%s' AND base_url = '%s'", $recnum, $base_url));
$item_recnum = $recnum;
} else {
$bib_recnum = $recnum;
@@ -1911,7 +1918,7 @@
return;
}
$locations_available = array();
- $holdings = millennium_get_holdings_info($recnum, null, $base_url);
+ $holdings = millennium_get_holdings_info($recnum, $base_url);
foreach ($holdings as $item) {
if (
!variable_get('millennium_map_available_only', FALSE)
@@ -2442,13 +2449,10 @@
* @return array
* A holdings array.
*/
-function millennium_get_holdings_info($recnum, $fetched_html = null, $base_url = false) {
+function millennium_get_holdings_info($recnum, $base_url, $fetched_html = null) {
static $cache;
$items = array();
- if ($base_url === false) {
- $base_url = millennium_get_real_baseurl();
- }
if ($fetched_html == null) {
// Build a cache id
Index: contributions/modules/millennium/millennium.pages.inc
--- contributions/modules/millennium/millennium.pages.inc Base (1.1.2.5)
+++ contributions/modules/millennium/millennium.pages.inc Locally Modified (Based On 1.1.2.5)
@@ -49,12 +49,13 @@
/**
* Callback function from hook_menu to show how an millennium record would be imported
*/
-function millennium_preview_import($recnum) {
- $output = t("You can also !link", array('!link' => l(t("import this record now"), "millennium/import/$recnum")));
- $output .= "
";
- $output .= _millennium_show_conversion($recnum);
- return $output;
-}
+//DISABLED. See millennium_menu() callback to this function.
+//function millennium_preview_import($recnum) {
+// $output = t("You can also !link", array('!link' => l(t("import this record now"), "millennium/import/$recnum")));
+// $output .= "
";
+// $output .= _millennium_show_conversion($recnum);
+// return $output;
+//}
/**
* Callback function from hook_menu that shows import and conversion information for node $nid
@@ -84,7 +85,7 @@
$output .= "";
$output .= "". t('MARC record and conversion') ."
";
- $output .= _millennium_show_conversion($bib_recnum, $node->millennium_biblio_data["marc"], $data->base_url);
+ $output .= _millennium_show_conversion($bib_recnum, $data->base_url, $node->millennium_biblio_data["marc"]);
return $output;
}
@@ -139,7 +140,7 @@
else {
$bib_recnum = millennium_bib_recnum_from_node($nid);
$base_url = db_result(db_query("SELECT base_url FROM {millennium_node_bib} WHERE nid=%d", $nid));
- $holdings = millennium_get_holdings_info($bib_recnum, NULL, $base_url);
+ $holdings = millennium_get_holdings_info($bib_recnum, $base_url);
$output = theme('millennium_holdings', $nid, $holdings, $page);
cache_set($cid, serialize($output), 'cache', time() + 900); // 15 minutes
}
@@ -263,7 +264,7 @@
/**
* Diagnostics to show conversion of MARC into fields for node object
*/
-function _millennium_show_conversion($recnum, $marc_text = false, $base_url = false) {
+function _millennium_show_conversion($recnum, $base_url, $marc_text = false) {
$output = "";
$base_url = millennium_get_real_baseurl($base_url);
if ($base_url == false) {
@@ -277,7 +278,7 @@
$marc_text_msg = t('This MARC record was just fetched from the WebOPAC.');
}
- $tmp_node = millennium_record_to_nodeobject($recnum, $marc_text, $base_url);
+ $tmp_node = millennium_record_to_nodeobject($recnum, $base_url, $marc_text);
if (!$tmp_node || !$tmp_node->millennium_biblio_data) {
return t("Millennium data in node has errors and can not be displayed.");
}
@@ -313,11 +314,29 @@
/**
* Callback function for URL checker
*/
-function millennium_checkurl_js() {
+function millennium_checkurl_js($var_name = false) {
$form_state = array('values' => $_POST);
- $base_url = millennium_get_real_baseurl($form_state['values']['millennium_webopac_baseurl']);
+ $base_url = millennium_get_real_baseurl($form_state['values'][check_plain($var_name)]);
$ok = millennium_ping($base_url);
$output = $ok ? t("WebOPAC is responding normally.") : t("Not a valid WebOPAC.");
$class = $ok ? "status" : "error";
drupal_json(array('status' => TRUE, 'data' => "{$output}
"));
}
+
+/**
+ * Callback function for base_url autocomplete form elements
+ */
+function millennium_autocomplete_js() {
+ $suggestions = array();
+ $search_parts = explode('/', trim($_GET['q']));
+ $search_string = implode('/', array_slice($search_parts, 1));
+ $sources = variable_get("millennium_sources", array());
+ // Look for $search_string in all sources
+ foreach ($sources as $base_url => $source_data) {
+ if (strpos($base_url, $search_string) === 0) {
+ $suggestions[$base_url] = $base_url;
+ }
+ }
+ drupal_json($suggestions);
+ exit;
+}
\ No newline at end of file
Index: contributions/modules/millennium/millennium_auth.info
--- contributions/modules/millennium/millennium_auth.info Base (1.1.2.3)
+++ contributions/modules/millennium/millennium_auth.info Locally Modified (Based On 1.1.2.3)
@@ -3,5 +3,5 @@
description = "Allows users to log in using Millennium credentials."
version = "$Name: $"
dependencies[] = millennium
-core = 6.x
+core = ponies
package = Millennium Integration