--- views_service.module.orig	2008-08-28 01:43:19.000000000 -0700
+++ views_service.module	2008-09-01 21:49:21.000000000 -0700
@@ -19,6 +19,33 @@ function views_service_help($path, $arg)
  */
 function views_service_service() {
   return array(
+    // views.getActualView
+    array(
+      '#method'   => 'views.getActualView',
+      '#callback' => 'views_service_get_actualview',
+      '#args'     => array(
+        array(
+          '#name'         => 'view_name',
+          '#type'         => 'string',
+          '#description'  => t('View name.')
+        ),
+        array(
+          '#name'         => 'display_id',
+          '#type'         => 'string',
+          '#optional'     => TRUE,
+          '#description'  => t('View Display ID.')
+        ),
+        array(
+          '#name'         => 'args',
+          '#type'         => 'array',
+          '#optional'     => TRUE,
+          '#description'  => t('An array of arguments to pass to the view.'))),
+      '#return' => 'array',
+      '#help'   =>
+        t('Retrieves a view defined in views.module. This is different from ' .
+        'views.getView in that it returns the actual fields from the view ' .
+        'instead of a simple node.')
+    ),
     // views.getView
     array(
       '#method'   => 'views.getView',
@@ -79,6 +106,58 @@ function views_service_service() {
 }
 
 /**
+ * Get an actual view from the database.
+ *
+ * @author Brendon Crawford
+ * @param view_name Str
+ * @param display_id Str
+ * @param args Array
+ * @return Array
+ *
+ */
+function views_service_get_actualview(
+    $view_name, $display_id=null, $args=array()) {
+  if ($display_id === null || trim($display_id) === '') {
+    $display_id = 'default';
+  }
+  $view = views_get_view($view_name);
+  if (is_null($view)) {
+    return services_error('View does not exist.');
+  }
+  // Check access
+  if (!views_access($view)) {
+    return services_error('You do not have access to this view.');
+  }
+  $view->set_arguments($args);
+  $view->execute();
+  foreach ($view->result as $view_node) {
+    $real_node = node_load(array('nid' => $view_node->nid));
+    $new_node = new stdClass;
+    //We need more taxonomy data than what is provided through the view object
+    //If any taxonomy fields are returned, we will add some more data
+    if (property_exists($view_node, 'term_data_vid') ||
+        property_exists($view_node, 'term_data_tid') ||
+        property_exists($view_node, 'node_vid') ||
+        property_exists($view_node, 'term_data_name')) {
+      $new_node->taxonomy = array();
+      foreach ($real_node->taxonomy as $term_key => $term_val) {
+        $new_node->taxonomy[] = (object) array(
+          'tid' => $term_val->tid,
+          'vid' => $term_val->vid,
+          'name' => $term_val->name
+        );
+      }
+    }
+    $view_fields = $view->display[$display_id]->handler->handlers['field'];
+    foreach ($view_fields as $f_key => $f_val) {
+      $new_node->{$f_key} = $f_val->render($view_node);
+    }
+    $nodes[] = $new_node;
+  }
+  return $nodes;
+}
+
+/**
  * Get a view from the database.
  */
 function views_service_get_view($view_name, $fields = array(), $args = array()) { 
