message MDL-24771 a big commit that fixes a whole bunch of small issues with messaging
authorAndrew Davis <andrew@affinitysoftware.net>
Mon, 25 Oct 2010 09:29:34 +0000 (09:29 +0000)
committerAndrew Davis <andrew@affinitysoftware.net>
Mon, 25 Oct 2010 09:29:34 +0000 (09:29 +0000)
21 files changed:
admin/settings/subsystems.php
lang/en/admin.php
lang/en/message.php
lib/db/install.xml
lib/db/upgrade.php
lib/messagelib.php
lib/moodlelib.php
message/edit.php
message/index.php
message/lib.php
message/module.js
message/output/email/lang/en/message_email.php
message/output/email/message_output_email.php
message/output/popup/lang/en/message_popup.php
message/output/popup/message_output_popup.php
message/search.html
message/search_advanced.html
mod/forum/lang/en/forum.php
mod/forum/lib.php
theme/base/style/message.css
version.php

index 7998f47..2d89e97 100644 (file)
@@ -15,6 +15,8 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
 
     $optionalsubsystems->add(new admin_setting_configcheckbox('messaging', get_string('messaging', 'admin'), get_string('configmessaging','admin'), 1));
 
+    $optionalsubsystems->add(new admin_setting_configcheckbox('messaginghidereadnotifications', get_string('messaginghidereadnotifications', 'admin'), get_string('configmessaginghidereadnotifications','admin'), 0));
+
     $optionalsubsystems->add(new admin_setting_configcheckbox('enablestats', get_string('enablestats', 'admin'), get_string('configenablestats', 'admin'), 0));
 
     $optionalsubsystems->add(new admin_setting_configcheckbox('enablerssfeeds', get_string('enablerssfeeds', 'admin'), get_string('configenablerssfeeds', 'admin'), 0));
index 5d39eee..2a0c18d 100755 (executable)
@@ -258,6 +258,7 @@ $string['configmaxevents'] = 'Events to Lookahead';
 $string['configmemcachedhosts'] = 'For memcached. Comma-separated list of hosts that are running the memcached daemon. Use IP addresses to avoid DNS latency. memcached does not behave well if you add/remove hosts on a running setup.';
 $string['configmemcachedpconn'] = 'For memcached. Use persistent connections. Use carefully -- it can make Apache/PHP crash after a restart of the memcached daemon.';
 $string['configmessaging'] = 'Should the messaging system between site users be enabled?';
+$string['configmessaginghidereadnotifications'] = 'Hide read notifications of events like forum posts when viewing messaging history';
 $string['configminpassworddigits'] = 'Passwords must have at least these many digits.';
 $string['configminpasswordlength'] = 'Passwords must be at least these many characters long.';
 $string['configminpasswordlower'] = 'Passwords must have at least these many lower case letters.';
@@ -689,6 +690,7 @@ $string['mediapluginyoutube'] = 'Enable YouTube links filter';
 $string['memcachedhosts'] = 'memcached hosts';
 $string['memcachedpconn'] = 'memcached use persistent connections';
 $string['messaging'] = 'Enable messaging system';
+$string['messaginghidereadnotifications'] = 'Hide read notifications';
 $string['minpassworddigits'] = 'Digits';
 $string['minpasswordlength'] = 'Password length';
 $string['minpasswordlower'] = 'Lowercase letters';
index 1b49d4c..610eb8a 100644 (file)
@@ -36,7 +36,7 @@ $string['beepnewmessage'] = 'Beep on new message';
 $string['blockcontact'] = 'Block contact';
 $string['blockedmessages'] = '{$a} message(s) to/from blocked users';
 $string['blockedusers'] = 'Blocked users ({$a})';
-$string['blocknoncontacts'] = 'Block unknown users';
+$string['blocknoncontacts'] = 'Prevent non-contacts from messaging me';
 $string['cannotsavemessageprefs'] = 'Could not save user messaging preferences';
 $string['contactlistempty'] = 'Your contact list is empty';
 $string['contacts'] = 'Contacts';
@@ -56,12 +56,12 @@ $string['gotomessages'] = 'Go to messages';
 $string['includeblockedusers'] = 'Include blocked users';
 $string['incomingcontacts'] = 'Incoming contacts ({$a})';
 $string['keywords'] = 'Keywords';
-$string['keywordssearchresults'] = 'Search results: {$a} messages found';
-$string['keywordssearchresultstoomany'] = 'Search results: More than {$a} messages found. Refine your search.';
+$string['keywordssearchresults'] = 'Messages found: {$a}';
+$string['keywordssearchresultstoomany'] = 'More than {$a} messages found. Refine your search.';
 $string['loggedin'] = 'Online';
-$string['loggedindescription'] = 'When I\'m online';
+$string['loggedindescription'] = 'When I\'m logged in';
 $string['loggedoff'] = 'Not online';
-$string['loggedoffdescription'] = 'When I\'m not online';
+$string['loggedoffdescription'] = 'When I\'m offline';
 $string['managecontacts'] = 'Manage my contacts';
 $string['mostrecent'] = 'Recent messages';
 $string['mailsent'] = 'Your message was sent via email.';
@@ -108,9 +108,9 @@ $string['strftimedaydatetime'] = '%A, %d %B %Y, %I:%M %p';
 $string['timenosee'] = 'Minutes since I was last seen online';
 $string['timesent'] = 'Time Sent';
 $string['unblockcontact'] = 'Unblock contact';
-$string['unreadmessages'] = '{$a} unread messages';
-$string['unreadnewmessages'] = '{$a} new messages';
+$string['unreadmessages'] = 'unread messages ({$a})';
+$string['unreadnewmessages'] = 'new messages ({$a})';
 $string['unreadnewmessage'] = 'New message from {$a}';
 $string['userisblockingyou'] = 'This user has blocked you from sending messages to them';
 $string['userisblockingyounoncontact'] = 'This user is only accepting messages from people listed as contacts, and you are not currently on the list.';
-$string['userssearchresults'] = 'Search results: {$a} users found';
\ No newline at end of file
+$string['userssearchresults'] = 'Users found: {$a}';
index 148d95e..cec8c3a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="lib/db" VERSION="20101019" COMMENT="XMLDB file for core Moodle tables"
+<XMLDB PATH="lib/db" VERSION="20101020" COMMENT="XMLDB file for core Moodle tables"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../lib/xmldb/xmldb.xsd"
 >
         <FIELD NAME="fullmessageformat" TYPE="int" LENGTH="4" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" COMMENT="The format of the full message" PREVIOUS="fullmessage" NEXT="fullmessagehtml"/>
         <FIELD NAME="fullmessagehtml" TYPE="text" LENGTH="medium" NOTNULL="false" SEQUENCE="false" COMMENT="html format of message" PREVIOUS="fullmessageformat" NEXT="smallmessage"/>
         <FIELD NAME="smallmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" COMMENT="Smal version of message (eg sms)" PREVIOUS="fullmessagehtml" NEXT="timecreated"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="smallmessage"/>
+        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="smallmessage" NEXT="notification"/>
+        <FIELD NAME="notification" TYPE="int" LENGTH="1" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
         <FIELD NAME="fullmessagehtml" TYPE="text" LENGTH="medium" NOTNULL="false" SEQUENCE="false" COMMENT="html format of message" PREVIOUS="fullmessageformat" NEXT="smallmessage"/>
         <FIELD NAME="smallmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" COMMENT="Smal version of message (eg sms)" PREVIOUS="fullmessagehtml" NEXT="timecreated"/>
         <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="smallmessage" NEXT="timeread"/>
-        <FIELD NAME="timeread" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated"/>
+        <FIELD NAME="timeread" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated" NEXT="notification"/>
+        <FIELD NAME="notification" TYPE="int" LENGTH="1" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timeread"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
         <FIELD NAME="aggregatesubcats" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" COMMENT="ignore subcategories in aggregation" PREVIOUS="aggregateoutcomes" NEXT="timecreated"/>
         <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" PREVIOUS="aggregatesubcats" NEXT="timemodified"/>
         <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" PREVIOUS="timecreated" NEXT="hidden"/>
-        <FIELD NAME="hidden" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timemodified"/>
+        <FIELD NAME="hidden" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timemodified"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="courseid"/>
index 5a175e9..7454811 100644 (file)
@@ -5301,7 +5301,7 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
     //install.xml so there are 2.0 sites that are missing it.
     if ($oldversion < 2010101900) {
         $table = new xmldb_table('grade_categories');
-        $field = new xmldb_field('hidden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, 0);
+        $field = new xmldb_field('hidden', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, 0);
 
         if (!$dbman->field_exists($table, $field)) {
             $dbman->add_field($table, $field);
@@ -5317,6 +5317,23 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
         upgrade_main_savepoint(true, 2010102300);
     }
 
+    //MDL-24771
+    if ($oldversion < 2010102500) {
+        $field = new xmldb_field('notification', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, 0);
+
+        $table = new xmldb_table('message');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $table = new xmldb_table('message_read');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        upgrade_main_savepoint(true, 2010102500);
+    }
+
     return true;
 }
 
index 74ab223..6fdcc62 100644 (file)
@@ -77,73 +77,63 @@ function message_send($eventdata) {
     $savemessage->fullmessagehtml   = $eventdata->fullmessagehtml;
     $savemessage->smallmessage      = $eventdata->smallmessage;
 
-    if (!empty($eventdata->footer)) {
-        $savemessage->footer = $eventdata->footer;
+    if (!empty($eventdata->notification)) {
+        $savemessage->notification = $eventdata->notification;
     } else {
-        $savemessage->footer = null;
+        $savemessage->notification = 0;
     }
 
-    if (!empty($eventdata->footerhtml)) {
-        $savemessage->footerhtml = $eventdata->footerhtml;
-    } else {
-        $savemessage->footerhtml = null;
-    }
-    
     $savemessage->timecreated = time();
 
     // Find out what processors are defined currently
     // When a user doesn't have settings none gets return, if he doesn't want contact "" gets returned
     $preferencename = 'message_provider_'.$eventdata->component.'_'.$eventdata->name.'_'.$userstate;
-    $processor = get_user_preferences($preferencename, NULL, $eventdata->userto->id);
 
+    $processor = get_user_preferences($preferencename, null, $eventdata->userto->id);
     if ($processor == NULL) { //this user never had a preference, save default
         if (!message_set_default_message_preferences($eventdata->userto)) {
             print_error('cannotsavemessageprefs', 'message');
         }
-        if ($userstate == 'loggedin') {
-            $processor = 'popup';
-        }
-        if ($userstate == 'loggedoff') {
-            $processor = 'email';
-        }
+        $processor = get_user_preferences($preferencename, NULL, $eventdata->userto->id);
     }
 
-    if ($processor == "") {
-        //if the have deselected all processors just leave the message unread
+    if ($processor=='none' && $savemessage->notification) {
+        //if they have deselected all processors and its a notification mark it read. The user doesnt want to be bothered
+        $savemessage->timeread = $timeread;
+        $DB->insert_record('message_read', $savemessage);
     } else {                        // Process the message
         // Store unread message just in case we can not send it
         $savemessage->id = $DB->insert_record('message', $savemessage);
 
         // Try to deliver the message to each processor
-        $processorlist = explode(',', $processor);
-        foreach ($processorlist as $procname) {
-            $processorfile = $CFG->dirroot. '/message/output/'.$procname.'/message_output_'.$procname.'.php';
-
-            if (is_readable($processorfile)) {
-                include_once($processorfile);  // defines $module with version etc
-                $processclass = 'message_output_' . $procname;
-
-                if (class_exists($processclass)) {
-                    $pclass = new $processclass();
-
-                    if (!$pclass->send_message($savemessage)) {
-                        debugging('Error calling message processor '.$procname);
-                        return false;
+        if ($processor!='none') {
+            $processorlist = explode(',', $processor);
+            foreach ($processorlist as $procname) {
+                $processorfile = $CFG->dirroot. '/message/output/'.$procname.'/message_output_'.$procname.'.php';
+
+                if (is_readable($processorfile)) {
+                    include_once($processorfile);  // defines $module with version etc
+                    $processclass = 'message_output_' . $procname;
+
+                    if (class_exists($processclass)) {
+                        $pclass = new $processclass();
+
+                        if (!$pclass->send_message($savemessage)) {
+                            debugging('Error calling message processor '.$procname);
+                            return false;
+                        }
                     }
+                } else {
+                    debugging('Error calling message processor '.$procname);
+                    return false;
                 }
-            } else {
-                debugging('Error calling message processor '.$procname);
-                return false;
             }
-        }
-
-        //$messageid = $savemessage->id;
-        //unset($savemessage->id);
 
-        //if there is no more processors that want to process this we can move message to message_read
-        if ( $DB->count_records('message_working', array('unreadmessageid' => $savemessage->id)) == 0){
-            require_once($CFG->dirroot.'/message/lib.php');
-            message_mark_message_read($savemessage, time(), true);
+            //if there is no more processors that want to process this we can move message to message_read
+            if ( $DB->count_records('message_working', array('unreadmessageid' => $savemessage->id)) == 0){
+                require_once($CFG->dirroot.'/message/lib.php');
+                message_mark_message_read($savemessage, time(), true);
+            }
         }
     }
 
@@ -210,7 +200,7 @@ function message_get_my_providers() {
 
     $systemcontext = get_context_instance(CONTEXT_SYSTEM);
 
-    $providers = $DB->get_records('message_providers');
+    $providers = $DB->get_records('message_providers', null, 'name');
 
     // Remove all the providers we aren't allowed to see now
     foreach ($providers as $providerid => $provider) {
@@ -279,12 +269,17 @@ function message_uninstall($component) {
 function message_set_default_message_preferences($user) {
     global $DB;
 
+    $onlineprocessor = 'email';
+    //look for the pre-2.0 preference if it exists
+    $oldpreference = get_user_preferences('message_showmessagewindow', 0, $user->id);
+    if (!empty($oldpreference)) {
+        $onlineprocessor = 'popup';
+    }
+
     $providers = $DB->get_records('message_providers');
     $preferences = array();
     foreach ($providers as $providerid => $provider) {
-        //use both email and popup when online
-        $preferences['message_provider_'.$provider->component.'_'.$provider->name.'_loggedin'] = 'email,popup';
-        //just email when offline
+        $preferences['message_provider_'.$provider->component.'_'.$provider->name.'_loggedin'] = $onlineprocessor;
         $preferences['message_provider_'.$provider->component.'_'.$provider->name.'_loggedoff'] = 'email';
     }
     return set_user_preferences($preferences, $user->id);
index 3c8c31d..84d1cb8 100644 (file)
@@ -9072,7 +9072,7 @@ function message_popup_window() {
 
     $message_users = null;
 
-    $messagesql = "SELECT m.id, m.smallmessage, u.firstname, u.lastname FROM {message} m
+    $messagesql = "SELECT m.id, m.smallmessage, m.notification, u.firstname, u.lastname FROM {message} m
 JOIN {message_working} mw ON m.id=mw.unreadmessageid
 JOIN {message_processors} p ON mw.processorid=p.id
 JOIN {user} u ON m.useridfrom=u.id
@@ -9097,7 +9097,9 @@ WHERE m.useridto = :userid AND p.name='popup'";
             $strmessages = get_string('unreadnewmessages', 'message', count($message_users));
         } else {
             $message_users = reset($message_users);
+            if (!$message_users->notification) {
             $strmessages = get_string('unreadnewmessage', 'message', fullname($message_users) );
+            }
 
             if (!empty($message_users->smallmessage)) {
                 //display the first 200 chars of the message in the popup
index 5e39c5b..e6f2023 100644 (file)
@@ -97,8 +97,9 @@ if (($form = data_submitted()) && confirm_sesskey()) {
 
 /// Set all the preferences for all the message providers
     $providers = message_get_my_providers();
+    $possiblestates = array('loggedin', 'loggedoff');
     foreach ( $providers as $providerid => $provider){
-        foreach (array('loggedin', 'loggedoff') as $state){
+        foreach ($possiblestates as $state){
             $linepref = '';
             $componentproviderstate = $provider->component.'_'.$provider->name.'_'.$state;
             if (array_key_exists($componentproviderstate, $form)) {
@@ -113,6 +114,14 @@ if (($form = data_submitted()) && confirm_sesskey()) {
             $preferences['message_provider_'.$provider->component.'_'.$provider->name.'_'.$state] = $linepref;
         }
     }
+    foreach ( $providers as $providerid => $provider){
+        foreach ($possiblestates as $state){
+            $preferencekey = 'message_provider_'.$provider->component.'_'.$provider->name.'_'.$state;
+            if (empty($preferences[$preferencekey])) {
+                $preferences[$preferencekey] = 'none';
+            }
+        }
+    }
 
 /// Set all the processor options as well
     $processors = $DB->get_records('message_processors');
@@ -194,7 +203,7 @@ echo '<form class="mform" method="post" action="'.$CFG->wwwroot.'/message/edit.p
 echo '<fieldset id="providers" class="clearfix">';
 echo '<legend class="ftoggler">'.get_string('providers_config', 'message').'</legend>';
 $providers = message_get_my_providers();
-$processors = $DB->get_records('message_processors');
+$processors = $DB->get_records('message_processors', null, 'name DESC');
 $number_procs = count($processors);
 echo '<table cellpadding="2"><tr><td>&nbsp;</td>'."\n";
 foreach ( $processors as $processorid => $processor){
@@ -228,6 +237,7 @@ echo '</fieldset>';
 /// Show all the message processors
 $processors = $DB->get_records('message_processors');
 
+$processorconfigform = null;
 foreach ($processors as $processorid => $processor) {
     $processorfile = $CFG->dirroot. '/message/output/'.$processor->name.'/message_output_'.$processor->name.'.php';
     if (is_readable($processorfile)) {
@@ -236,19 +246,30 @@ foreach ($processors as $processorid => $processor) {
 
         if (class_exists($processclass)) {
             $pclass = new $processclass();
+            $processorconfigform = $pclass->config_form($preferences);
+
+            if (!empty($processorconfigform)) {
             echo '<fieldset id="messageprocessor_'.$processor->name.'" class="clearfix">';
             echo '<legend class="ftoggler">'.get_string('pluginname', 'message_'.$processor->name).'</legend>';
 
-            echo $pclass->config_form($preferences);
+            echo $processorconfigform;
 
             echo '</fieldset>';
-
+            }
         } else{
             print_error('errorcallingprocessor', 'message');
         }
     }
 }
 
+echo '<fieldset id="messageprocessor_general" class="clearfix">';
+echo '<legend class="ftoggler">'.get_string('generalsettings','admin').'</legend>';
+    echo '<table>'.
+    '<tr><td align="right">'.get_string('blocknoncontacts', 'message').':</td><td><input type="checkbox" name="blocknoncontacts" '.($preferences->blocknoncontacts==1?" checked=\"checked\"":"").' /></td></tr>'.
+    //'<tr><td align="right">'.get_string('beepnewmessage', 'message').':</td><td><input type="checkbox" name="beepnewmessage" '.($preferences->beepnewmessage==1?" checked=\"checked\"":"").' /></td></tr>'.
+    '</table>';
+echo '</fieldset>';
+
 echo '<div><input type="hidden" name="sesskey" value="'.sesskey().'" /></div>';
 echo '<div style="text-align:center"><input name="submit" value="'. get_string('updatemyprofile') .'" type="submit" /></div>';
 
index 1f1cfc6..d3dfdfa 100644 (file)
@@ -258,13 +258,13 @@ echo html_writer::start_tag('div', array('class'=>'messagearea mdl-align'));
 
                 if ($viewingnewmessages) {
                     $messagehistorylink .=  '&nbsp;|&nbsp;'.html_writer::start_tag('span');//, array('class'=>$historyclass)
-                        $messagehistorylink .= get_string('unreadnewmessage','message',fullname($user2));
+                        $messagehistorylink .= get_string('unreadnewmessages','message',$displaycount);
                     $messagehistorylink .= html_writer::end_tag('span');
                 }
 
             $messagehistorylink .= html_writer::end_tag('div');
 
-            message_print_message_history($user1, $user2, $search, $displaycount, $messagehistorylink);
+            message_print_message_history($user1, $user2, $search, $displaycount, $messagehistorylink, $viewingnewmessages);
         echo html_writer::end_tag('div');
 
         //send message form
index 6091e78..d21531c 100644 (file)
@@ -526,10 +526,11 @@ function message_print_search($advancedsearch = false, $user1=null) {
     if (!empty($frm->combinedsearch)) {
         $combinedsearchstring = $frm->combinedsearch;
     } else {
-        $combinedsearchstring = get_string('searchcombined','message').'...';
+        //$combinedsearchstring = get_string('searchcombined','message').'...';
+        $combinedsearchstring = '';
     }
 
-    $PAGE->requires->js_init_call('M.core_message.init_search_page', array($combinedsearchstring));
+    //$PAGE->requires->js_init_call('M.core_message.init_search_page', array($combinedsearchstring));
 
     if ($doingsearch) {
         if ($advancedsearch) {
@@ -803,7 +804,7 @@ function message_print_search_results($frm, $showicontext=false, $user1=null) {
             if ($countresults==MESSAGE_SEARCH_MAX_RESULTS) {
                 echo get_string('keywordssearchresultstoomany', 'message', $countresults).' ("'.s($messagesearchstring).'")';
             } else {
-                echo get_string('keywordssearchresults', 'message', $countresults).' ("'.s($messagesearchstring).'")';
+                echo get_string('keywordssearchresults', 'message', $countresults);
             }
             echo html_writer::end_tag('p');
 
@@ -919,7 +920,7 @@ function message_print_user ($user=false, $iscontact=false, $isblocked=false, $i
     if ($user === false) {
         echo $OUTPUT->user_picture($USER, array('size'=>20, 'courseid'=>SITEID));
     } else {
-        echo $OUTPUT->user_picture($USER, array('size'=>20, 'courseid'=>SITEID));
+        echo $OUTPUT->user_picture($user, array('size'=>20, 'courseid'=>SITEID));
         echo '&nbsp;';
 
         $return = false;
@@ -1378,8 +1379,8 @@ function message_get_fragment($message, $keywords) {
 }
 
 //retrieve the messages between two users
-function message_get_history($user1, $user2, $limitnum=0) {
-    global $DB;
+function message_get_history($user1, $user2, $limitnum=0, $viewingnewmessages=false) {
+    global $DB, $CFG;
 
     $messages = array();
 
@@ -1390,8 +1391,14 @@ function message_get_history($user1, $user2, $limitnum=0) {
         $sort = 'desc';
     }
 
-    if ($messages_read = $DB->get_records_select('message_read', "(useridto = ? AND useridfrom = ?) OR
-                                                    (useridto = ? AND useridfrom = ?)", array($user1->id, $user2->id, $user2->id, $user1->id),
+    $notificationswhere = null;
+    //we have just moved new messages to read. If theyre here to see new messages dont hide notifications
+    if (!$viewingnewmessages && $CFG->messaginghidereadnotifications) {
+        $notificationswhere = 'AND notification=0';
+    }
+
+    if ($messages_read = $DB->get_records_select('message_read', "((useridto = ? AND useridfrom = ?) OR
+                                                    (useridto = ? AND useridfrom = ?)) $notificationswhere", array($user1->id, $user2->id, $user2->id, $user1->id),
                                                     "timecreated $sort", '*', 0, $limitnum)) {
         foreach ($messages_read as $message) {
             $messages[$message->timecreated] = $message;
@@ -1414,7 +1421,7 @@ function message_get_history($user1, $user2, $limitnum=0) {
     return $messages;
 }
 
-function message_print_message_history($user1,$user2,$search='',$messagelimit=0, $messagehistorylink=false) {
+function message_print_message_history($user1,$user2,$search='',$messagelimit=0, $messagehistorylink=false, $viewingnewmessages=false) {
     global $CFG, $OUTPUT;
 
     echo $OUTPUT->box_start('center');
@@ -1455,7 +1462,7 @@ function message_print_message_history($user1,$user2,$search='',$messagelimit=0,
     }
 
     /// Get all the messages and print them
-    if ($messages = message_get_history($user1, $user2, $messagelimit)) {
+    if ($messages = message_get_history($user1, $user2, $messagelimit, $viewingnewmessages)) {
         $tablecontents = '';
 
         $current = new stdClass();
@@ -1465,6 +1472,11 @@ function message_print_message_history($user1,$user2,$search='',$messagelimit=0,
         $messagedate = get_string('strftimetime');
         $blockdate   = get_string('strftimedaydate');
         foreach ($messages as $message) {
+            if ($message->notification) {
+                $notificationclass = ' notification';
+            } else {
+                $notificationclass = null;
+            }
             $date = usergetdate($message->timecreated);
             if ($current->mday != $date['mday'] | $current->month != $date['month'] | $current->year != $date['year']) {
                 $current->mday = $date['mday'];
@@ -1475,9 +1487,9 @@ function message_print_message_history($user1,$user2,$search='',$messagelimit=0,
                 $tablecontents .= $OUTPUT->heading(userdate($message->timecreated, $blockdate), 4, 'center').'</div>';
             }
             if ($message->useridfrom == $user1->id) {
-                $tablecontents .= '<div class="mdl-left left">'.message_format_message($message, $user1, $messagedate, $search, 'me').'</div><br />';
+                $tablecontents .= "<div class='mdl-left left $notificationclass'>".message_format_message($message, $user1, $messagedate, $search, 'me').'</div><br />';
             } else {
-                $tablecontents .= '<div class="mdl-left right">'.message_format_message($message, $user2, $messagedate, $search, 'other').'</div><br />';
+                $tablecontents .= "<div class='mdl-left right $notificationclass'>".message_format_message($message, $user2, $messagedate, $search, 'other').'</div><br />';
             }
         }
 
index 2d14242..37a74bc 100644 (file)
@@ -28,13 +28,13 @@ M.core_message.init_refresh_page = function(Y, delay, url) {
        setTimeout(delay_callback, delay);
 };
 
-M.core_message.init_search_page = function(Y, defaultsearchterm) {
+/*M.core_message.init_search_page = function(Y, defaultsearchterm) {
     this.Y = Y;
     this.defaultsearchterm = defaultsearchterm;
 
     var combinedsearchbox = this.Y.one('#combinedsearch');
     combinedsearchbox.on('focus', this.combinedsearchgotfocus, this);
-};
+};*/
 
 
 M.core_message.combinedsearchgotfocus = function(e) {
index 308f66f..2cb8fe2 100644 (file)
@@ -24,3 +24,4 @@
  */
 
 $string['pluginname'] = 'Email';
+$string['email'] = 'Send email notifications to';
index e7fedd3..1a52153 100644 (file)
@@ -63,7 +63,7 @@ class message_output_email extends message_output {
      */
     function config_form($preferences){
         global $USER;
-        $string = get_string('email').': <input size="30" name="email_email" value="'.$preferences->email_email.'" />';
+        $string = get_string('email','message_email').': <input size="30" name="email_email" value="'.$preferences->email_email.'" />';
         if (empty($preferences->email_email)) {
             $string .= ' ('.get_string('default').': '.$USER->email.')';
         }
index 7ba9eb8..bbe0920 100644 (file)
@@ -23,4 +23,4 @@
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-$string['pluginname'] = 'Popup window';
+$string['pluginname'] = 'Popup notification';
index 2a64ba8..02e6f81 100644 (file)
@@ -54,15 +54,12 @@ class message_output_popup extends message_output{
     }
 
     function config_form($preferences) {
-        return '<table>'.
-               '<tr><td align="right">'.get_string('blocknoncontacts', 'message').':</td><td><input type="checkbox" name="blocknoncontacts" '.($preferences->blocknoncontacts==1?" checked=\"checked\"":"").' /></td></tr>'.
-               '<tr><td align="right">'.get_string('beepnewmessage', 'message').':</td><td><input type="checkbox" name="beepnewmessage" '.($preferences->beepnewmessage==1?" checked=\"checked\"":"").' /></td></tr>'.
-               '</table>';
+        return null;
     }
 
     public function process_form($form, &$preferences) {
         $preferences['message_blocknoncontacts']  = !empty($form->blocknoncontacts)?1:0;
-        $preferences['message_beepnewmessage']    = !empty($form->beepnewmessage)?1:0;
+        //$preferences['message_beepnewmessage']    = !empty($form->beepnewmessage)?1:0;
 
         return true;
     }
@@ -70,7 +67,7 @@ class message_output_popup extends message_output{
         global $USER;
 
         $preferences->blocknoncontacts  =  get_user_preferences( 'message_blocknoncontacts', '', $userid);
-        $preferences->beepnewmessage    =  get_user_preferences( 'message_beepnewmessage', '', $userid);
+        //$preferences->beepnewmessage    =  get_user_preferences( 'message_beepnewmessage', '', $userid);
 
         return true;
     }
index ab10497..b202ffb 100644 (file)
@@ -6,7 +6,7 @@
     <tr>
         <td colspan="3" class="message_heading mdl-left">
             <input type="text" name="combinedsearch" size="50" id="combinedsearch" value="<?php echo $combinedsearchstring; ?>" />
-            <input type="submit" name="combinedsubmit" value="<?php print_string('search') ?>" />
+            <input type="submit" name="combinedsubmit" value="<?php print_string('searchcombined','message') ?>" />
             <a href="contacts.php?advanced=1" id="advancedcontactsearchlink"><?php print_string('advanced') ?></a>
         </td>
     </tr>
index 84d744d..b5cf5be 100644 (file)
@@ -13,7 +13,7 @@
     <tr>
         <td><label for="name"><?php print_string('name') ?></label></td>
         <td><input type="text" name="name" size="50" id="name" value="<? echo $personsearch ?>" /></td>
-        <td><input type="submit" name="personsubmit" value="<?php print_string('search') ?>" /></td>
+        <td><input type="submit" name="personsubmit" value="<?php print_string('searchforperson','message') ?>" /></td>
     </tr>
     <tr>
         <td>&nbsp;</td>
@@ -30,7 +30,7 @@
     <tr>
         <td><label for="keywords"><?php print_string('keywords', 'message') ?></label></td>
         <td><input type="text" name="keywords" id="keywords" size="50" value="<? echo $messagesearch ?>" /></td>
-        <td><input type="submit" name="keywordssubmit" value="<?php print_string('search') ?>" /></td>
+        <td><input type="submit" name="keywordssubmit" value="<?php print_string('searchmessages','message') ?>" /></td>
     </tr>
 
     <tr>
index 037312f..a836f23 100644 (file)
@@ -336,7 +336,7 @@ $string['seeallposts'] = 'See all posts made by this user';
 $string['shortpost'] = 'Short post';
 $string['showsubscribers'] = 'Show/edit current subscribers';
 $string['singleforum'] = 'A single simple discussion';
-$string['smallmessage'] = '{$a->user} posted in {$a->forumname}<br />To view: {$a->replylink}';
+$string['smallmessage'] = '{$a->user} posted in {$a->forumname}<br />View discussion: {$a->replylink}';
 $string['startedby'] = 'Started by';
 $string['subject'] = 'Subject';
 $string['subscribe'] = 'Subscribe to this forum';
index 4ab7782..1cc9f41 100644 (file)
@@ -639,9 +639,10 @@ function forum_cron() {
                 $smallmessagestrings = new stdClass();
                 $smallmessagestrings->user = fullname($userfrom);
                 $smallmessagestrings->forumname = "{$course->shortname}->".format_string($forum->name,true);
-                $smallmessagestrings->replylink = "$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id#p$post->id";
+                $smallmessagestrings->replylink = "<a href='{$CFG->wwwroot}/mod/forum/discuss.php?d={$discussion->id}#p{$post->id}'>{$discussion->name}</a>";
                 $smallmessagestrings->message = $post->message;
                 $eventdata->smallmessage = get_string('smallmessage', 'forum', $smallmessagestrings);
+                $eventdata->notification = 1;
 
                 $mailresult = message_send($eventdata);
                 if (!$mailresult){
index c203cb9..f755524 100644 (file)
@@ -40,6 +40,7 @@ table.message .searchresults td {padding:5px;}
 .message .messagearea .messagehistory .heading {width:100%;clear:both;}
 .message .messagearea .messagehistory .left {padding-bottom:10px;width:50%;float:left;clear:both;}
 .message .messagearea .messagehistory .right {padding-bottom:10px;width:50%;float:right;clear:both;}
+.message .messagearea .messagehistory .notification {padding:10px;background-color:#EEEEEE;margin-top:5px;}
 .message .messagearea .messagesend {padding-top:20px;float:center;clear:both;}
 .message .messagearea .messagesend .messagesendbox {width:100%}
 .message .messagearea .messagesend fieldset {padding:0px;margin:0;} /** bring the message send button closer to the message box */
@@ -51,6 +52,6 @@ table.message .searchresults td {padding:5px;}
 .messagesearchresults td {padding:0px 10px 0px 20px;}
 .messagesearchresults td span {white-space:nowrap;}
 
-#newmessageoverlay {background-color:LightGrey;padding:20px;position:fixed;bottom:0;right:0;}
-#newmessageoverlay #usermessage {padding:10px;font-weight:bold;}
+#newmessageoverlay {background-color:LightGrey;border:1px solid black;padding:20px;position:fixed;bottom:0;right:0;}
+#newmessageoverlay #usermessage {padding:10px;}
 .ie6 #newmessageoverlay {position:static;}
index c3ad4d4..092bcd6 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version = 2010102300;  // YYYYMMDD   = date of the last version bump
+$version = 2010102500;  // YYYYMMDD   = date of the last version bump
                         //         XX = daily increments
 
 $release = '2.0 RC1 (Build: 20101025)';  // Human-friendly version name