You are here

function autosave_update_7000 in Autosave 7.2

New column in {autosaved_forms} : args

File

./autosave.install, line 78
Install, update and uninstall functions for the autosave module.

Code

function autosave_update_7000() {
  $spec = array(
    'type' => 'text',
    'size' => 'big',
  );
  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();
    }
  }
}