You are here

function _node_revision_delete_do_delete in Node Revision Delete 7.2

Same name and namespace in other branches
  1. 7.3 node_revision_delete.helpers.inc \_node_revision_delete_do_delete()

Private function to perform revision deletion.

Parameters

int $nid: The node whoose oldest revisions will be deleted.

int $revisions_to_keep: Max amount of revisions to keep for this node.

int $max: Maximum amount of revisions to delete per run. Defaults to 50, may be increased or decreased for performance.

Return value

object stdClass with list containing an array of deleted revisions and pending containing a boolean where TRUE means that there are more revisions to delete for this node.

3 calls to _node_revision_delete_do_delete()
node_revision_delete_batch_process in ./node_revision_delete.batch.inc
Callback to delete revisions using Batch API.
node_revision_delete_cron in ./node_revision_delete.module
Implements hook_cron().
node_revision_delete_workbench_moderation_transition in ./node_revision_delete.module
Implements hook_workbench_moderation_transition().

File

./node_revision_delete.module, line 189
Node Revision Delete Module.

Code

function _node_revision_delete_do_delete($nid, $revisions_to_keep, $max = 50) {
  $node = new stdClass();
  $node->nid = $nid;
  $revisions = node_revision_list($node);

  // Keep recent revisions.
  $revisions = array_slice($revisions, $revisions_to_keep);

  // Reverse the list so we start deleting oldest revisions first.
  $revisions = array_reverse($revisions);

  // POPO to keep track of deleted revisions and whether there are more
  // to be deleted on a next run.
  $deleted_revisions = new stdClass();
  $deleted_revisions->count = 0;
  $deleted_revisions->pending = FALSE;
  foreach ($revisions as $revision) {
    $revision_id = $revision->vid;
    if (node_revision_delete($revision_id)) {
      $deleted_revisions->count++;

      // Stop deleting if we hit the limit per cron run.
      if ($deleted_revisions->count == $max) {
        $deleted_revisions->pending = TRUE;
        break;
      }
    }
  }
  return $deleted_revisions;
}