Index: modules/node/views_handler_field_node_revision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/modules/node/Attic/views_handler_field_node_revision.inc,v
retrieving revision 1.1.4.2
diff -u -p -r1.1.4.2 views_handler_field_node_revision.inc
--- modules/node/views_handler_field_node_revision.inc	8 Mar 2010 20:02:42 -0000	1.1.4.2
+++ modules/node/views_handler_field_node_revision.inc	22 Dec 2010 06:29:15 -0000
@@ -16,9 +16,11 @@ class views_handler_field_node_revision 
       }
     }
   }
+
   function option_definition() {
     $options = parent::option_definition();
     $options['link_to_node_revision'] = array('default' => FALSE);
+    $options['link_to_node_revision_replace'] = array('default' => FALSE);
     return $options;
   }
 
@@ -33,6 +35,16 @@ class views_handler_field_node_revision 
       '#type' => 'checkbox',
       '#default_value' => !empty($this->options['link_to_node_revision']),
     );
+    $form['link_to_node_revision_replace'] = array(
+      '#title' => t('Replace revision link with link to node if user has no access to view revision'),
+      '#description' => t('If you keep this checkbox unchecked and user has no access to revision link will not be shown.'),
+      '#type' => 'checkbox',
+      '#default_value' => !empty($this->options['link_to_node_revision_replace']),
+      '#process' => array('views_process_dependency'),
+      '#dependency' => array(
+        'edit-options-link-to-node-revision' => array(1),
+      ),
+    );
   }
 
   /**
@@ -43,7 +55,21 @@ class views_handler_field_node_revision 
   function render_link($data, $values) {
     if (!empty($this->options['link_to_node_revision']) && $data !== NULL && $data !== '') {
       $this->options['alter']['make_link'] = TRUE;
-      $this->options['alter']['path'] = "node/" . $values->{$this->aliases['nid']} . '/revisions/' . $values->{$this->aliases['vid']} .'/view';
+      $this->options['alter']['path'] = "node/" . $values->{$this->aliases['nid']} . '/revisions/' . $values->{$this->aliases['vid']} . '/view';
+
+      // Check whether user has access to this revision.
+      $node_access = new StdClass();
+      $node_access->nid = $values->{$this->aliases['nid']};
+      $node_access->vid = $values->{$this->aliases['vid']};
+
+      if (!_node_revision_access($node_access, 'view')) {
+        if (!empty($this->options['link_to_node_revision_replace'])) {
+          $this->options['alter']['path'] = "node/" . $values->{$this->aliases['nid']};
+        }
+        else {
+          $this->options['alter']['make_link'] = FALSE;
+        }
+      }
       if (isset($this->aliases['language'])) {
         $languages = language_list();
         if (isset($languages[$values->{$this->aliases['language']}])) {
@@ -57,4 +83,3 @@ class views_handler_field_node_revision 
     return $data;
   }
 }
-
