# 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: millennium.admin.inc
--- millennium.admin.inc Base (1.1.4.5)
+++ millennium.admin.inc Locally Modified (Based On 1.1.4.5)
@@ -165,8 +165,8 @@
  */
 function millennium_admin_settings_form_submit($form_id, $form_values) {
   // Store variables
-  variable_set('millennium_marc_node_type', $form_values['millennium_marc_node_type']);
-  variable_set('millennium_action_on_last_item_deleted', $form_values['millennium_action_on_last_item_deleted']);
+  millennium_variable_set('millennium_marc_node_type', $form_values['millennium_marc_node_type']);
+  millennium_variable_set('millennium_action_on_last_item_deleted', $form_values['millennium_action_on_last_item_deleted']);
 
   $sources = variable_get('millennium_sources', array());
 
@@ -210,7 +210,7 @@
   }
 
   // Store the new value for sources
-  variable_set('millennium_sources', $sources);
+  millennium_variable_set('millennium_sources', $sources);
 }
 
 /**
@@ -742,15 +742,15 @@
   if (true == true) {
 
     // Store some values for later
-    variable_set('millennium_import_form_source', $form_values["source"]);
-    variable_set('millennium_import_form_baseurl', $form_values["millennium_import_form_baseurl"]);
-    variable_set('millennium_import_form_force_update', $form_values["force_update"]);
-    variable_set('millennium_list_form_checkdigit', $form_values["ignore_checkdigit"]);
-    variable_set('millennium_range_form_type', $form_values["type"]);
-    variable_set('millennium_range_form_start', $form_values["start"]);
-    variable_set('millennium_range_form_end', $form_values["end"]);
-    variable_set('millennium_import_form_kw', $form_values["kw"]);
-    variable_set('millennium_import_form_url', $form_values["url"]);
+    millennium_variable_set('millennium_import_form_source', $form_values["source"]);
+    millennium_variable_set('millennium_import_form_baseurl', $form_values["millennium_import_form_baseurl"]);
+    millennium_variable_set('millennium_import_form_force_update', $form_values["force_update"]);
+    millennium_variable_set('millennium_list_form_checkdigit', $form_values["ignore_checkdigit"]);
+    millennium_variable_set('millennium_range_form_type', $form_values["type"]);
+    millennium_variable_set('millennium_range_form_start', $form_values["start"]);
+    millennium_variable_set('millennium_range_form_end', $form_values["end"]);
+    millennium_variable_set('millennium_import_form_kw', $form_values["kw"]);
+    millennium_variable_set('millennium_import_form_url', $form_values["url"]);
 
     $base_url = millennium_get_real_baseurl($form_values['millennium_import_form_baseurl']);
 
@@ -856,7 +856,7 @@
 
       if ($form_values["source"] == "query") {
         require_once 'millennium.import.inc';
-        variable_set('millennium_import_form_num_items', $form_values["num_items"]);
+        millennium_variable_set('millennium_import_form_num_items', $form_values["num_items"]);
         $records = millennium_query_scrape(
           $form_values["kw"],
           $base_url,
@@ -869,7 +869,7 @@
       
       if ($form_values["source"] == "url") {
         require_once 'millennium.import.inc';
-        variable_set('millennium_import_form_num_items', $form_values["num_items2"]);
+        millennium_variable_set('millennium_import_form_num_items', $form_values["num_items2"]);
         $records = millennium_result_list_scrape(
           $form_values["url"],
           $form_values["num_items2"]
Index: millennium.cron.inc
--- millennium.cron.inc Base (1.1.4.2)
+++ millennium.cron.inc Locally Modified (Based On 1.1.4.2)
@@ -22,7 +22,7 @@
   // Did user indicate crawl should be reset?
   if (variable_get('millennium_webopac_reset', false)) {
     _millennium_crawl_restart();
-    variable_set('millennium_webopac_reset', false);
+    millennium_variable_set('millennium_webopac_reset', false);
   }
 
   $default_start = variable_get('millennium_webopac_start_itemrecord', 10000);
@@ -171,7 +171,7 @@
         $current_rec_num = substr($tmp['item_recnum'], 1) + 0; // Remove the "i" from i100000
         #drupal_set_message("current_rec_num = $current_rec_num");
         if ($current_rec_num > $last_succesful_rec_num) {
-          variable_set('millennium_webopac_latest_successful_itemrecord', $current_rec_num);
+          millennium_variable_set('millennium_webopac_latest_successful_itemrecord', $current_rec_num);
           $last_succesful_rec_num = $current_rec_num;
         }
 
@@ -189,7 +189,7 @@
 
       // Store last tried item
       $last_tried_itemnum = substr(array_pop($recnums_chunk), 1) + 0;
-      variable_set('millennium_webopac_current_itemrecord', $last_tried_itemnum);
+      millennium_variable_set('millennium_webopac_current_itemrecord', $last_tried_itemnum);
     }
 
 
@@ -203,7 +203,7 @@
 
     // Adjust ending record if records are being found past that number
     if ($current_rec_num > $default_end) {
-        variable_set('millennium_webopac_end_itemrecord', $current_rec_num);
+        millennium_variable_set('millennium_webopac_end_itemrecord', $current_rec_num);
         $default_end = $current_rec_num;
     }
   }
@@ -227,7 +227,7 @@
 function _millennium_crawl_restart() {
   $default_start = variable_get('millennium_webopac_start_itemrecord', 10000);
   watchdog("Millennium", t("Restarting automatic crawl from record @start", array("@start" => $default_start)));
-  variable_set('millennium_webopac_latest_successful_itemrecord', $default_start);
-  variable_set('millennium_webopac_current_itemrecord', $default_start);
-  variable_set('millennium_webopac_sequential_failed_imports', 0);
\ No newline at end of file
+  millennium_variable_set('millennium_webopac_latest_successful_itemrecord', $default_start);
+  millennium_variable_set('millennium_webopac_current_itemrecord', $default_start);
+  millennium_variable_set('millennium_webopac_sequential_failed_imports', 0);
\ No newline at end of file
 }
Index: millennium.module
--- millennium.module Base (1.13.2.34.2.6)
+++ millennium.module Locally Modified (Based On 1.13.2.34.2.6)
@@ -2735,7 +2735,7 @@
     array_shift($time_history);
   }
   $time_history[] = array("timestamp" => time(), "items" => $tot_attempted, "not_found" => $tot_notfound, "imported" => $tot_imported, "time" => $elapsed_time);
-  variable_set("millennium_time_history", $time_history);
+  millennium_variable_set("millennium_time_history", $time_history);
 }
 
 /**
@@ -2873,3 +2873,31 @@
   }
   return "";
 }
+
+/**
+ * Lightweight version of variable_set() that clears cache in hook_exit() call
+ */
+function millennium_variable_set($name, $value) {
+  global $conf;
+
+  db_lock_table('variable');
+  db_query("DELETE FROM {variable} WHERE name = '%s'", $name);
+  db_query("INSERT INTO {variable} (name, value) VALUES ('%s', '%s')", $name, serialize($value));
+  db_unlock_tables();
+
+  $conf[$name] = $value;
+
+  // Set global flag to flush variables cache in millennium_exit()
+  $conf['millennium_variable_set'] = TRUE;
+
+}
+
+/**
+ * Implementation of hook_exit() 
+ */
+function millennium_exit($destination = NULL) {
+  global $conf;
+  if ($conf['millennium_variable_set'] == TRUE) {
+    cache_clear_all('variables', 'cache');
+  }
+}
