diff --git a/include/class.thread.php b/include/class.thread.php
index 29e1b1d574c44e79bc8c1045b3fbf021fc58f3c4..a1a79e3916ccdea3a16c51adc9ed4b1afdd92a77 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -215,6 +215,19 @@ class Thread {
                 && $thread->getId()
                 )?$thread:null;
     }
+
+    function getVar($name) {
+        switch ($name) {
+        case 'original':
+            return Message::firstByTicketId($this->ticket->getId())
+                ->getBody();
+            break;
+        case 'last_message':
+        case 'lastmessage':
+            return $this->ticket->getLastMessage()->getBody();
+            break;
+        }
+    }
 }
 
 
@@ -806,10 +819,18 @@ class Message extends ThreadEntry {
     }
 
     function lastByTicketId($ticketId) {
+        return self::byTicketId($ticketId);
+    }
+
+    function firstByTicketId($ticketId) {
+        return self::byTicketId($ticketId, false);
+    }
+
+    function byTicketId($ticketId, $last=true) {
 
         $sql=' SELECT thread.id FROM '.TICKET_THREAD_TABLE.' thread '
             .' WHERE thread_type=\'M\' AND thread.ticket_id = '.db_input($ticketId)
-            .' ORDER BY thread.id DESC LIMIT 1';
+            .sprintf(' ORDER BY thread.id %s LIMIT 1', $last ? 'DESC' : 'ASC');
 
         if (($res = db_query($sql)) && ($id = db_result($res)))
             return Message::lookup($id);