Binary files revision_moderation_old/.DS_Store and revision_moderation/.DS_Store differ
diff -urpP revision_moderation_old/revision_moderation.module revision_moderation/revision_moderation.module
--- revision_moderation_old/revision_moderation.module	2009-12-17 01:18:07.000000000 -0500
+++ revision_moderation/revision_moderation.module	2009-12-20 16:13:00.000000000 -0500
@@ -415,3 +415,11 @@ function revision_moderation_publish_con
   watchdog('content', '@type: published %title revision %revision', array('@type' => t($type), '%title' => $title, '%revision' => $vid), WATCHDOG_NOTICE, l(t('view'), "node/$nid/revisions/$vid/view"));
   $form_state['redirect'] = 'node/'. $nid;
 }
+
+function revision_moderation_views_api() {
+  return array(
+    'api' => 2,
+    'path' => drupal_get_path('module', revision_moderation) .'/views',
+  );
+}
+
diff -urpP revision_moderation_old/views/revision_moderation.views.inc revision_moderation/views/revision_moderation.views.inc
--- revision_moderation_old/views/revision_moderation.views.inc	1969-12-31 19:00:00.000000000 -0500
+++ revision_moderation/views/revision_moderation.views.inc	2009-12-20 21:48:01.000000000 -0500
@@ -0,0 +1,70 @@
+<?php
+// $Id:
+
+/**
+ * Implementation of hook_views_data()
+ */
+function revision_moderation_views_data() {
+  
+  $data = array();
+  
+  
+  // Basic table information.
+
+  // Define the base group of this table. Fields that don't
+  // have a group defined will go into this field by default.
+  $data['revision_moderation']['table']['group']  = t('Revision moderation');
+  
+  // For other base tables, explain how we join
+  $data['revision_moderation']['table']['join'] = array(
+    // Directly links to node table.
+    'node' => array(
+      'left_table' => 'node', // Because this is a direct link it could be left out.
+      'left_field' => 'nid',
+      'field' => 'nid',
+      'table' => 'node_revisions',
+     ),
+  );
+
+  // ----------------------------------------------------------------
+  // Fields
+  
+ $data['revision_moderation']['state'] = array(
+		'title' => t('Revision state'),
+    'help' => t('Display the state of the revision.'),
+     // Information for displaying a title as a field
+    'real field' => 'vid',
+    'field' => array(
+		  'field' => 'vid', //The real field name
+      'handler' => 'views_handler_field_revision_moderation_state',
+			'click sortable' => TRUE,
+     ),
+		'filter' => array(
+      'handler' => 'views_handler_filter_revision_moderation_state',
+      'allow empty' => 'true',
+    ),
+		'sort' => array(
+      'handler' => 'views_handler_sort',
+     ),
+  );	
+
+  return $data;
+}
+
+function revision_moderation_views_handlers() {
+  return array(
+  'info' => array(
+    'path' => drupal_get_path('module', 'revision_moderation') .'/views',
+    ),
+  'handlers' => array(
+    'views_handler_field_revision_moderation_state' => array(
+      'parent' => 'views_handler_field',
+     ),
+    'views_handler_filter_revision_moderation_state' => array(
+     'parent' => 'views_handler_filter_in_operator',
+     ),
+    ),
+  );
+}
+
+?>
\ No newline at end of file
diff -urpP revision_moderation_old/views/views_handler_field_revision_moderation_state.inc revision_moderation/views/views_handler_field_revision_moderation_state.inc
--- revision_moderation_old/views/views_handler_field_revision_moderation_state.inc	1969-12-31 19:00:00.000000000 -0500
+++ revision_moderation/views/views_handler_field_revision_moderation_state.inc	2009-12-20 16:13:00.000000000 -0500
@@ -0,0 +1,32 @@
+<?php
+// $Id:
+
+/**
+ * 
+ */
+class views_handler_field_revision_moderation_state extends views_handler_field {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['node_vid'] = array('table' => 'node', 'field' => 'vid');
+    $this->additional_fields['vid'] = 'vid';
+  }
+
+  function render($values) {
+
+		$output = '';
+		switch (TRUE) {
+		  case ($values->{$this->aliases['vid']} == $values->{$this->aliases['node_vid']}):
+		    $output = t('current');
+		    break;
+		  case ($values->{$this->aliases['vid']} > $values->{$this->aliases['node_vid']}):
+		    $output = t('under moderation');
+		    break;
+		  case ($values->{$this->aliases['vid']} < $values->{$this->aliases['node_vid']}):
+		    $output = t('old');
+		    break;    
+		}  
+		
+		return $output;
+
+  }
+}
diff -urpP revision_moderation_old/views/views_handler_filter_revision_moderation_state.inc revision_moderation/views/views_handler_filter_revision_moderation_state.inc
--- revision_moderation_old/views/views_handler_filter_revision_moderation_state.inc	1969-12-31 19:00:00.000000000 -0500
+++ revision_moderation/views/views_handler_filter_revision_moderation_state.inc	2009-12-21 00:34:30.000000000 -0500
@@ -0,0 +1,131 @@
+<?php
+// $Id:
+
+/**
+ * @defgroup views_filter_handlers Views' filter handlers
+ * 
+ * Handlers to tell Views how to filter queries.
+ *
+ */
+
+/**
+ * Base class for filters.
+ */
+class views_handler_filter_revision_moderation_state extends views_handler_filter_in_operator {
+  //var $value_form_type = 'radios';	
+	
+  function get_value_options() {
+    
+      $options = array('Current Revision','Pending Revision','Old Revision');  	
+      $this->value_title = t('Revision state');
+      $this->value_options = $options;
+      
+  }
+  
+ /**
+   * Overriding operators to remove is/is not empty
+   */
+  function operators() {
+    $operators = array(
+      'in' => array(
+        'title' => t('Is one of'),
+        'short' => t('in'),
+        'short_single' => t('='),
+        'method' => 'op_simple',
+        'values' => 1,
+      ),
+      'not in' => array(
+        'title' => t('Is not one of'),
+        'short' => t('not in'),
+        'short_single' => t('<>'),
+        'method' => 'op_simple',
+        'values' => 1,
+      ),
+    );
+
+    return $operators;
+  }
+
+  
+  function query() {
+  	
+  	$values = array();
+  	
+  	//need to do this because exposed filters have different 
+  	//numeric keys
+  	foreach($this->value as $key => $value) {
+  	  if(is_numeric($value))
+  	 {
+  	 	if($value == 0) {
+  	 		$values[$value] = -1;
+  	 	}
+  	 	else {	
+  	     $values[$value] = $value;
+  	 	} 
+  	  }  
+  	}	
+    
+    //Assign operator based on combination of boxes ticked
+  	if ($values[0] == -1 ) {
+  	  if ($this->operator == 'in') {
+  	    $operator = '=';
+  	  }
+  	  else {
+  	    $operator = '!=';
+  	  }
+  	} 
+  	if ($values[1] == 1 ) {
+  	  if ($this->operator == 'in') {
+  	    $operator = '>';
+  	  }
+  	  else {
+  	    $operator = '<=';
+  	  }
+  	}  
+  	if ($values[2] == 2 ) {
+  	  if ($this->operator == 'in') {
+  	    $operator = '<';
+  	  }
+  	  else {
+  	    $operator = '>=';
+  	  }
+  	}  
+  	if ($values[0] == -1 && $values[1] == 1) {
+  	  if ($this->operator == 'in') {
+  	    $operator = '>=';
+  	  }
+  	  else {
+  	   	$operator = '<';
+  	  }
+  	} 
+  	if ($values[1] == 1 && $values[2] == 2) {
+  	  if ($this->operator == 'in') {
+  	    $operator = '!=';
+  	   }
+  	   else {
+  	     $operator = '=';
+  	   }
+  	}  
+  	if ($values[0] == -1 && $values[2] == 2 ) {
+  	   if ($this->operator == 'in') {
+  	      $operator = '<=';
+  	   }
+  	   else {
+  	      $operator = '>';
+  	   }
+  	}	  		
+   		
+  	//Add WHERE statement to the query to filter out node revisions.
+    $table = $this->ensure_my_table();      
+    $this->query->add_where($this->options['group'], "$table.vid ". $operator ." node.vid");
+   
+  } 
+  
+}		
+	
+	
+
+
+/**
+ * @}
+ */
