You are here

function bat_type_revisioning_rules_action_publish_latest in Booking and Availability Management Tools for Drupal 7

Action: publish most recent pending revision.

File

modules/bat_unit/bat_unit.rules.inc, line 140

Code

function bat_type_revisioning_rules_action_publish_latest($type) {

  // Get the latest pending revision.
  $pending_revisions = bat_type_get_pending_revisions($type->type_id);
  $latest_pending = array_shift($pending_revisions);
  if ($latest_pending) {
    $type_revision = bat_type_load_revision($latest_pending->revision_id);
    bat_type_revisioning_event('pre publish', $type_revision);
    $type_revision->default_revision = TRUE;
    $type_revision
      ->save();
    bat_type_revisioning_event('post publish', $type_revision);
    return TRUE;
  }

  // If there is no pending revision, take the current revision, provided it is
  // NOT published.
  if (!$type->status) {
    if (!isset($type->is_current)) {
      $type->current_revision_id = bat_type_get_current_type_revision_id($type->type_id);
      $type->is_current = revisioning_revision_is_current($type);
    }
    if ($type->is_current) {
      bat_type_revisioning_event('pre publish', $type_revision);
      $type_revision->default_revision = TRUE;
      $type_revision
        ->save();
      bat_type_revisioning_event('post publish', $type_revision);
      return TRUE;
    }
  }
  return FALSE;
}