summaryrefslogtreecommitdiff
path: root/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc')
-rw-r--r--sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc61
1 files changed, 61 insertions, 0 deletions
diff --git a/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc b/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
new file mode 100644
index 000000000..d821f32c3
--- /dev/null
+++ b/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_comment_user_uid.
+ */
+
+/**
+ * Argument handler to accept a user id to check for nodes that
+ * user posted or commented on.
+ *
+ * @ingroup views_argument_handlers
+ */
+class views_handler_argument_comment_user_uid extends views_handler_argument {
+ function title() {
+ if (!$this->argument) {
+ $title = variable_get('anonymous', t('Anonymous'));
+ }
+ else {
+ $title = db_query('SELECT u.name FROM {users} u WHERE u.uid = :uid', array(':uid' => $this->argument))->fetchField();
+ }
+ if (empty($title)) {
+ return t('No user');
+ }
+
+ return check_plain($title);
+ }
+
+ function default_actions($which = NULL) {
+ // Disallow summary views on this argument.
+ if (!$which) {
+ $actions = parent::default_actions();
+ unset($actions['summary asc']);
+ unset($actions['summary desc']);
+ return $actions;
+ }
+
+ if ($which != 'summary asc' && $which != 'summary desc') {
+ return parent::default_actions($which);
+ }
+ }
+
+ function query($group_by = FALSE) {
+ $this->ensure_my_table();
+
+ $subselect = db_select('comment', 'c');
+ $subselect->addField('c', 'cid');
+ $subselect->condition('c.uid', $this->argument);
+ $subselect->where("c.nid = $this->table_alias.nid");
+
+ $condition = db_or()
+ ->condition("$this->table_alias.uid", $this->argument, '=')
+ ->exists($subselect);
+
+ $this->query->add_where(0, $condition);
+ }
+
+ function get_sort_name() {
+ return t('Numerical', array(), array('context' => 'Sort order'));
+ }
+}