function autosave_restore in Autosave 7.2
Menu callback; AHAH return the form, repopulated with autosaved data.
@global type $user
Parameters
string $form_id: The form_id of the form to reload.
int $timestamp: The timestamp at which the autosaved form was saved. This is used to differentiate between different people mucking with the same form.
1 string reference to 'autosave_restore'
- autosave_menu in ./autosave.module 
- Implements hook_menu().
File
- ./autosave.module, line 277 
- Does background saves of node being edited.
Code
function autosave_restore($form_id, $timestamp) {
  global $user;
  // Fetch the saved form, if any.
  $record = autosave_get_autosaved_form($form_id, $timestamp, $user->uid);
  $commands = array();
  if ($record) {
    $form_state = array();
    // We need to extract and reuse any additional page arguments that the
    // original form may have.  That's especially true for, say, a node form,
    // which needs the node object passed in as well.
    $menu_item = autosave_menu_get_item($record->path);
    if ($menu_item['include_file']) {
      require_once DRUPAL_ROOT . '/' . $menu_item['include_file'];
      $form_state['build_info']['files'][] = $menu_item['include_file'];
    }
    $form_state['input'] = unserialize($record->serialized);
    // Restore form arguments.
    if (!empty($record->args)) {
      $args = unserialize($record->args);
      $form_state['build_info']['args'] = $args;
    }
    // Disable the "this form has already been submitted" nonsense by making
    // Drupal think the form is being rebuilt as part of a multi-step form.
    $form_state['rebuild'] = TRUE;
    // Stop recording of form error messages
    $form_state['triggering_element']['#limit_validation_errors'] = array();
    // When restoring we will need to know the form token so that the user can
    // be validated.
    $form = drupal_build_form($form_id, $form_state);
    // Because the form will by default submit back to this URL, we need to
    // tell it to actually submit back to where it would have submitted to
    // originally.
    $form['#action'] = url($record->path);
    $form['autosave_form_path']['#value'] = $record->path;
    // We don't want to change the HTML ID of the form, because we're replacing
    // it in-place.  Drupal wants to give this a suffix for some reason.
    $form['#id'] = str_replace("_", "-", $form_id);
    $commands[] = ajax_command_replace('#' . $form['#id'], drupal_render($form));
    return array(
      '#type' => 'ajax',
      '#commands' => $commands,
    );
  }
}