Index: mollom.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mollom/mollom.module,v
retrieving revision 1.85
diff -u -p -r1.85 mollom.module
--- mollom.module	25 Sep 2010 01:05:41 -0000	1.85
+++ mollom.module	27 Sep 2010 21:07:50 -0000
@@ -437,32 +437,37 @@ function mollom_data_load($entity, $id) 
  *   The entity id the data belongs to.
  * @param $form_id
  *   The form ID the session data belongs to.
- * @param $response
- *   An associative array of session data returned by Mollom.
+ * @param $data
+ *   An associative array or object of session data returned by Mollom.
  *
  * @todo Remove usage of global $mollom variable.
  */
-function mollom_data_save($entity, $id, $form_id, $response) {
-  // Nothing to do, if we do not have a valid Mollom response.
-  if (empty($GLOBALS['mollom']['response']['session_id'])) {
-    return FALSE;
-  }
-  $data = array(
-    'entity' => $entity,
-    'did' => $id,
-    'form_id' => $form_id,
-    'session' => $response['session_id'],
-    'changed' => time(),
-  );
-  $data += $response;
-
-  // Convert languages into a string.
-  if (!empty($data['languages'])) {
+function mollom_data_save($entity, $id, $form_id, $data) {
+  $is_array = is_array($data);
+  if (!$is_array) {
+    $data = (array) $data;
+  }
+
+  $data['entity'] = $entity;
+  $data['did'] = $id;
+  $data['form_id'] = $form_id;
+  // @todo Rename {mollom}.session.
+  if (isset($data['session_id'])) {
+    $data['session'] = $data['session_id'];
+  }
+  $data['changed'] = REQUEST_TIME;
+  // Convert languages array into a string.
+  if (isset($data['languages']) && is_array($data['languages'])) {
     $data['languages'] = implode(' ', $data['languages']);
   }
 
   $update = db_query_range("SELECT 'did' FROM {mollom} WHERE entity = :entity AND did = :did", 0, 1, array(':entity' => $entity, ':did' => $id))->fetchField();
   drupal_write_record('mollom', $data, $update ? $update : array());
+
+  // Convert back into an object, if originally passed $data has been one.
+  if (!$is_array) {
+    $data = (object) $data;
+  }
   return $data;
 }
 
