From 4e7ccc02342d6aa1a3ebf635423d5c84d68bdbce Mon Sep 17 00:00:00 2001
From: Matthew Grasmick <madmatter23@gmail.com>
Date: Tue, 27 Mar 2012 14:44:23 -0400
Subject: [PATCH] adding support for views User: Uid contextual filter. See
 http://drupal.org/node/1504956

---
 realname.info                                |    1 +
 realname.views.inc                           |    7 ++++
 views_handler_argument_user_uid_realname.inc |   41 ++++++++++++++++++++++++++
 3 files changed, 49 insertions(+), 0 deletions(-)
 create mode 100644 views_handler_argument_user_uid_realname.inc

diff --git a/realname.info b/realname.info
index ae9a14d..0208ac6 100644
--- a/realname.info
+++ b/realname.info
@@ -8,4 +8,5 @@ files[] = realname.pages.inc
 files[] = realname.tokens.inc
 files[] = realname.test
 files[] = realname.install
+files[] = views_handler_argument_user_uid_realname.inc
 configure = admin/config/people/realname
diff --git a/realname.views.inc b/realname.views.inc
index 8dc2e95..7144981 100644
--- a/realname.views.inc
+++ b/realname.views.inc
@@ -39,3 +39,10 @@ function realname_views_data() {
 
   return $data;
 }
+
+/**
+ * Implements hook_views_data_alter().
+ */
+function realname_views_data_alter(&$data) {
+  $data['users']['uid']['argument']['handler'] = 'views_handler_argument_user_uid_realname';
+}
\ No newline at end of file
diff --git a/views_handler_argument_user_uid_realname.inc b/views_handler_argument_user_uid_realname.inc
new file mode 100644
index 0000000..6ddc13b
--- /dev/null
+++ b/views_handler_argument_user_uid_realname.inc
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Provide user uid argument handler.
+ */
+
+/**
+ * Argument handler to accept a user id.
+ *
+ * @ingroup views_argument_handlers
+ */
+class views_handler_argument_user_uid_realname extends views_handler_argument_user_uid {
+
+  /**
+   * Override the behavior of title(). Get the name of the user.
+   *
+   * @return array
+   *    A list of usernames.
+   */
+  function title_query() {
+    if (!$this->argument) {
+      return array(variable_get('anonymous', t('Anonymous')));
+    }
+
+    $titles = array();
+
+    $result = db_query("SELECT rn.realname FROM {realname} rn WHERE rn.uid IN (:uids)", array(':uids' => $this->value));
+    foreach ($result as $term) {
+      $titles[] = check_plain($term->realname);
+    }
+
+    // Fallback on default behavior is no realname is fouund.
+    if (!isset($titles)) {
+      parent::title_query();
+    }
+
+    return $titles;
+  }
+}
+
-- 
1.7.5.4

