diff --git a/mod/dialogue/lang/en_utf8/dialogue.php b/mod/dialogue/lang/en_utf8/dialogue.php
index 392d71c..a10ab22 100644
--- a/mod/dialogue/lang/en_utf8/dialogue.php
+++ b/mod/dialogue/lang/en_utf8/dialogue.php
@@ -11,6 +11,8 @@ $string['close'] = 'Close';
 $string['closed'] = 'Closed';
 $string['closeddialogues'] = 'Closed Dialogues';
 $string['confirmclosure'] = '<p>You are about to close a dialogue with $a. Closed dialogues cannot be reopened. If you close this dialogue you can view it but not add to it, and you will have to start another dialogue to contnue &quot;talking&quot; this person.<br /><br />Are you sure you want to close this dialogue?';
+$string['configtrackreadentries'] = 'Set to \'yes\' if you want to track read/unread for each user.';
+$string['trackdialogue'] = 'Track unread entries';
 $string['deleteafter'] = 'Delete Closed Dialogues after (Days)';
 $string['dialogueclosed'] = 'Dialogue Closed';
 $string['dialogueintro'] = 'Dialogue Introduction';
@@ -87,6 +89,8 @@ $string['currentattachment'] = 'Current attachment: ';
 $string['deleteattachment'] = 'Delete attachment';
 $string['updated'] = '(Updated on, $a)';
 $string['unread'] = 'Unread entries';
+$string['unreadnumber'] = '$a unread entries';
+$string['unreadone'] = '1 unread entry';
 $string['posts'] = 'posts';
 $string['noentry'] = 'No entries';
-?>
\ No newline at end of file
+?>
diff --git a/mod/dialogue/lib.php b/mod/dialogue/lib.php
index b44ec5f..94dd7c8 100755
--- a/mod/dialogue/lib.php
+++ b/mod/dialogue/lib.php
@@ -2,7 +2,6 @@
 
 $DIALOGUE_DAYS = array (0 => 0, 7 => 7, 14 => 14, 30 => 30, 150 => 150, 365 => 365 );
 
-
 // STANDARD MODULE FUNCTIONS /////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////////////
@@ -639,4 +638,35 @@ function dialogue_count_unread_entries($dialogueid, $userid, $cm) {
     return(count_records_sql($sql));
 }
 
+/**
+ * Determine if a user can track dialogue entries. Checks the site dialogue
+ * activity setting and the user's personal preference for trackForums
+ * which is a similar requirement/preference so we treat them as equals.
+ * This is closely modelled on similar function from course/lib.php
+ *
+ * @param mixed $userid The user object to check for (optional).
+ * @return boolean
+ */
+function dialogue_can_track_dialogue($user=false) {
+    global $USER, $CFG;
+
+    // return unless enabled at site level
+    if (empty($CFG->dialogue_trackreadentries)) {
+        return false;
+    }
+
+    // default to logged if no user passed as param
+    if ($user === false) {
+        $user = $USER;
+    }
+
+    // dont allow guests to track
+    if (isguestuser($user) or empty($user->id)) {
+        return false;
+    }
+
+    // finally if user has trackForums set then allow tracking
+    return true && !empty($user->trackforums);
+}
+
 ?>
diff --git a/mod/dialogue/settings.php b/mod/dialogue/settings.php
new file mode 100755
index 0000000..13172db
--- /dev/null
+++ b/mod/dialogue/settings.php
@@ -0,0 +1,9 @@
+<?php  //$Id$
+
+require_once($CFG->dirroot.'/mod/dialogue/lib.php');
+
+// whether to provide unread post count
+$settings->add(new admin_setting_configcheckbox('dialogue_trackreadentries', get_string('trackdialogue', 'dialogue'),
+                   get_string('configtrackreadentries', 'dialogue'), 1));
+
+?>
