diff -u b/autosave.install b/autosave.install --- b/autosave.install +++ b/autosave.install @@ -88,2 +88,32 @@ db_add_field( 'autosaved_forms', 'args', $spec); + + // Fill in the args field of already saved forms. + $result = db_select('autosaved_forms', 'af') + ->fields('af', array('path', 'uid', 'form_id')) + ->execute() + ->fetchAll(); + + foreach ($result as $form) { + $path_parts = explode('/', $form->path); + unset($node); + if (strpos($form->path, 'node/add/') === 0) { + $node = new stdClass(); + $node->type = $path_parts[2]; + node_object_prepare($node); + $node->uid = $form->uid; + $author = user_load($form->uid); + $node->name = $author->name; + } + elseif (($path_parts[0] == 'node') && ($path_parts[2] == 'edit')) { + $node = node_load($path_parts[1]); + } + if (isset($node)) { + db_update('autosaved_forms') + ->condition('form_id', $form->form_id) + ->condition('uid', $form->uid) + ->condition('path', $form->path) + ->fields(array('args' => array(serialize($node)))) + ->execute(); + } + } }