_mediamosa_maintenance_view_revision

Versions
mediamosa-21
_mediamosa_maintenance_view_revision($nid, $vid)

Show details of a revision.

Parameters

$vid The revision number.

Code

sites/all/modules/mediamosa/maintenance/browse/mediamosa_maintenance_browse_revision.inc, line 143

<?php
function _mediamosa_maintenance_view_revision($nid, $vid) {
  // If we are set as Home page, the breadcrumb isnt set, lets do it here.
  $breadcrumb = array();
  $breadcrumb[] = l(t('Home'), NULL);
  $breadcrumb[] = l(t('Administer'), 'admin');
  $breadcrumb[] = l(t('MediaMosa'), 'admin/mediamosa');
  $breadcrumb[] = l(t('Browse'), 'admin/mediamosa/browse');
  $breadcrumb[] = l(t('Revision'), 'admin/mediamosa/browse/revision');
  drupal_set_breadcrumb($breadcrumb);

  $node_current = node_load($nid);
  $node_revision = node_load($nid, $vid);

  // Get all vids from this node so we can figure out the previous node revision.
  $nids = db_select('node_revision', 'nr')
    ->fields('nr', array('vid'))
    ->condition('nid', $nid)
    ->orderBy('vid', 'ASC')
    ->execute()
    ->fetchCol();

  $key = array_search($vid, $nids);
  $node_previous_revision = array();
  if (isset($nids[$key - 1])) {
    $node_previous_revision = node_load($nid, $nids[$key - 1]);
  }

  // Get the fields we want to show.
  $fields_to_show = mediamosa_node::get_fields($node_current);
  $fields_to_skip = array('created', 'changed', 'command', 'vid', 'nid', 'transcode_profile_id', 'version');

  $header = array(
    array('data' => t('Key')),
    array('data' => t('Value before change (Revision @vid)', array('@vid' => (isset($node_previous_revision->vid) ? $node_previous_revision->vid : 'none'))) ),
    array('data' => t('Value after change (Revision @vid)', array('@vid' => (isset($node_revision->vid) ? $node_revision->vid : 'none')))),
    array('data' => t('Current Value (Revision @vid)', array('@vid' => (isset($node_current->vid) ? $node_current->vid : 'none')))),
  );

  $rows = array();

  foreach ($fields_to_show as $field) {
    if (in_array($field, $fields_to_skip)) {
      continue;
    }

    // Show values in.
    if (is_array($node_current->{$field})) {
      $fields = $node_current->{$field};
      foreach ($fields as $field2 => $value) {
        $rows[] = _mediamosa_maintenance_revision_line(
          $field2,
          isset($node_previous_revision->{$field}[$field2]) ? $node_previous_revision->{$field}[$field2] : '',
          isset($node_revision->{$field}[$field2]) ? $node_revision->{$field}[$field2] : '',
          isset($node_current->{$field}[$field2]) ? $node_current->{$field}[$field2] : ''
        );
      }
    }
    else {
      $rows[] = _mediamosa_maintenance_revision_line(
        $field,
        isset($node_previous_revision->{$field}) ? $node_previous_revision->{$field} : '',
        isset($node_revision->{$field}) ? $node_revision->{$field} : '',
        isset($node_current->{$field}) ? $node_current->{$field} : ''
      );
    }
  }

  // Load the user.
  $user = user_load($node_revision->uid);

  // Build output.
  $output = theme('mediamosa_maintenance_browse_revision_info', array('node' => $node_revision, 'user' => $user));
  $output .= theme('table', array('header' => $header, 'rows' => $rows, 'empty' => t('Unable to find changes.')));
  $output .= theme('pager');

  return $output;
}
?>