summaryrefslogtreecommitdiff
path: root/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc')
-rw-r--r--sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc28
1 files changed, 28 insertions, 0 deletions
diff --git a/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc b/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
new file mode 100644
index 000000000..e513a93e8
--- /dev/null
+++ b/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_sort_comment_thread.
+ */
+
+/**
+ * Sort handler for ordering by thread.
+ *
+ * @ingroup views_sort_handlers
+ */
+class views_handler_sort_comment_thread extends views_handler_sort {
+ function query() {
+ $this->ensure_my_table();
+
+ //Read comment_render() in comment.module for an explanation of the
+ //thinking behind this sort.
+ if ($this->options['order'] == 'DESC') {
+ $this->query->add_orderby($this->table_alias, $this->real_field, $this->options['order']);
+ }
+ else {
+ $alias = $this->table_alias . '_' . $this->real_field . 'asc';
+ //@todo is this secure?
+ $this->query->add_orderby(NULL, "SUBSTRING({$this->table_alias}.{$this->real_field}, 1, (LENGTH({$this->table_alias}.{$this->real_field}) - 1))", $this->options['order'], $alias);
+ }
+ }
+}