Index: webform.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/webform.module,v
retrieving revision 1.196.2.23
diff -u -r1.196.2.23 webform.module
--- webform.module	11 Apr 2010 06:13:51 -0000	1.196.2.23
+++ webform.module	7 Jun 2010 13:27:27 -0000
@@ -486,6 +486,7 @@
     'access own webform submissions',
     'edit own webform submissions',
     'delete own webform submissions',
+    'change submission author',
   );
 }
 
@@ -1419,6 +1420,49 @@
         '#weight' => 10,
       );
     }
+    // Check if the form alerady submited and there are alerady author and date values.
+    if (isset($submission->name) && !empty($submission->name)) {
+      $default_user = $submission->name;
+    }
+    else {
+      $default_user = $user->name;
+    }
+    if (isset($submission->submitted) && !empty($submission->submitted)) {
+      $default_date = $submission->submitted;
+    }
+    else {
+      $default_date = time();
+    }
+    // Check if the user has 'change submission author' or 'administer users' permisssions
+    if (user_access('change submission author') || user_access('administer users')) {
+      $form['admin'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Administration'),
+      '#collapsible' => 1,
+      '#collapsed' => 1,
+      '#weight' => -2,
+      );
+      // Add Authored by textfield to the form
+      $form['admin']['author'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Authored by'),
+        '#size' => 30,
+        '#maxlength' => 60,
+        '#autocomplete_path' => 'user/autocomplete',
+        '#default_value' => $default_user,
+        '#weight' => -1,
+      );
+      // Add Authored on textfield to the form
+      $form['admin']['date'] = array(
+        '#type' => 'textfield',
+        '#parents' => array( 0 => 'date' ),
+        '#title' => t('Authored on'),
+        '#size' => 20,
+        '#maxlength' => 25,
+        '#default_value' => date('Y-m-d H:i', $default_date),
+        '#weight' => -1,
+      );
+    }
   }
 
   return $form;
@@ -1800,10 +1844,25 @@
   $is_draft = $form_state['values']['op'] == t('Save Draft');
 
   // Create a submission object.
+  // Check if submission auther is edited or not
+  if (isset($form_state['values']['author']) && !empty($form_state['values']['author'])) {
+    $submitted_user = user_load(array('name' => $form_state['values']['author']));
+    $submitted_uid = $submitted_user->uid;
+  }
+  else {
+    $submitted_uid = $user->uid;
+  }
+  // Check if submission date is edited or not
+  if (isset($form_state['values']['date']) && !empty($form_state['values']['date'])) {
+    $submitted_time = strtotime($form_state['values']['date']);
+  }
+  else {
+    $submitted_time = time();
+  }
   $submission = (object) array(
     'nid' => $node->nid,
-    'uid' => $user->uid,
-    'submitted' => time(),
+    'uid' => $submitted_uid,
+    'submitted' => $submitted_time,
     'remote_addr' => ip_address(),
     'is_draft' => $is_draft,
     'data' => webform_submission_data($node, $form_state['values']['submitted']),

