]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-16268 User-User send messages now use new messaging system.
authorlfrodrigues <lfrodrigues>
Sat, 30 Aug 2008 17:53:30 +0000 (17:53 +0000)
committerlfrodrigues <lfrodrigues>
Sat, 30 Aug 2008 17:53:30 +0000 (17:53 +0000)
admin/index.php
lang/en_utf8/message.php
lib/messagelib.php
message/discussion.php
message/edit.php
message/lib.php
message/output/popup/popup_interface.php [deleted file]
message/refresh.php

index 1863f18739a9226d03023725468631899be8e50f..9a4c1162f9714ee1bdf01f50ee0fc0908cf2e0dd 100644 (file)
 
         // Install core message providers
         message_update_providers();
+       message_update_providers('message');
 
         /// This is used to handle any settings that must exist in $CFG but which do not exist in
         /// admin_get_root()/$ADMIN as admin_setting objects (there are some exceptions).
 
                 // Update core message providers
                 message_update_providers();
+               message_update_providers('message');
 
                 if (set_config("version", $version)) {
                     remove_dir($CFG->dataroot . '/cache', true); // flush cache
index 275ce4d33a64d56ae3abfc1fabb4466687fa1db9..985bad91ecddb84d32c04ffa1137d01a3cc74d54 100644 (file)
@@ -83,6 +83,6 @@ $string['noframesjs'] = 'No frames and JavaScript';
 $string['providerstag'] = 'Source: ';
 $string['processortag'] = 'Destination: ';
 $string['cannotsavemessageprefs'] = 'Could not save user messaging preferences';
-
+$string['messageprovider:instantmessage'] = 'User to User Instant Message';
 
 ?>
index 363b881ec5dc5046ec615542d372c8263a18a85d..bf39affcd7f4e66ae593bef13a1bc3aee1c1a5ca 100644 (file)
@@ -57,7 +57,7 @@ function message_send_handler($eventdata){
     } else {
         $userstate = 'loggedin';
     }
-
+    
 /// Create the message object
     $savemessage = new object();
     $savemessage->useridfrom        = $eventdata->userfrom->id;
@@ -95,9 +95,8 @@ function message_send_handler($eventdata){
 
     } else {                        // Process the message
     /// Store unread message just in case we can not send it
-        $savemessage->id = $DB->insert_record('message', $savemessage);
-
-
+        $savemessage->id = $DB->insert_record('message', $savemessage);        
+        
     /// Try to deliver the message to each processor
         $processorlist = explode(',', $processor);
         foreach ($processorlist as $procname) {
index 025d0a62e666377b6590903e27a1a0d290b597e8..75b2d91dda51ddc2b8ef7d6ce78e5551682288a8 100644 (file)
     $options = new object();
     $options->para = false;
     $options->newlines = true;
-
+    
     $params = array('uid1'=>$USER->id ,'userid1'=>$userid, 'start1'=>$start, 'uid2'=>$USER->id ,'userid2'=>$userid, 'start2'=>$start);
     if ($newonly) {
         $lastsql1 = " AND timecreated > :last1";
         $lastsql2 = "";
     }
 
+    //LR: change here the way to
     if ($messages = $DB->get_records_select('message_read', "(useridto = :uid1 AND useridfrom = :userid1 AND timeread > :start1 $lastsql1) OR (useridto = :userid2 AND useridfrom = :uid2 AND timeread > :start2 $lastsql2)", $params)) {
         foreach ($messages as $message) {
             $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
                 $fullname = $userfullname;
             }
 
-            $printmessage = format_text($message->message, $message->format, $options, 0);
+            if ($message->format == FORMAT_HTML){
+                $printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);                
+            } else{
+                $printmessage = format_text($message->fullmessage, $message->format, $options, 0);
+            }
             $printmessage = '<div class="message other"><span class="author">'.$fullname.'</span> '.
                 '<span class="time">['.$time.']</span>: '.
                 '<span class="content">'.$printmessage.'</span></div>';
     if ($messages = $DB->get_records_select('message', "useridto = :userid1 AND useridfrom = :uid1 $lastsql1", $params)) {
         foreach ($messages as $message) {
             $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
-
-            $printmessage = format_text($message->message, $message->format, $options, 0);
+            
+            if ($message->format == FORMAT_HTML){
+                $printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);                
+            } else{
+                $printmessage = format_text($message->fullmessage, $message->format, $options, 0);
+            }
             $printmessage = '<div class="message other"><span class="author">'.$mefullname.'</span> '.
                 '<span class="time">['.$time.']</span>: '.
                 '<span class="content">'.$printmessage.'</span></div>';
             $allmessages[$sortkey] = $printmessage;
         }
     }
-
+    /*Get still to be read message, use message/lib.php funtion*/
+    $messages = message_get_popup_messages($USER->id, $userid); 
+    if ($messages) {
+        foreach ($messages as $message) {
+            $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
+            
+            if ($message->format == FORMAT_HTML){
+                $printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);                
+            } else{
+                $printmessage = format_text($message->fullmessage, $message->format, $options, 0);
+            }
+            $printmessage = '<div class="message other"><span class="author">'.$userfullname.'</span> '.
+                '<span class="time">['.$time.']</span>: '.
+                '<span class="content">'.$printmessage.'</span></div>';
+            $i=0;
+            $sortkey = $message->timecreated."$i"; // we need string bacause we would run out of int range
+            while (array_key_exists($sortkey, $allmessages)) {
+                $i++;
+                $sortkey = $message->timecreated."$i";
+            }
+            $allmessages[$sortkey] = $printmessage;
+            
+            if ($message->timecreated < $start) {
+                $start = $message->timecreated; // move start back so that we see all current history
+            }
+        }
+        $playbeep = true;
+    }
+    /* old code, to be deleted
     if ($messages = $DB->get_records_select('message', "useridto = :uid2 AND useridfrom = userid2 $lastsql2", $params)) {
         foreach ($messages as $message) {
             $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
             }
         }
         $playbeep = true;
-    }
+    }*/
 
     krsort($allmessages);
 
index ed57a42d09351fd8a280f58207c5beb943cf4d4a..34b7f8731aee3bbc7084bd347c816bc1c0c38434 100644 (file)
@@ -142,7 +142,7 @@ if ( ($form = data_submitted()) && confirm_sesskey()) {
 $preferences = new object();
 
 //get the message general preferences
-$preferences->showmessagewindow =  get_user_preferences( 'message_showmessagewindow', '', $user->id);
+$preferences->showmessagewindow =  get_user_preferences( 'message_showmessagewindow', 1, $user->id);
 $preferences->blocknoncontacts  =  get_user_preferences( 'message_blocknoncontacts', '', $user->id);
 $preferences->beepnewmessage    =  get_user_preferences( 'message_beepnewmessage', '', $user->id);
 $preferences->noframesjs        =  get_user_preferences( 'message_noframesjs', '', $user->id);
index f1b710f5a9837d95b2b15e30b9ceb81a4b16938d..9a26a84c36fdb79b92b43eb3b949b88bcd01d3b1 100644 (file)
@@ -946,92 +946,19 @@ function message_format_message(&$message, &$user, $format='', $keywords='', $cl
  */
 function message_post_message($userfrom, $userto, $message, $format, $messagetype) {
     global $CFG, $SITE, $USER, $DB;
-
-/// Set up current language to suit the receiver of the message
-    $savelang = $USER->lang;
-    
-    if (!empty($userto->lang)) {
-        $USER->lang = $userto->lang;
-    }
     
     $eventdata = new object();
-    $eventdata->modulename       = 'moodle';
+    $eventdata->component        = 'message';
+    $eventdata->name             = 'instantmessage';
     $eventdata->userfrom         = $userfrom;
     $eventdata->userto           = $userto;
-    $eventdata->subject          = "MESSAGE";
+    $eventdata->subject          = "IM";
     $eventdata->fullmessage      = $message;
     $eventdata->fullmessageformat = FORMAT_PLAIN;
     $eventdata->fullmessagehtml  = '';
     $eventdata->smallmessage     = ''; 
-    events_trigger('message_send', $eventdata);
-
-
-/// Save the new message in the database
-
-    $savemessage = NULL;
-    $savemessage->useridfrom    = $userfrom->id;
-    $savemessage->useridto      = $userto->id;
-    $savemessage->message       = $message;
-    $savemessage->format        = $format;
-    $savemessage->timecreated   = time();
-    $savemessage->messagetype   = 'direct';
-
-    if ($CFG->messaging) {
-        //if (!$savemessage->id = $DB->insert_record('message', $savemessage)) {
-        //    return false;
-        //}
-        $emailforced = false;
-    } else { // $CFG->messaging is not on, we need to force sending of emails
-        $emailforced = true;
-        $savemessage->id = true; 
-    }
-
-/// Check to see if anything else needs to be done with it
-
-    $preference = (object)get_user_preferences(NULL, NULL, $userto->id);
-
-    if ($emailforced || (!isset($preference->message_emailmessages) || $preference->message_emailmessages)) {  // Receiver wants mail forwarding
-        if (!isset($preference->message_emailtimenosee)) {
-            $preference->message_emailtimenosee = 10;
-        }
-        if (!isset($preference->message_emailformat)) {
-            $preference->message_emailformat = FORMAT_HTML;
-        }
-        if ($emailforced || (time() - $userto->lastaccess) > ((int)$preference->message_emailtimenosee * 60)) { // Long enough
-
-            $tagline = get_string('emailtagline', 'message', $SITE->shortname);
-
-            $messagesubject = preg_replace('/\s+/', ' ', strip_tags($message)); // make sure it's all on one line
-            $messagesubject = message_shorten_message($messagesubject, 30).'...';
-
-            $messagetext = format_text_email($message, $format).
-                           "\n\n--\n".$tagline."\n"."$CFG->wwwroot/message/index.php?popup=1";
-
-            if (isset($preference->message_emailformat) and $preference->message_emailformat == FORMAT_HTML) {
-                $messagehtml  = format_text($message, $format);
-                // MDL-10294, do not print link if messaging is disabled
-                if ($CFG->messaging) {
-                    $messagehtml .= '<hr /><p><a href="'.$CFG->wwwroot.'/message/index.php?popup=1">'.$tagline.'</a></p>';
-                }
-            } else {
-                $messagehtml = NULL;
-            }
-
-            if (!empty($preference->message_emailaddress)) {
-                $userto->email = $preference->message_emailaddress;   // Use custom messaging address
-            }
-
-            if (email_to_user($userto, $userfrom, $messagesubject, $messagetext, $messagehtml)) {
-                $CFG->messagewasjustemailed = true;
-            }
-
-            sleep(3);
-        }
-    }
-
-    $USER->lang = $savelang;  // restore original language
+    return events_trigger('message_send', $eventdata);
 
-    return $savemessage->id;
 }
 
 
@@ -1091,4 +1018,37 @@ function message_print_contactlist_user($contact, $incontactlist = true){
     echo '</tr>';
 }
 
+function message_get_popup_messages($destuserid, $fromuserid=NULL){
+    global $DB;
+    
+    $processor = $DB->get_record('message_processors', array('name' => 'popup'));
+
+    $messagesproc = $DB->get_records('message_working', array('processorid'=>$processor->id));
+
+    //for every message to process check if it's for current user and process
+    $messages = array();
+    foreach ($messagesproc as $msgp){
+        $query = array('id'=>$msgp->unreadmessageid, 'useridto'=>$destuserid);
+        if ($fromuserid){
+            $query['useridfrom'] = $fromuserid;
+        }
+        if ($message = $DB->get_record('message', $query)){
+            $messages[] = $message;
+            /// Move the entry to the other table
+            $message->timeread = time();
+            $messageid = $message->id;
+            unset($message->id);
+        
+            //delete what we've processed and check if can move message
+            $DB->delete_records('message_working', array('id' => $msgp->id));
+            if ( $DB->count_records('message_working', array('unreadmessageid'=>$messageid)) == 0){
+                if ($DB->insert_record('message_read', $message)) {
+                    $DB->delete_records('message', array('id' => $messageid));
+                }
+            }
+        }
+    }
+    return $messages;
+}
+
 ?>
diff --git a/message/output/popup/popup_interface.php b/message/output/popup/popup_interface.php
deleted file mode 100644 (file)
index d475851..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-///////////////////////////////////////////////////////////////////////////
-//                                                                       //
-// NOTICE OF COPYRIGHT                                                   //
-//                                                                       //
-// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
-//          http://moodle.com                                            //
-//                                                                       //
-// Copyright (C) 1999 onwards  Martin Dougiamas  http://moodle.com       //
-//                                                                       //
-// This program is free software; you can redistribute it and/or modify  //
-// it under the terms of the GNU General Public License as published by  //
-// the Free Software Foundation; either version 2 of the License, or     //
-// (at your option) any later version.                                   //
-//                                                                       //
-// This program is distributed in the hope that it will be useful,       //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of        //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
-// GNU General Public License for more details:                          //
-//                                                                       //
-//          http://www.gnu.org/copyleft/gpl.html                         //
-//                                                                       //
-///////////////////////////////////////////////////////////////////////////
-
-/**
- * This script returns the popup messages that need to be shown.
- * FIXME: this is just a temp script to show how it could be done 
- * (this should be integrated with my new YUI interface)
- *
- * @author Luis Rodrigues
- * @version  $Id$
- * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
- * @package 
- */
-
-require_once('../../../config.php');
-require_once($CFG->dirroot.'/user/profile/lib.php');
-
-
-$processor = $DB->get_record('message_processors', array('name' => 'popup'));
-
-$messagesproc = $DB->get_records('message_working', array('processorid'=>$processor->id));
-
-//for every message to process check if it's for current user and process
-foreach ($messagesproc as $msgp){
-    $message = $DB->get_record('message', array('id'=>$msgp->unreadmessageid, 'useridto'=>$USER->id));
-    if (!$message){
-        continue;
-    }
-
-    //this is the show for now --> SHOULD BE SOMETHING ELSE...
-    echo "Usr from: ".$message->useridfrom." to: ".$message->useridto." subject:".$message->subject."<br>";
-
-    /// Move the entry to the other table
-    $message->timeread = time();
-    $messageid = $message->id;
-    unset($message->id);
-
-    //delete what we've processed and check if can move message
-    $DB->delete_records('message_working', array('id' => $msgp->id));
-    if ( $DB->count_records('message_working', array('unreadmessageid'=>$messageid)) == 0){
-        if ($DB->insert_record('message_read', $message)) {
-            $DB->delete_records('message', array('id' => $messageid));
-        }
-    }
-
-}
-
-?>
index 5b098ec20f01385a9ae0c21b2beff1a2480f406e..b2c10748759d2e8c5c7cda082546bc6f2b907c34 100644 (file)
@@ -1,6 +1,7 @@
 <?php // $Id$
 
     require('../config.php');
+    require('lib.php');
 
     define('MESSAGE_DEFAULT_REFRESH', 5);
 
     @ob_implicit_flush(true);
     @ob_end_flush();
 
+    /*Get still to be read message, use message/lib.php funtion*/
+    $messages = message_get_popup_messages($USER->id, $userid);     
+        if ($messages ) {
+        foreach ($messages as $message) {
+            $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
+
+            $options = new object();
+            $options->para = false;
+            $options->newlines = true;
+            if ($message->format == FORMAT_HTML){
+                $printmessage = format_text($message->fullmessagehtml, $message->format, $options, 0);                
+            } else{
+                $printmessage = format_text($message->fullmessage, $message->format, $options, 0);
+            }
+            $printmessage = '<div class="message other"><span class="author">'.s($userfullname).'</span> '.
+                '<span class="time">['.$time.']</span>: '.
+                '<span class="content">'.$printmessage.'</span></div>';
+            $printmessage = addslashes_js($printmessage);  // So Javascript can write it
+            echo "parent.messages.document.write('".$printmessage."');\n";            
+        }
+        if (get_user_preferences('message_beepnewmessage', 0)) {
+            $playbeep = true;
+        }
+        echo 'parent.messages.scroll(1,5000000);'."\n";
+        echo 'parent.send.focus();'."\n";
+        $wait = MESSAGE_DEFAULT_REFRESH;
+    } else {
+        if ($wait < 300) {                     // Until the wait is five minutes
+            $wait = ceil(1.2 * (float)$wait);  // Exponential growth
+        }
+    }
+    /* old code to be deleted
     if ($messages = $DB->get_records('message', array('useridto'=>$USER->id, 'useridfrom'=>$userid), 'timecreated')) {
         foreach ($messages as $message) {
             $time = userdate($message->timecreated, get_string('strftimedatetimeshort'));
             $wait = ceil(1.2 * (float)$wait);  // Exponential growth
         }
     }
-
+*/
     echo '-->'."\n";
     echo '</script>'."\n";
     echo '</head>'."\n";