You are here

function revision_deletion_list_form in Revision Deletion 6

Same name and namespace in other branches
  1. 5 revision_deletion.module \revision_deletion_list_form()

Form to list all revisions of a node.

1 string reference to 'revision_deletion_list_form'
revision_deletion_list in ./revision_deletion.module
List all revisions of a node so they can be deleted manually.

File

./revision_deletion.module, line 270
Node Revision Deletion, written by Greg Holsclaw

Code

function revision_deletion_list_form($form_state, $node) {
  drupal_add_css(drupal_get_path('module', 'revision_deletion') . '/revision_deletion.css');
  if ($diff = module_exists('diff')) {
    module_load_include('inc', 'diff', 'diff.pages');
    $form = drupal_retrieve_form('diff_node_revisions', $form_state, $node);
    $form['show_diff'] = $form['submit'];
    $form['show_diff']['#submit'] = array(
      'diff_node_revisions_submit',
    );
    $form['show_diff']['#validate'] = array(
      'diff_node_revisions_validate',
    );
    unset($form['info'], $form['operations'], $form['submit']);
  }
  else {
    $form = array();
  }
  $limit = variable_get('revision_delete_list_limit', 25);
  $show_conditional = variable_get('revision_delete_list_show_conditional', 1);
  $keep_original = variable_get('revision_delete_list_keep_original', 0);
  $keep_date_last = variable_get('revision_delete_list_keep_date_last', 0);
  $keep_current = variable_get('revision_delete_list_keep_current', 1209600);
  $limit = variable_get('revision_delete_limit', 20);
  $destination = drupal_get_destination();
  $now = isset($_SERVER['REQUEST_TIME']) ? $_SERVER['REQUEST_TIME'] : time();
  $nid = $node->nid;
  $title = $node->title;
  drupal_set_title(t('Revisions for "@title"', array(
    '@title' => $title,
  )));
  $accounts = array();
  $form['header'] = array(
    '#type' => 'value',
    '#value' => array(
      t('Delete'),
      t('Revision ID'),
      t('User'),
      t('Date/Time'),
      t('Operations'),
    ),
  );
  if ($diff) {
    $form['header']['#value'][] = 'show diff button';
  }
  if ($show_conditional) {
    $form['header']['#value'][] = t('Notes');
  }
  $form['nid'] = array(
    '#type' => 'value',
    '#value' => $nid,
  );
  $keeper = FALSE;
  $revisions = revision_deletion_get_list($node->nid);
  foreach ($revisions as $rev) {
    $vid = $rev->vid;
    $ops = array();
    if (!isset($accounts[$rev->uid])) {
      $acct = user_load(array(
        'uid' => $rev->uid,
      ));
      $accounts[$rev->uid] = theme('username', $acct);
    }
    $form['select'][$vid] = array(
      '#type' => 'checkbox',
      '#disabled' => $vid == $rev->current,
      '#default_value' => $rev->select,
      '#return_value' => array(
        'action' => 'delete',
        'vid' => $vid,
        'nid' => $rev->nid,
        'title' => $rev->title,
        'type' => $rev->type,
      ),
    );
    $form['class'][$vid] = array(
      '#value' => $rev->class,
    );
    $form['vid'][$vid] = array(
      '#value' => l($vid, 'node/' . $nid . '/revisions/' . $vid . '/view'),
    );
    $form['user'][$vid] = array(
      '#value' => $accounts[$rev->uid],
    );
    $form['timestamp'][$vid] = array(
      '#value' => format_date($rev->timestamp, 'small'),
    );
    $form['log'][$vid] = array(
      '#value' => filter_xss($rev->log),
    );
    if ($vid != $rev->current) {
      $ops[] = l(t('revert'), "node/{$nid}/revisions/{$vid}/revert", array(
        'query' => $destination,
      ));
      $ops[] = l(t('delete'), "node/{$nid}/revisions/{$vid}/delete", array(
        'query' => $destination,
      ));
    }
    $form['operations'][$vid] = array(
      '#value' => implode(' | ', $ops),
    );
    $form['msg'][$vid] = array(
      '#value' => $rev->msgs,
    );
  }
  $form['no_confirm'] = array(
    '#value' => '<p>' . t('Note that there is no confirmation for this action.') . '</p>',
  );
  $form['pager'] = array(
    '#value' => theme('pager', array(), $limit),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Delete selected'),
  );
  return $form;
}