[moodle] / contrib / patches / messaging_v2 / patch.diff Repository:

View of /contrib/patches/messaging_v2/patch.diff

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (download) (annotate)
Thu Jul 24 02:43:20 2008 WST (16 months ago) by lfrodrigues
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +92 -74 lines
updated patch to added default values
? config.php
? moodledata
? patch.diff
? lib/messagelib.php
? message/edit.php
? message/edit_form.php
? message/output
Index: version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/version.php,v
retrieving revision 1.724
diff -u -r1.724 version.php
--- version.php	21 Jul 2008 01:31:30 -0000	1.724
+++ version.php	23 Jul 2008 18:40:40 -0000
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2008070701;  // YYYYMMDD   = date of the last version bump
+     $version = 2008071200;  // YYYYMMDD   = date of the last version bump    
                             //         XX = daily increments
 
     $release = '2.0 dev (Build: 20080721)';  // Human-friendly version name
Index: admin/handlevirus.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/handlevirus.php,v
retrieving revision 1.10
diff -u -r1.10 handlevirus.php
--- admin/handlevirus.php	31 May 2008 10:43:51 -0000	1.10
+++ admin/handlevirus.php	23 Jul 2008 18:40:40 -0000
@@ -6,6 +6,8 @@
  * php -d error_log=/path/to/log thisfile.php will override the default error log for php cli, which is stderr, so if you want this script to just print stuff out, use php thisfile.php instead.
  */
 
+require_once($CFG->libdir.'/eventslib.php');
+
 
 $fd = fopen('php://stdin','r');
 if (!$fd) {
@@ -59,7 +61,22 @@
         return false;
     }
     $body = get_string('virusfoundlater','moodle',$a);
+
+    $eventdata = new object();
+    $eventdata->modulename        = 'moodle';
+    $eventdata->userfrom          = get_admin();
+    $eventdata->userto            = $user;
+    $eventdata->subject           = $subject;
+    $eventdata->fullmessage       = $body;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml   = '';
+    $eventdata->smallmessage      = '';
+    events_trigger('message_send', $eventdata);
+
+
+    /*
     email_to_user($user,get_admin(),$subject,$body);
+    */
 }
 
 
@@ -69,7 +86,20 @@
 
     $body = get_string('virusfoundlateradmin','moodle',$a);
     foreach ($admins as $admin) {
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $admin;
+        $eventdata->userto            = $admin;
+        $eventdata->subject           = $subject;
+        $eventdata->fullmessage       = $body;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';			    
+        events_trigger('message_send', $eventdata);
+
+        /*
         email_to_user($admin,$admin,$subject,$body);
+        */
     }
 }
 
@@ -81,7 +111,20 @@
     $subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
     $body = get_string('virusfoundlateradminnolog','moodle',$a);
     foreach ($admins as $admin) {
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $admin;
+        $eventdata->userto            = $admin;
+        $eventdata->subject           = $subject;
+        $eventdata->fullmessage       = $body;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';
+        events_trigger('message_send', $eventdata);
+    
+        /*
         email_to_user($admin,$admin,$subject,$body);
+        */
     }
 }
 
Index: backup/backup_scheduled.php
===================================================================
RCS file: /cvsroot/moodle/moodle/backup/backup_scheduled.php,v
retrieving revision 1.44
diff -u -r1.44 backup_scheduled.php
--- backup/backup_scheduled.php	5 Jun 2008 14:11:54 -0000	1.44
+++ backup/backup_scheduled.php	23 Jul 2008 18:40:45 -0000
@@ -1,5 +1,7 @@
 <?php //$Id: patch.diff,v 1.7 2008/07/23 18:43:20 lfrodrigues Exp $
     //This file contains all the code needed to execute scheduled backups
+    
+require_once($CFG->libdir.'/eventslib.php');    
 
 //This function is executed via moodle cron
 //It prepares all the info and execute backups as necessary
@@ -195,7 +197,20 @@
         $subject = $prefix.get_string("scheduledbackupstatus");
 
         //Send the message
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $admin;
+        $eventdata->userto            = $admin;
+        $eventdata->subject           = $subject;
+        $eventdata->fullmessage       = $message;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';
+        events_trigger('message_send', $eventdata);
+
+        /*
         email_to_user($admin,$admin,$subject,$message);
+        */
     }
 
 
Index: course/pending.php
===================================================================
RCS file: /cvsroot/moodle/moodle/course/pending.php,v
retrieving revision 1.19
diff -u -r1.19 pending.php
--- course/pending.php	16 Jun 2008 14:25:53 -0000	1.19
+++ course/pending.php	23 Jul 2008 18:40:48 -0000
@@ -5,6 +5,7 @@
     require_once($CFG->libdir.'/pagelib.php');
     require_once($CFG->libdir.'/blocklib.php');
     require_once('lib.php');
+    require_once($CFG->libdir.'/eventslib.php');
 
     require_login();
 
@@ -52,7 +53,21 @@
                 $a->name = $course->fullname;
                 $a->url = $CFG->wwwroot.'/course/view.php?id='.$courseid;
                 $a->teacher = $course->teacher;
+                
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = $USER;
+                $eventdata->userto            = $user;
+                $eventdata->subject           = get_string('courseapprovedsubject');
+                $eventdata->fullmessage       = get_string('courseapprovedemail','moodle',$a);
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';			    
+                events_trigger('message_send', $eventdata);
+
+                /*
                 email_to_user($user,$USER,get_string('courseapprovedsubject'),get_string('courseapprovedemail','moodle',$a));
+                */
                 redirect($CFG->wwwroot.'/course/edit.php?id='.$courseid);
                 exit;
             }
@@ -79,7 +94,20 @@
             }
             else {
                 $user = $DB->get_record("user", array("id"=>$reject->requester));
+                
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = $USER;
+                $eventdata->userto            = $user;
+                $eventdata->subject           = get_string('courserejectsubject');
+                $eventdata->fullmessage       = get_string('courserejectemail','moodle',$rejectnotice);
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';			    
+                events_trigger('message_send', $eventdata);
+                /*
                 email_to_user($user,$USER,get_string('courserejectsubject'),get_string('courserejectemail','moodle',$rejectnotice));
+                */
                 $DB->delete_records("course_request", array("id"=>$reject->id));
                 notice(get_string('courserejected'),'pending.php');
             }
Index: enrol/authorize/enrol.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/authorize/enrol.php,v
retrieving revision 2.23
diff -u -r2.23 enrol.php
--- enrol/authorize/enrol.php	5 Jul 2008 12:22:57 -0000	2.23
+++ enrol/authorize/enrol.php	23 Jul 2008 18:40:49 -0000
@@ -4,6 +4,7 @@
 require_once($CFG->dirroot.'/enrol/authorize/const.php');
 require_once($CFG->dirroot.'/enrol/authorize/localfuncs.php');
 require_once($CFG->dirroot.'/enrol/authorize/authorizenet.class.php');
+require_once($CFG->libdir.'/eventslib.php');
 
 /**
  * Authorize.net Payment Gateway plugin
@@ -171,7 +172,7 @@
         $order->currency = $curcost['currency'];
         $order->id = $DB->insert_record("enrol_authorize", $order);
         if (!$order->id) {
-            email_to_admin("Error while trying to insert new data", $order);
+            message_to_admin("Error while trying to insert new data", $order);
             return "Insert record error. Admin has been notified!";
         }
 
@@ -242,7 +243,20 @@
                     $context = get_context_instance(CONTEXT_COURSE, $course->id);
                     if (($paymentmanagers = get_users_by_capability($context, 'enrol/authorize:managepayments'))) {
                         foreach ($paymentmanagers as $paymentmanager) {
+                            $eventdata = new object();
+                            $eventdata->modulename        = 'moodle';
+                            $eventdata->userfrom          = $USER;
+                            $eventdata->userto            = $paymentmanager;
+                            $eventdata->subject           = $emailsubject;
+                            $eventdata->fullmessage       = $emailmessage;
+                            $eventdata->fullmessageformat = FORMAT_PLAIN;
+                            $eventdata->fullmessagehtml   = '';
+                            $eventdata->smallmessage      = '';
+                            events_trigger('message_send', $eventdata);
+
+                            /*
                             email_to_user($paymentmanager, $USER, $emailsubject, $emailmessage);
+                            */
                         }
                     }
                     redirect($CFG->wwwroot, get_string("reviewnotify", "enrol_authorize"), '30');
@@ -265,12 +279,26 @@
                             $a = new stdClass;
                             $a->course = "$course->fullname";
                             $a->user = fullname($USER);
+                            
+                            $eventdata = new object();
+                            $eventdata->modulename        = 'moodle';
+                            $eventdata->userfrom          = $USER;
+                            $eventdata->userto            = $paymentmanager;
+                            $eventdata->subject           = get_string("enrolmentnew", '', format_string($course->shortname));
+                            $eventdata->fullmessage       = get_string('enrolmentnewuser', '', $a);
+                            $eventdata->fullmessageformat = FORMAT_PLAIN;
+                            $eventdata->fullmessagehtml   = '';
+                            $eventdata->smallmessage      = '';
+                            events_trigger('message_send', $eventdata);
+                            
+                            /*
                             email_to_user(
                                 $paymentmanager,
                                 $USER,
                                 get_string("enrolmentnew", '', format_string($course->shortname)),
                                 get_string('enrolmentnewuser', '', $a)
                             );
+                            */
                         }
                         if (!empty($CFG->enrol_mailadmins)) {
                             $a = new stdClass;
@@ -278,18 +306,31 @@
                             $a->user = fullname($USER);
                             $admins = get_admins();
                             foreach ($admins as $admin) {
+                                $eventdata = new object();
+                                $eventdata->modulename  = 'moodle';
+                                $eventdata->userfrom    = $USER;
+                                $eventdata->userto      = $paymentmanager;
+                                $eventdata->subject     = get_string("enrolmentnew", '', format_string($course->shortname));
+                                $eventdata->fullmessage = get_string('enrolmentnewuser', '', $a);
+                                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                                $eventdata->fullmessagehtml   = '';
+                                $eventdata->smallmessage      = '';
+                                events_trigger('message_send', $eventdata);
+
+                                /*
                                 email_to_user(
                                     $admin,
                                     $USER,
                                     get_string("enrolmentnew", '', format_string($course->shortname)),
                                     get_string('enrolmentnewuser', '', $a)
                                 );
+                                */
                             }
                         }
                     }
                     else
                     {
-                        email_to_admin("Error while trying to enrol " . fullname($USER) . " in '$course->fullname'", $order);
+                        message_to_admin("Error while trying to enrol " . fullname($USER) . " in '$course->fullname'", $order);
                     }
 
                     if ($SESSION->wantsurl) {
@@ -308,7 +349,7 @@
         }
         else
         {
-            email_to_admin($message, $order);
+            message_to_admin($message, $order);
             return $message;
         }
     }
@@ -348,7 +389,7 @@
         $order->currency = $curcost['currency'];
         $order->id = $DB->insert_record("enrol_authorize", $order);
         if (!$order->id) {
-            email_to_admin("Error while trying to insert new data", $order);
+            message_to_admin("Error while trying to insert new data", $order);
             return "Insert record error. Admin has been notified!";
         }
 
@@ -385,7 +426,7 @@
             return NULL;
         }
         else {
-            email_to_admin($message, $order);
+            message_to_admin($message, $order);
             return $message;
         }
     }
@@ -695,10 +736,35 @@
 
         $adminuser = get_admin();
         if (!empty($faults)) {
+            $eventdata = new object();
+            $eventdata->modulename        = 'moodle';
+            $eventdata->userfrom          = $adminuser;
+            $eventdata->userto            = $adminuser;
+            $eventdata->subject           = "AUTHORIZE.NET CRON FAULTS";
+            $eventdata->fullmessage       = $faults;
+            $eventdata->fullmessageformat = FORMAT_PLAIN;
+            $eventdata->fullmessagehtml   = '';
+            $eventdata->smallmessage      = '';
+            events_trigger('message_send', $eventdata);
+
+            /*
             email_to_user($adminuser, $adminuser, "AUTHORIZE.NET CRON FAULTS", $faults);
+            */
         }
         if (!empty($CFG->enrol_mailadmins)) {
+            $eventdata = new object();
+            $eventdata->modulename        = 'moodle';
+            $eventdata->userfrom          = $adminuser;
+            $eventdata->userto            = $adminuser;
+            $eventdata->subject           = "AUTHORIZE.NET CRON LOG";
+            $eventdata->fullmessage       = $this->log;
+            $eventdata->fullmessageformat = FORMAT_PLAIN;
+            $eventdata->fullmessagehtml   = '';
+            $eventdata->smallmessage      = '';
+            events_trigger('message_send', $eventdata);
+            /*
             email_to_user($adminuser, $adminuser, "AUTHORIZE.NET CRON LOG", $this->log);
+            */ 
         }
 
         // Send emails to students about which courses have enrolled.
@@ -757,7 +823,20 @@
             $a->url = $CFG->wwwroot.'/enrol/authorize/uploadcsv.php';
             $message = get_string('pendingecheckemail', 'enrol_authorize', $a);
             foreach($csvusers as $csvuser) {
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = $adminuser;
+                $eventdata->userto            = $csvuser;
+                $eventdata->subject           = $subject;
+                $eventdata->fullmessage       = $message;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';
+                events_trigger('message_send', $eventdata);
+
+                /*
                 @email_to_user($csvuser, $adminuser, $subject, $message);
+                */ 
             }
             mtrace("        users who have 'enrol/authorize:uploadcsv' were mailed");
         }
@@ -791,7 +870,21 @@
         $a->enrolurl = "$CFG->wwwroot/$CFG->admin/enrol_config.php?enrol=authorize";
         $a->url = $CFG->wwwroot.'/enrol/authorize/index.php?status='.AN_STATUS_AUTH;
         $message = get_string('pendingordersemail', 'enrol_authorize', $a);
+        
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $adminuser;
+        $eventdata->userto            = $adminuser;
+        $eventdata->subject           = $subject;
+        $eventdata->fullmessage       = $message;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';	
+        events_trigger('message_send', $eventdata);
+
+        /*
         email_to_user($adminuser, $adminuser, $subject, $message);
+        */
 
         // Email to payment managers
         if (empty($CFG->an_emailexpiredteacher)) {
@@ -830,7 +923,20 @@
                 $a->url = $CFG->wwwroot.'/enrol/authorize/index.php?course='.$lastcourse.'&amp;status='.AN_STATUS_AUTH;
                 $message = get_string('pendingordersemailteacher', 'enrol_authorize', $a);
                 foreach ($paymentmanagers as $paymentmanager) {
+                    $eventdata = new object();
+                    $eventdata->modulename        = 'moodle';
+                    $eventdata->userfrom          = $adminuser;
+                    $eventdata->userto            = $paymentmanager;
+                    $eventdata->subject           = $subject;
+                    $eventdata->fullmessage       = $message;
+                    $eventdata->fullmessageformat = FORMAT_PLAIN;
+                    $eventdata->fullmessagehtml   = '';
+                    $eventdata->smallmessage      = '';	
+                    events_trigger('message_send', $eventdata);
+
+                    /*
                     email_to_user($paymentmanager, $adminuser, $subject, $message);
+                    */
                 }
             }
         }
Index: enrol/authorize/localfuncs.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/authorize/localfuncs.php,v
retrieving revision 2.12
diff -u -r2.12 localfuncs.php
--- enrol/authorize/localfuncs.php	11 Jun 2008 13:37:53 -0000	2.12
+++ enrol/authorize/localfuncs.php	23 Jul 2008 18:40:49 -0000
@@ -1,5 +1,7 @@
 <?php // $Id: patch.diff,v 1.7 2008/07/23 18:43:20 lfrodrigues Exp $
 
+require_once($CFG->libdir.'/eventslib.php');
+
 function get_course_cost($course)
 {
     global $CFG;
@@ -111,7 +113,7 @@
     }
 }
 
-function email_to_admin($subject, $data)
+function message_to_admin($subject, $data)
 {
     global $SITE;
 
@@ -120,7 +122,19 @@
 
     $message = "$SITE->fullname: Transaction failed.\n\n$subject\n\n";
     $message .= print_r($data, true);
+    $eventdata = new object();
+    $eventdata->modulename        = 'moodle';
+    $eventdata->userfrom          = $admin;
+    $eventdata->userto            = $admin;
+    $eventdata->subject           = "$SITE->fullname: Authorize.net ERROR";
+    $eventdata->fullmessage       = $emailmessage;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml   = '';
+    $eventdata->smallmessage      = '';    
+    events_trigger('message_send', $eventdata);
+    /*
     email_to_user($admin, $admin, "$SITE->fullname: Authorize.net ERROR", $message);
+    */
 }
 
 function send_welcome_messages($orderdata)
@@ -177,7 +191,21 @@
                 $a->profileurl = "$CFG->wwwroot/user/view.php?id=$lastuserid";
                 $a->paymenturl = "$CFG->wwwroot/enrol/authorize/index.php?user=$lastuserid";
                 $emailmessage = get_string('welcometocoursesemail', 'enrol_authorize', $a);
+                
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = $sender;
+                $eventdata->userto            = $user;
+                $eventdata->subject           = get_string("enrolmentnew", '', $SITE->shortname);
+                $eventdata->fullmessage       = $emailmessage;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';    
+                events_trigger('message_send', $eventdata);
+
+                /*
                 @email_to_user($user, $sender, get_string("enrolmentnew", '', $SITE->shortname), $emailmessage);
+                */
             }
         }
         while ($ei);
Index: enrol/authorize/uploadcsv.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/authorize/uploadcsv.php,v
retrieving revision 2.7
diff -u -r2.7 uploadcsv.php
--- enrol/authorize/uploadcsv.php	5 Jun 2008 18:21:44 -0000	2.7
+++ enrol/authorize/uploadcsv.php	23 Jul 2008 18:40:49 -0000
@@ -5,6 +5,7 @@
     require_once($CFG->libdir.'/uploadlib.php');
     require_once($CFG->dirroot.'/enrol/authorize/const.php');
     require_once($CFG->dirroot.'/enrol/authorize/localfuncs.php');
+    require_once($CFG->libdir.'/eventslib.php');
 
 /// Require capabilites
     require_login();
@@ -224,7 +225,21 @@
 /// Send email to admin
     if (!empty($ignoredlines)) {
         $admin = get_admin();
+        
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $admin;
+        $eventdata->userto            = $admin;
+        $eventdata->subject           = "$SITE->fullname: Authorize.net CSV ERROR LOG";
+        $eventdata->fullmessage       = $ignoredlines;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';			    
+        events_trigger('message_send', $eventdata);
+
+        /*
         email_to_user($admin, $admin, "$SITE->fullname: Authorize.net CSV ERROR LOG", $ignoredlines);
+        */
     }
 
 /// Send welcome messages to users
Index: enrol/flatfile/enrol.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/flatfile/enrol.php,v
retrieving revision 1.10
diff -u -r1.10 enrol.php
--- enrol/flatfile/enrol.php	2 Jun 2008 21:02:52 -0000	1.10
+++ enrol/flatfile/enrol.php	23 Jul 2008 18:40:49 -0000
@@ -5,6 +5,7 @@
 // $CFG->enrol_emailteachers:          send email to teachers when they are enrolled in a course
 // $CFG->enrol_emailadmins:            email the log from the cron job to the admin
 
+require_once($CFG->libdir.'/eventslib.php');
 
 
 class enrolment_plugin_flatfile {
@@ -216,8 +217,22 @@
                         if (!empty($CFG->enrol_mailstudents)) {
                             $a->coursename = "$course->fullname";
                             $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id";
+                            
+                            $eventdata = new object();
+                            $eventdata->modulename        = 'moodle';
+                            $eventdata->userfrom          = $teacher;
+                            $eventdata->userto            = $user;
+                            $eventdata->subject           = get_string("enrolmentnew", '', $course->shortname);
+                            $eventdata->fullmessage       = get_string('welcometocoursetext', '', $a);
+                            $eventdata->fullmessageformat = FORMAT_PLAIN;
+                            $eventdata->fullmessagehtml   = '';
+                            $eventdata->smallmessage      = '';
+                            events_trigger('message_send', $eventdata);
+
+                            /*
                             email_to_user($user, $teacher, get_string("enrolmentnew", '', $course->shortname), 
                                           get_string('welcometocoursetext', '', $a));
+                            */ 
                         }
 
                         if (!empty($CFG->enrol_mailteachers) && $teachers) {
@@ -227,8 +242,22 @@
                                 if (!$u->hidden || has_capability('moodle/role:viewhiddenassigns', $context)) {
                                     $a->course = "$course->fullname";
                                     $a->user = fullname($user);
+                                    
+                                    $eventdata = new object();
+                                    $eventdata->modulename        = 'moodle';
+                                    $eventdata->userfrom          = $user;
+                                    $eventdata->userto            = $teacher;
+                                    $eventdata->subject           = get_string("enrolmentnew", '', $course->shortname);
+                                    $eventdata->fullmessage       = get_string('enrolmentnewuser', '', $a);
+                                    $eventdata->fullmessageformat = FORMAT_PLAIN;
+                                    $eventdata->fullmessagehtml   = '';
+                                    $eventdata->smallmessage      = '';			    
+                                    events_trigger('message_send', $eventdata);
+
+                                    /*
                                     email_to_user($teacher, $user, get_string("enrolmentnew", '', $course->shortname), 
                                                   get_string('enrolmentnewuser', '', $a));
+                                    */
                                 }
                             }
                         }
@@ -246,12 +275,38 @@
             } // end of if(file_open)
 
             if(! @unlink($filename)) {
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = get_admin();
+                $eventdata->userto            = get_admin();
+                $eventdata->subject           = get_string("filelockedmailsubject", "enrol_flatfile");
+                $eventdata->fullmessage       = get_string("filelockedmail", "enrol_flatfile", $filename);
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';
+                events_trigger('message_send', $eventdata);
+
+                /*
                 email_to_user(get_admin(), get_admin(), get_string("filelockedmailsubject", "enrol_flatfile"), get_string("filelockedmail", "enrol_flatfile", $filename));
+                */
                 $this->log .= "Error unlinking file $filename\n";
             }
 
             if (!empty($CFG->enrol_mailadmins)) {
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = get_admin();
+                $eventdata->userto            = get_admin();
+                $eventdata->subject           = "Flatfile Enrolment Log";
+                $eventdata->fullmessage       = $this->log;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';
+                events_trigger('message_send', $eventdata);
+
+                /*
                 email_to_user(get_admin(), get_admin(), "Flatfile Enrolment Log", $this->log);
+                */
             }
 
         } // end of if(file_exists)
Index: enrol/imsenterprise/enrol.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/imsenterprise/enrol.php,v
retrieving revision 1.20
diff -u -r1.20 enrol.php
--- enrol/imsenterprise/enrol.php	16 Jun 2008 14:25:54 -0000	1.20
+++ enrol/imsenterprise/enrol.php	23 Jul 2008 18:40:49 -0000
@@ -6,6 +6,7 @@
 */
 require_once("$CFG->libdir/blocklib.php");
 require_once($CFG->dirroot.'/group/lib.php');
+require_once($CFG->libdir.'/eventslib.php');
 
 // The following flags are set in the configuration
 // $CFG->enrol_imsfilelocation:        where is the file we are looking for?
@@ -380,8 +381,21 @@
         }else{
             $msg .= "Logging is currently not active.";
         }
+        
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = get_admin();
+        $eventdata->userto            = get_admin();
+        $eventdata->subject           = "Moodle IMS Enterprise enrolment notification";
+        $eventdata->fullmessage       = $msg;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';			    
+        events_trigger('message_send', $eventdata);
 
+        /*
         email_to_user(get_admin(), get_admin(), "Moodle IMS Enterprise enrolment notification", $msg);
+        */
         $this->log_line('Notification email sent to administrator.');
 
     }
Index: enrol/manual/enrol.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/manual/enrol.php,v
retrieving revision 1.35
diff -u -r1.35 enrol.php
--- enrol/manual/enrol.php	9 Jun 2008 16:54:00 -0000	1.35
+++ enrol/manual/enrol.php	23 Jul 2008 18:40:49 -0000
@@ -23,6 +23,7 @@
 ///////////////////////////////////////////////////////////////////////////
 
 require_once($CFG->dirroot.'/group/lib.php');
+require_once($CFG->libdir.'/eventslib.php');
 
 /**
 * enrolment_plugin_manual is the default enrolment plugin
@@ -313,8 +314,20 @@
                             $strexpirynotifystudentsemail = get_string('expirynotifystudentsemail', '', $a);
                             $strexpirynotify              = get_string('expirynotify');
 
+                            $eventdata = new object();
+                            $eventdata->modulename        = 'moodle';
+                            $eventdata->userfrom          = $teacher;
+                            $eventdata->userto            = $user;
+                            $eventdata->subject           = format_string($SITE->fullname) .' '. $strexpirynotify;
+                            $eventdata->fullmessage       = $strexpirynotifystudentsemail;
+                            $eventdata->fullmessageformat = FORMAT_PLAIN;
+                            $eventdata->fullmessagehtml   = '';
+                            $eventdata->smallmessage      = '';			    
+                            events_trigger('message_send', $eventdata);
+                            /*
                             email_to_user($user, $teacher, format_string($SITE->fullname) .' '. $strexpirynotify,
                                           $strexpirynotifystudentsemail);
+                            */
                         }
                     }
                 }
@@ -331,7 +344,20 @@
                         $strexpirynotifyemail = get_string('expirynotifyemail', '', $a);
                         $strexpirynotify      = get_string('expirynotify');
 
+                        $eventdata = new object();
+                        $eventdata->modulename        = 'moodle';
+                        $eventdata->userfrom          = $admin;
+                        $eventdata->userto            = $teacher;
+                        $eventdata->subject           = $a->coursename .' '. $strexpirynotify;
+                        $eventdata->fullmessage       = $strexpirynotifyemail;
+                        $eventdata->fullmessageformat = FORMAT_PLAIN;
+                        $eventdata->fullmessagehtml   = '';
+                        $eventdata->smallmessage      = '';			    
+                        events_trigger('message_send', $eventdata);
+
+                        /*
                         email_to_user($teacher, $admin, $a->coursename .' '. $strexpirynotify, $strexpirynotifyemail);
+                        */
                     }
                 }
             }
Index: enrol/paypal/ipn.php
===================================================================
RCS file: /cvsroot/moodle/moodle/enrol/paypal/ipn.php,v
retrieving revision 1.25
diff -u -r1.25 ipn.php
--- enrol/paypal/ipn.php	9 Jun 2008 16:53:35 -0000	1.25
+++ enrol/paypal/ipn.php	23 Jul 2008 18:40:49 -0000
@@ -15,6 +15,7 @@
 
     require("../../config.php");
     require("enrol.php");
+    require_once($CFG->libdir.'/eventslib.php');
 
 /// Keep out casual intruders
     if (empty($_POST) or !empty($_GET)) {
@@ -46,17 +47,17 @@
 /// get the user and course records
 
     if (! $user = $DB->get_record("user", array("id"=>$data->userid))) {
-        email_paypal_error_to_admin("Not a valid user id", $data);
+        message_paypal_error_to_admin("Not a valid user id", $data);
         die;
     }
 
     if (! $course = $DB->get_record("course", array("id"=>$data->courseid))) {
-        email_paypal_error_to_admin("Not a valid course id", $data);
+        message_paypal_error_to_admin("Not a valid course id", $data);
         die;
     }
 
     if (! $context = get_context_instance(CONTEXT_COURSE, $course->id)) {
-        email_paypal_error_to_admin("Not a valid context id", $data);
+        message_paypal_error_to_admin("Not a valid context id", $data);
         die;
     }
 
@@ -71,7 +72,7 @@
 
     if (!$fp) {  /// Could not open a socket to PayPal - FAIL
         echo "<p>Error: could not access paypal.com</p>";
-        email_paypal_error_to_admin("Could not access paypal.com to verify payment", $data);
+        message_paypal_error_to_admin("Could not access paypal.com to verify payment", $data);
         die;
     }
 
@@ -93,7 +94,7 @@
 
             if ($data->payment_status != "Completed" and $data->payment_status != "Pending") {
                 role_unassign(0, $data->userid, 0, $context->id);
-                email_paypal_error_to_admin("Status not completed or pending. User unenrolled from course", $data);
+                message_paypal_error_to_admin("Status not completed or pending. User unenrolled from course", $data);
                 die;
             }
 
@@ -101,8 +102,21 @@
             // Email user to let them know. Email admin.
 
             if ($data->payment_status == "Pending" and $data->pending_reason != "echeck") {
+                $eventdata = new object();
+                $eventdata->modulename        = 'moodle';
+                $eventdata->userfrom          = get_admin();
+                $eventdata->userto            = $user;
+                $eventdata->subject           = "Moodle: PayPal payment";
+                $eventdata->fullmessage       = "Your PayPal payment is pending.";
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml   = '';
+                $eventdata->smallmessage      = '';
+                events_trigger('message_send', $eventdata);
+
+                /*
                 email_to_user($user, get_admin(), "Moodle: PayPal payment", "Your PayPal payment is pending.");
-                email_paypal_error_to_admin("Payment pending", $data);
+                */
+                message_paypal_error_to_admin("Payment pending", $data);
                 die;
             }
 
@@ -119,24 +133,24 @@
 
 
             if ($existing = $DB->get_record("enrol_paypal", array("txn_id"=>$data->txn_id))) {   // Make sure this transaction doesn't exist already
-                email_paypal_error_to_admin("Transaction $data->txn_id is being repeated!", $data);
+                message_paypal_error_to_admin("Transaction $data->txn_id is being repeated!", $data);
                 die;
 
             }
 
             if ($data->business != $CFG->enrol_paypalbusiness) {   // Check that the email is the one we want it to be
-                email_paypal_error_to_admin("Business email is $data->business (not $CFG->enrol_paypalbusiness)", $data);
+                message_paypal_error_to_admin("Business email is $data->business (not $CFG->enrol_paypalbusiness)", $data);
                 die;
 
             }
 
             if (!$user = $DB->get_record('user', array('id'=>$data->userid))) {   // Check that user exists
-                email_paypal_error_to_admin("User $data->userid doesn't exist", $data);
+                message_paypal_error_to_admin("User $data->userid doesn't exist", $data);
                 die;
             }
 
             if (!$course = $DB->get_record('course', array('id'=>$data->courseid))) { // Check that course exists
-                email_paypal_error_to_admin("Course $data->courseid doesn't exist", $data);;
+                message_paypal_error_to_admin("Course $data->courseid doesn't exist", $data);;
                 die;
             }
 
@@ -149,7 +163,7 @@
 
             if ($data->payment_gross < $cost) {
                 $cost = format_float($cost, 2);
-                email_paypal_error_to_admin("Amount paid is not enough ($data->payment_gross < $cost))", $data);
+                message_paypal_error_to_admin("Amount paid is not enough ($data->payment_gross < $cost))", $data);
                 die;
 
             }
@@ -157,11 +171,11 @@
             // ALL CLEAR !
 
             if (!$DB->insert_record("enrol_paypal", $data)) {       // Insert a transaction record
-                email_paypal_error_to_admin("Error while trying to insert valid transaction", $data);
+                message_paypal_error_to_admin("Error while trying to insert valid transaction", $data);
             }
 
             if (!enrol_into_course($course, $user, 'paypal')) {
-                email_paypal_error_to_admin("Error while trying to enrol ".fullname($user)." in '$course->fullname'", $data);
+                message_paypal_error_to_admin("Error while trying to enrol ".fullname($user)." in '$course->fullname'", $data);
                 die;
             } else {
                 $teacher = get_teacher($course->id);
@@ -169,24 +183,65 @@
                 if (!empty($CFG->enrol_mailstudents)) {
                     $a->coursename = $course->fullname;
                     $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id";
+                    
+                    $eventdata = new object();
+                    $eventdata->modulename        = 'moodle';
+                    $eventdata->userfrom          = $teacher;
+                    $eventdata->userto            = $user;
+                    $eventdata->subject           = get_string("enrolmentnew", '', $course->shortname);
+                    $eventdata->fullmessage       = get_string('welcometocoursetext', '', $a);
+                    $eventdata->fullmessageformat = FORMAT_PLAIN;
+                    $eventdata->fullmessagehtml   = '';
+                    $eventdata->smallmessage      = '';
+                    events_trigger('message_send', $eventdata);
+                    
+                    /*
                     email_to_user($user, $teacher, get_string("enrolmentnew", '', $course->shortname),
                                   get_string('welcometocoursetext', '', $a));
+                    */
                 }
 
                 if (!empty($CFG->enrol_mailteachers)) {
                     $a->course = $course->fullname;
                     $a->user = fullname($user);
+                    
+                    $eventdata = new object();
+                    $eventdata->modulename        = 'moodle';
+                    $eventdata->userfrom          = $user;
+                    $eventdata->userto            = $teacher;
+                    $eventdata->subject           = get_string("enrolmentnew", '', $course->shortname);
+                    $eventdata->fullmessage       = get_string('enrolmentnewuser', '', $a);
+                    $eventdata->fullmessageformat = FORMAT_PLAIN;
+                    $eventdata->fullmessagehtml   = '';
+                    $eventdata->smallmessage      = '';			    
+                    events_trigger('message_send', $eventdata); 
+
+                    /*
                     email_to_user($teacher, $user, get_string("enrolmentnew", '', $course->shortname),
                                   get_string('enrolmentnewuser', '', $a));
+                    */
                 }
 
                 if (!empty($CFG->enrol_mailadmins)) {
                     $a->course = $course->fullname;
                     $a->user = fullname($user);
                     $admins = get_admins();
-                    foreach ($admins as $admin) {
+                    foreach ($admins as $admin) {                        
+                        $eventdata = new object();
+                        $eventdata->modulename        = 'moodle';
+                        $eventdata->userfrom          = $user;
+                        $eventdata->userto            = $admin;
+                        $eventdata->subject           = get_string("enrolmentnew", '', $course->shortname);
+                        $eventdata->fullmessage       = get_string('enrolmentnewuser', '', $a);
+                        $eventdata->fullmessageformat = FORMAT_PLAIN;
+                        $eventdata->fullmessagehtml   = '';
+                        $eventdata->smallmessage      = '';
+                        events_trigger('message_send', $eventdata);
+
+                        /*
                         email_to_user($admin, $user, get_string("enrolmentnew", '', $course->shortname),
                                       get_string('enrolmentnewuser', '', $a));
+                        */
                     }
                 }
 
@@ -195,7 +250,7 @@
 
         } else if (strcmp ($result, "INVALID") == 0) { // ERROR
             $DB->insert_record("enrol_paypal", $data, false);
-            email_paypal_error_to_admin("Received an invalid payment notification!! (Fake payment?)", $data);
+            message_paypal_error_to_admin("Received an invalid payment notification!! (Fake payment?)", $data);
         }
     }
 
@@ -207,7 +262,7 @@
 /// FUNCTIONS //////////////////////////////////////////////////////////////////
 
 
-function email_paypal_error_to_admin($subject, $data) {
+function message_paypal_error_to_admin($subject, $data) {
     $admin = get_admin();
     $site = get_site();
 
@@ -217,8 +272,20 @@
         $message .= "$key => $value\n";
     }
 
-    email_to_user($admin, $admin, "PAYPAL ERROR: ".$subject, $message);
+    $eventdata = new object();
+    $eventdata->modulename        = 'moodle';
+    $eventdata->userfrom          = $admin;
+    $eventdata->userto            = $admin;
+    $eventdata->subject           = "PAYPAL ERROR: ".$subject;
+    $eventdata->fullmessage       = $message;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml   = '';
+    $eventdata->smallmessage      = '';
+    events_trigger('message_send', $eventdata);
 
+/*
+    email_to_user($admin, $admin, "PAYPAL ERROR: ".$subject, $message);
+*/
 }
 
 ?>
Index: error/index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/error/index.php,v
retrieving revision 1.20
diff -u -r1.20 index.php
--- error/index.php	9 Jun 2008 16:53:38 -0000	1.20
+++ error/index.php	23 Jul 2008 18:40:49 -0000
@@ -1,6 +1,7 @@
 <?PHP // $Id: patch.diff,v 1.7 2008/07/23 18:43:20 lfrodrigues Exp $
 
     require('../config.php');
+    require_once($CFG->libdir.'/eventslib.php');
 
     if ($form = data_submitted()) { // form submitted, do not check referer (original page unknown)!
 
@@ -20,8 +21,21 @@
         $supportuser->lastname = $CFG->supportname ? '' : $admin->lastname;
         $supportuser->maildisplay = true;
 
-    /// Send the email and redirect
+    /// Send the message and redirect
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = $USER;
+        $eventdata->userto            = $supportuser;
+        $eventdata->subject           = 'Error: '. $form->referer .' -> '. $form->requested;
+        $eventdata->fullmessage       = $form->text;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';			    
+        events_trigger('message_send', $eventdata);
+
+    /*
         email_to_user($supportuser, $USER, 'Error: '. $form->referer .' -> '. $form->requested, $form->text);
+    */
 
         redirect($CFG->wwwroot .'/course/', 'Message sent, thanks', 3);
         exit;
Index: lang/en_utf8/message.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/message.php,v
retrieving revision 1.9
diff -u -r1.9 message.php
--- lang/en_utf8/message.php	13 Jun 2008 06:55:26 -0000	1.9
+++ lang/en_utf8/message.php	23 Jul 2008 18:40:59 -0000
@@ -10,10 +10,8 @@
 $string['allstudents'] = 'All messages between students in course';
 $string['allusers'] = 'All messages from all users';
 $string['backupmessageshelp'] = 'If enabled, then instant messages will be included in SITE automated backups';
-$string['beepnewmessage'] = 'Beep when a new message comes in (may require browser plugin that can play sounds, such as Quicktime)';
 $string['blockcontact'] = 'Block contact';
 $string['blockedmessages'] = '$a message(s) to/from blocked users';
-$string['blocknoncontacts'] = 'Block all new messages from people who are not on my contact list';
 $string['contactlistempty'] = 'Your contact list is currently empty';
 $string['contacts'] = 'Contacts';
 $string['context'] = 'context';
@@ -38,7 +36,6 @@
 $string['mycontacts'] = 'My Contacts';
 $string['newsearch'] = 'New search';
 $string['newonlymsg'] = 'Show only new';
-$string['noframesjs'] = 'Version without frames and JavaScript';
 $string['nomessages'] = 'No messages waiting';
 $string['nomessagesfound'] = 'No messages were found';
 $string['nosearchresults'] = 'There were no results from your search';
@@ -61,7 +58,6 @@
 $string['sendmessagetopopup'] = "Send message to \$a - new window";
 $string['settings'] = 'Settings';
 $string['settingssaved'] = 'Your settings have been saved';
-$string['showmessagewindow'] = 'Automatically show Message window when I get new messages (your browser needs to be set so that it doesn\'t block popups on this site)';
 $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p';
 $string['timenosee'] = 'Minutes since I was last seen online';
 $string['timesent'] = 'Time Sent';
@@ -71,4 +67,20 @@
 $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';
 
+//luis: used in the message system
+$string['editmymessage'] = 'Messaging';
+$string['guestnoeditmessage'] = 'Guest user can not edit messaging options';
+$string['guestnoeditmessageother'] = 'Guest user can not edit other user messaging options';
+$string['loggedin'] = 'Logged In: ';
+$string['loggedoff'] = 'Logged Off: ';
+$string['general_config'] = 'General Options';
+$string['providers_config'] = 'Message Sources';
+$string['processor_config'] = 'Destinations Configuration';
+$string['showmessagewindow'] = 'Popup window on new message';
+$string['blocknoncontacts'] = 'Block unknown users';
+$string['beepnewmessage'] = 'Beep on new message';
+$string['noframesjs'] = 'No frames and JavaScript';
+$string['providerstag'] = 'Source: ';
+$string['processortag'] = 'Destination: ';
+
 ?>
Index: lang/en_utf8/role.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/role.php,v
retrieving revision 1.60
diff -u -r1.60 role.php
--- lang/en_utf8/role.php	18 Apr 2008 08:35:16 -0000	1.60
+++ lang/en_utf8/role.php	23 Jul 2008 18:40:59 -0000
@@ -187,4 +187,9 @@
 $string['user:viewusergrades'] = 'View user grades';
 $string['course:managegrades'] = 'Manage grades';
 
+//LUIS: new message system
+$string['user:editmessageprofile'] = 'Edit user messaging profile';
+$string['user:editownmessageprofile'] = 'Edit own user messaging profile';
+
+
 ?>
Index: lib/adminlib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/adminlib.php,v
retrieving revision 1.226
diff -u -r1.226 adminlib.php
--- lib/adminlib.php	16 Jul 2008 02:16:42 -0000	1.226
+++ lib/adminlib.php	23 Jul 2008 18:41:01 -0000
@@ -785,6 +785,18 @@
         $USER->newadminuser = 1;
         load_all_capabilities();
 
+        //add default preferences for the messageprocessors (by default all users get email)
+        $providers = $DB->get_records('message_providers');
+        $preferences = array();
+        foreach ( $providers as $providerid => $provider){
+            $preferences[ 'message_provider_'.$provider->modulename.'_loggedin'  ] = 'popup';
+            $preferences[ 'message_provider_'.$provider->modulename.'_loggedoff'  ] = 'email';
+        }    
+        if (!set_user_preferences( $preferences, $usernew->id ) ){
+            print_error('Error updating user message preferences');
+        }
+
+
         if (!defined('CLI_UPGRADE')||!CLI_UPGRADE) {
         redirect("$CFG->wwwroot/user/editadvanced.php?id=$user->id");  // Edit thyself
         }
Index: lib/uploadlib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/uploadlib.php,v
retrieving revision 1.29
diff -u -r1.29 uploadlib.php
--- lib/uploadlib.php	14 Jul 2008 02:38:50 -0000	1.29
+++ lib/uploadlib.php	23 Jul 2008 18:41:04 -0000
@@ -9,6 +9,8 @@
  * @package moodlecore
  */
 
+require_once($CFG->libdir.'/eventslib.php');
+
 //error_reporting(E_ALL ^ E_NOTICE);
 /**
  * This class handles all aspects of fileuploading
@@ -642,7 +644,7 @@
             $notice .= "\n". clam_handle_infected_file($fullpath);
             $newreturn = false; 
         }
-        clam_mail_admins($notice);
+        clam_message_admins($notice);
         if ($appendlog) {
             $file['uploadlog'] .= "\n". get_string('clambroken');
             $file['clam'] = 1;
@@ -673,7 +675,7 @@
         $notice = get_string('virusfound', 'moodle', $info);
         $notice .= "\n\n". implode("\n", $output);
         $notice .= "\n\n". clam_handle_infected_file($fullpath); 
-        clam_mail_admins($notice);
+        clam_message_admins($notice);
         if ($appendlog) {
             $info->filename = $file['originalname'];
             $file['uploadlog'] .= "\n". get_string('virusfounduser', 'moodle', $info);
@@ -689,7 +691,7 @@
             $notice .= "\n". clam_handle_infected_file($fullpath);
             $newreturn = false;
         }
-        clam_mail_admins($notice);
+        clam_message_admins($notice);
         if ($appendlog) {
             $file['uploadlog'] .= "\n". get_string('clambroken');
             $file['clam'] = 1;
@@ -703,14 +705,27 @@
  *
  * @param string $notice The body of the email to be sent.
  */
-function clam_mail_admins($notice) {
+function clam_message_admins($notice) {
     
     $site = get_site();
         
     $subject = get_string('clamemailsubject', 'moodle', format_string($site->fullname));
     $admins = get_admins();
     foreach ($admins as $admin) {
+        $eventdata = new object();
+        $eventdata->modulename        = 'moodle';
+        $eventdata->userfrom          = get_admin();
+        $eventdata->userto            = $admin;
+        $eventdata->subject           = $subject;
+        $eventdata->fullmessage       = $notice;
+        $eventdata->fullmessageformat = FORMAT_PLAIN;
+        $eventdata->fullmessagehtml   = '';
+        $eventdata->smallmessage      = '';
+        events_trigger('message_send', $eventdata);
+
+        /*
         email_to_user($admin, get_admin(), $subject, $notice);
+        */
     }
 }
 
Index: lib/db/access.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/db/access.php,v
retrieving revision 1.82
diff -u -r1.82 access.php
--- lib/db/access.php	29 Feb 2008 09:35:04 -0000	1.82
+++ lib/db/access.php	23 Jul 2008 18:41:08 -0000
@@ -807,6 +807,29 @@
             'admin' => CAP_ALLOW
         )
     ),
+    
+    //capabilities designed for the new message system configuration
+    'moodle/user:editmessageprofile' => array(
+ 
+         'riskbitmask' => RISK_SPAM,
+ 
+         'captype' => 'write',
+         'contextlevel' => CONTEXT_USER,
+         'legacy' => array(
+             'admin' => CAP_ALLOW
+         )
+     ),
+ 
+     'moodle/user:editownmessageprofile' => array(      
+ 
+         'captype' => 'write',     
+         'contextlevel' => CONTEXT_SYSTEM,      
+         'legacy' => array(   
+             'guest' => CAP_PROHIBIT,
+             'user' => CAP_ALLOW,
+             'admin' => CAP_ALLOW
+         )    
+     ),
 
     'moodle/question:managecategory' => array(
 
Index: lib/db/events.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/db/events.php,v
retrieving revision 1.7
diff -u -r1.7 events.php
--- lib/db/events.php	6 Jul 2008 22:54:46 -0000	1.7
+++ lib/db/events.php	23 Jul 2008 18:41:08 -0000
@@ -29,7 +29,54 @@
 
 /* List of handlers */
 
-$handlers = array (); // no handlers for now in core
+$handlers = array (
+
+ /*
+  * Messaging Events
+  */
+/*
+ * required parameters (object):
+ *  modulename     - 
+ *  modulefile     - 
+ *
+ */
+    'message_provider_register' => array (
+         'handlerfile'      => '/lib/messagelib.php',
+         'handlerfunction'  => 'message_provider_register_handler', 
+         'schedule'         => 'instant'
+    ),
+
+/*
+ * required parameters (object):
+ *  modulename     - 
+ *
+ */
+
+    'message_provider_unregister' => array (
+         'handlerfile'      => '/lib/messagelib.php',
+         'handlerfunction'  => 'message_provider_unregister_handler', 
+         'schedule'         => 'instant'
+     ),
+
+/* required parameters (object):
+ *  modulename     - 
+ *  userfrom
+ *  userto
+ *  subject
+ *  fullmessage - the full message in a given format
+ *  fullmessageformat  - the format if the full message (FORMAT_MOODLE, FORMAT_HTML, ..)
+ *  fullmessagehtml  - the full version (the message processor will choose with one to use) 
+ *  smallmessage - the small version of the message
+ */
+
+    'message_send' => array (
+         'handlerfile'      => '/lib/messagelib.php',
+         'handlerfunction'  => 'message_send_handler', 
+         'schedule'         => 'instant'
+     )
+
+);
+
 
 
 
Index: lib/db/install.xml
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/db/install.xml,v
retrieving revision 1.154
diff -u -r1.154 install.xml
--- lib/db/install.xml	7 Jul 2008 15:09:40 -0000	1.154
+++ lib/db/install.xml	23 Jul 2008 18:41:08 -0000
@@ -311,12 +311,14 @@
     <TABLE NAME="message" COMMENT="Stores all unread messages" PREVIOUS="log_display" NEXT="message_read">
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="useridfrom"/>
-        <FIELD NAME="useridfrom" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="useridto"/>
-        <FIELD NAME="useridto" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="useridfrom" NEXT="message"/>
-        <FIELD NAME="message" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="useridto" NEXT="format"/>
-        <FIELD NAME="format" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="message" NEXT="timecreated"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="format" NEXT="messagetype"/>
-        <FIELD NAME="messagetype" TYPE="char" LENGTH="50" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated"/>
+        <FIELD NAME="useridfrom" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="useridto"/>
+        <FIELD NAME="useridto" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="useridfrom" NEXT="subject"/>
+        <FIELD NAME="subject" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="The message subject" PREVIOUS="useridto" NEXT="fullmessage"/>
+        <FIELD NAME="fullmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="subject" NEXT="fullmessageformat"/>
+        <FIELD NAME="fullmessageformat" TYPE="int" LENGTH="4" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="The format of the full message" PREVIOUS="fullmessage" NEXT="fullmessagehtml"/>
+        <FIELD NAME="fullmessagehtml" TYPE="text" LENGTH="medium" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="html format of message" PREVIOUS="fullmessageformat" NEXT="smallmessage"/>
+        <FIELD NAME="smallmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="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" ENUM="false" PREVIOUS="smallmessage"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
@@ -329,14 +331,15 @@
     <TABLE NAME="message_read" COMMENT="Stores all messages that have been read" PREVIOUS="message" NEXT="message_contacts">
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="useridfrom"/>
-        <FIELD NAME="useridfrom" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="useridto"/>
-        <FIELD NAME="useridto" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="useridfrom" NEXT="message"/>
-        <FIELD NAME="message" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="useridto" NEXT="format"/>
-        <FIELD NAME="format" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="message" NEXT="timecreated"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="format" NEXT="timeread"/>
-        <FIELD NAME="timeread" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated" NEXT="messagetype"/>
-        <FIELD NAME="messagetype" TYPE="char" LENGTH="50" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="timeread" NEXT="mailed"/>
-        <FIELD NAME="mailed" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="messagetype"/>
+        <FIELD NAME="useridfrom" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="useridto"/>
+        <FIELD NAME="useridto" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="useridfrom" NEXT="subject"/>
+        <FIELD NAME="subject" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="The message subject" PREVIOUS="useridto" NEXT="fullmessage"/>
+        <FIELD NAME="fullmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="subject" NEXT="fullmessageformat"/>
+        <FIELD NAME="fullmessageformat" TYPE="int" LENGTH="4" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="The format of the full message" PREVIOUS="fullmessage" NEXT="fullmessagehtml"/>
+        <FIELD NAME="fullmessagehtml" TYPE="text" LENGTH="medium" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="html format of message" PREVIOUS="fullmessageformat" NEXT="smallmessage"/>
+        <FIELD NAME="smallmessage" TYPE="text" LENGTH="small" NOTNULL="false" SEQUENCE="false" ENUM="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" ENUM="false" PREVIOUS="smallmessage" NEXT="timeread"/>
+        <FIELD NAME="timeread" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
@@ -1708,7 +1711,7 @@
         <INDEX NAME="name" UNIQUE="false" FIELDS="name" COMMENT="name index"/>
       </INDEXES>
     </TABLE>
-    <TABLE NAME="portfolio_instance_user" COMMENT="user data for portfolio instances." PREVIOUS="portfolio_instance_config">
+    <TABLE NAME="portfolio_instance_user" COMMENT="user data for portfolio instances." PREVIOUS="portfolio_instance_config" NEXT="message_providers">
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="instance"/>
         <FIELD NAME="instance" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" COMMENT="fk to instance table" PREVIOUS="id" NEXT="userid"/>
@@ -1722,6 +1725,35 @@
         <KEY NAME="userfk" TYPE="foreign" FIELDS="userid" REFTABLE="user" REFFIELDS="id" COMMENT="fk to user table" PREVIOUS="instancefk"/>
       </KEYS>
     </TABLE>
+    <TABLE NAME="message_providers" COMMENT="This table stores the message providers (modules and core systems)" PREVIOUS="portfolio_instance_user" NEXT="message_processors">
+      <FIELDS>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" SEQUENCE="true" ENUM="false" COMMENT="id of the table, please edit me" NEXT="modulename"/>
+        <FIELD NAME="modulename" TYPE="char" LENGTH="166" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="Module Name" PREVIOUS="id" NEXT="modulefile"/>
+        <FIELD NAME="modulefile" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="The main module file" PREVIOUS="modulename"/>
+      </FIELDS>
+      <KEYS>
+        <KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="primary key of the table, please edit me"/>
+      </KEYS>
+    </TABLE>
+    <TABLE NAME="message_processors" COMMENT="List of message output plugins" PREVIOUS="message_providers" NEXT="message_working">
+      <FIELDS>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" SEQUENCE="true" ENUM="false" COMMENT="id of the table, please edit me" NEXT="name"/>
+        <FIELD NAME="name" TYPE="char" LENGTH="166" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="Default comment for the field, please edit me" PREVIOUS="id"/>
+      </FIELDS>
+      <KEYS>
+        <KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="primary key of the table, please edit me"/>
+      </KEYS>
+    </TABLE>
+    <TABLE NAME="message_working" COMMENT="Lists all the messages and processors that need to be processed" PREVIOUS="message_processors">
+      <FIELDS>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" SEQUENCE="true" ENUM="false" COMMENT="id of the table, please edit me" NEXT="unreadmessageid"/>
+        <FIELD NAME="unreadmessageid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" COMMENT="message that still needs some processing (on message table)" PREVIOUS="id" NEXT="processorid"/>
+        <FIELD NAME="processorid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" COMMENT="The processor with processes the message" PREVIOUS="unreadmessageid"/>
+      </FIELDS>
+      <KEYS>
+        <KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="primary key of the table, please edit me"/>
+      </KEYS>
+    </TABLE>
   </TABLES>
   <STATEMENTS>
     <STATEMENT NAME="insert mnet_application" TYPE="insert" TABLE="mnet_application" COMMENT="Initial insert of records on table mnet_application" NEXT="insert log_display">
@@ -1730,7 +1762,7 @@
         <SENTENCE TEXT="(name, display_name, xmlrpc_server_url, sso_land_url) VALUES ('mahara','Mahara','/api/xmlrpc/server.php',  '/auth/xmlrpc/land.php')" />
       </SENTENCES>
     </STATEMENT>
-    <STATEMENT NAME="insert log_display" TYPE="insert" TABLE="log_display" COMMENT="Initial insert of records on table log_display" PREVIOUS="insert mnet_application">
+    <STATEMENT NAME="insert log_display" TYPE="insert" TABLE="log_display" COMMENT="Initial insert of records on table log_display" PREVIOUS="insert mnet_application" NEXT="insert message_providers">
       <SENTENCES>
         <SENTENCE TEXT="(module, action, mtable, field) VALUES ('user', 'view', 'user', 'CONCAT(firstname,&quot; &quot;,lastname)')" />
         <SENTENCE TEXT="(module, action, mtable, field) VALUES ('course', 'user report', 'user', 'CONCAT(firstname,&quot; &quot;,lastname)')" />
@@ -1752,5 +1784,10 @@
         <SENTENCE TEXT="(module, action, mtable, field) VALUES ('group', 'view', 'groups', 'name')" />
       </SENTENCES>
     </STATEMENT>
+    <STATEMENT NAME="insert message_providers" TYPE="insert" TABLE="message_providers" COMMENT="Initial insert of moodle record in message_providers" PREVIOUS="insert log_display">
+        <SENTENCES>
+            <SENTENCE TEXT="(modulename, modulefile) VALUES ('moodle', 'index.php')" />
+        </SENTENCES>
+    </STATEMENT>
   </STATEMENTS>
 </XMLDB>
Index: lib/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/db/upgrade.php,v
retrieving revision 1.212
diff -u -r1.212 upgrade.php
--- lib/db/upgrade.php	7 Jul 2008 15:09:40 -0000	1.212
+++ lib/db/upgrade.php	23 Jul 2008 18:41:08 -0000
@@ -191,7 +191,7 @@
         $result = $DB->delete_records_select('role_names', $DB->sql_isempty('role_names', 'name', false, false));
         upgrade_main_savepoint($result, 2008070300);
     }
-
+        
     if ($result && $oldversion < 2008070700) {
         if (isset($CFG->defaultuserroleid) and isset($CFG->guestroleid) and $CFG->defaultuserroleid == $CFG->guestroleid) {
             // guest can not be selected in defaultuserroleid!
@@ -262,6 +262,91 @@
     /// Main savepoint reached
         upgrade_main_savepoint($result, 2008070701);
     }
+    
+    if ($result && $oldversion < 2008071200) {
+        /// Create the database tables for message_processors and message_providers
+        $table = new XMLDBTable('message_providers');
+        $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
+        $table->addFieldInfo('modulename', XMLDB_TYPE_CHAR, '166', null, XMLDB_NOTNULL, null, null, null, null);
+        $table->addFieldInfo('modulefile', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
+        $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id'));
+        $dbman->create_table($table);
+
+        $table = new XMLDBTable('message_processors');
+        $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
+        $table->addFieldInfo('name', XMLDB_TYPE_CHAR, '166', null, XMLDB_NOTNULL, null, null, null, null);
+        $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id'));
+        $dbman->create_table($table);
+
+
+        $provider = new object();
+        $provider->modulename  = 'moodle';
+        $provider->modulefile  = 'index.php';
+        $DB->insert_record('message_providers', $provider);
+
+    /// delete old and create new fields
+        $table = new XMLDBTable('message');
+        $field = new XMLDBField('messagetype');
+        $dbman->drop_field($table, $field);
+
+    /// fields to rename
+        $field = new XMLDBField('message');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->rename_field($table, $field, 'fullmessage');
+        $field = new XMLDBField('format');
+        $field->setAttributes(XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, null, null, null, null, '0', null);
+        $dbman->rename_field($table, $field, 'fullmessageformat');
+
+    /// new message fields
+        $field = new XMLDBField('subject');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+        $field = new XMLDBField('fullmessagehtml');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+        $field = new XMLDBField('smallmessage');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+
+
+        $table = new XMLDBTable('message_read');
+        $field = new XMLDBField('messagetype');
+        $dbman->drop_field($table, $field);
+        $field = new XMLDBField('mailed');
+        $dbman->drop_field($table, $field);
+
+    /// fields to rename
+        $field = new XMLDBField('message');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->rename_field($table, $field, 'fullmessage');
+        $field = new XMLDBField('format');
+        $field->setAttributes(XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, null, null, null, null, '0', null);
+        $dbman->rename_field($table, $field, 'fullmessageformat');
+
+
+    /// new message fields
+        $field = new XMLDBField('subject');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+        $field = new XMLDBField('fullmessagehtml');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+        $field = new XMLDBField('smallmessage');
+        $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
+        $dbman->add_field($table, $field);
+
+    /// new table
+        $table = new XMLDBTable('message_working');
+        $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
+        $table->addFieldInfo('unreadmessageid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $table->addFieldInfo('processorid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id'));
+        $dbman->create_table($table);
+
+
+        upgrade_main_savepoint($result, 2008071200);
+    }
+
 
 /*
  * TODO:
Index: message/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/message/lib.php,v
retrieving revision 1.77
diff -u -r1.77 lib.php
--- message/lib.php	9 Jun 2008 19:48:26 -0000	1.77
+++ message/lib.php	23 Jul 2008 18:41:49 -0000
@@ -1,6 +1,8 @@
 <?php
 /// library functions for messaging
 
+require_once($CFG->libdir.'/eventslib.php');
+
 
 define ('MESSAGE_SHORTLENGTH', 300);
 define ('MESSAGE_WINDOW', true);          // We are in a message window (so don't pop up a new one!)
@@ -951,6 +953,18 @@
     if (!empty($userto->lang)) {
         $USER->lang = $userto->lang;
     }
+    
+    $eventdata = new object();
+    $eventdata->modulename       = 'moodle';
+    $eventdata->userfrom         = $userfrom;
+    $eventdata->userto           = $userto;
+    $eventdata->subject          = "MESSAGE";
+    $eventdata->fullmessage      = $message;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml  = '';
+    $eventdata->smallmessage     = ''; 
+    events_trigger('message_send', $eventdata);
+
 
 /// Save the new message in the database
 
@@ -963,9 +977,9 @@
     $savemessage->messagetype   = 'direct';
 
     if ($CFG->messaging) {
-        if (!$savemessage->id = $DB->insert_record('message', $savemessage)) {
-            return false;
-        }
+        //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;
Index: mod/assignment/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/assignment/lib.php,v
retrieving revision 1.329
diff -u -r1.329 lib.php
--- mod/assignment/lib.php	9 Jun 2008 16:54:01 -0000	1.329
+++ mod/assignment/lib.php	23 Jul 2008 18:41:50 -0000
@@ -5,6 +5,8 @@
  * This class provides all the functionality for an assignment
  */
 
+require_once($CFG->libdir.'/eventslib.php');
+
 DEFINE ('ASSIGNMENT_COUNT_WORDS', 1);
 DEFINE ('ASSIGNMENT_COUNT_LETTERS', 2);
 
@@ -1579,7 +1581,21 @@
                 $posttext = $this->email_teachers_text($info);
                 $posthtml = ($teacher->mailformat == 1) ? $this->email_teachers_html($info) : '';
 
+                $eventdata = new object();
+                $eventdata->modulename       = 'assignment';
+                $eventdata->userfrom         = $user;
+                $eventdata->userto           = $teacher;
+                $eventdata->subject          = $postsubject;
+                $eventdata->fullmessage      = $posttext;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml  = $posthtml;
+                $eventdata->smallmessage     = '';
+                if ( events_trigger('message_send', $eventdata) > 0 ){
+                }
+
+                /*
                 @email_to_user($teacher, $user, $postsubject, $posttext, $posthtml);  // If it fails, oh well, too bad.
+                */
             }
         }
     }
@@ -1932,6 +1948,19 @@
 
 /// OTHER STANDARD FUNCTIONS ////////////////////////////////////////////////////////
 
+/** 
+ * Code to be executed when a module is installed
+ * now is just used to register the module as message provider
+ */ 
+function assignment_install() {
+    $eventdata = new object();
+    $eventdata->modulename = 'assignment';
+    $eventdata->modulefile = 'mod/assignment/index.php';
+    events_trigger('message_provider_register', $eventdata); 
+   
+    return true; 
+}
+
 /**
  * Deletes an assignment instance
  *
@@ -2125,9 +2154,24 @@
                 $posthtml = "";
             }
 
+            $eventdata = new object();
+            $eventdata->modulename       = 'assignment';
+            $eventdata->userfrom         = $teacher;
+            $eventdata->userto           = $user;
+            $eventdata->subject          = $postsubject;
+            $eventdata->fullmessage      = $posttext;
+            $eventdata->fullmessageformat = FORMAT_PLAIN;
+            $eventdata->fullmessagehtml  = $posthtml;
+            $eventdata->smallmessage     = '';
+            if ( events_trigger('message_send', $eventdata) > 0 ){
+                echo "Error: assignment cron: Could not send out mail for id $submission->id to user $user->id ($user->email)\n";
+            }
+
+            /*
             if (! email_to_user($user, $teacher, $postsubject, $posttext, $posthtml)) {
                 echo "Error: assignment cron: Could not send out mail for id $submission->id to user $user->id ($user->email)\n";
             }
+            */
         }
 
         $USER = $realuser;
Index: mod/assignment/version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/assignment/version.php,v
retrieving revision 1.57
diff -u -r1.57 version.php
--- mod/assignment/version.php	19 Mar 2008 23:20:00 -0000	1.57
+++ mod/assignment/version.php	23 Jul 2008 18:41:50 -0000
@@ -5,8 +5,8 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2007101511;
-$module->requires = 2007101509;  // Requires this Moodle version
+$module->version  = 2008071200;
+$module->requires = 2008071200;  // Requires this Moodle version
 $module->cron     = 60;
 
 ?>
Index: mod/assignment/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/assignment/db/upgrade.php,v
retrieving revision 1.15
diff -u -r1.15 upgrade.php
--- mod/assignment/db/upgrade.php	22 Jun 2008 23:35:53 -0000	1.15
+++ mod/assignment/db/upgrade.php	23 Jul 2008 18:41:50 -0000
@@ -35,6 +35,15 @@
         $DB->set_debug(true);
         upgrade_mod_savepoint($result, 2007101511, 'assignment');
     }
+    
+    if ($result && $oldversion < 2008071200) {
+        $eventdata = new object();
+        $eventdata->modulename = 'assignment';
+        $eventdata->modulefile = 'mod/assignment/index.php';
+        events_trigger('message_provider_register', $eventdata); 
+        
+        upgrade_mod_savepoint($result, 2008071200, 'assignment');
+    }
 
     return $result;
 }
Index: mod/feedback/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/feedback/lib.php,v
retrieving revision 1.16
diff -u -r1.16 lib.php
--- mod/feedback/lib.php	18 Jul 2008 14:53:28 -0000	1.16
+++ mod/feedback/lib.php	23 Jul 2008 18:41:52 -0000
@@ -8,6 +8,8 @@
 * @package feedback
 */
 
+require_once($CFG->libdir.'/eventslib.php');
+
 /// Library of functions and constants for module feedback
 
 define('FEEDBACK_INCLUDE_TEST', 1);
@@ -27,6 +29,20 @@
     $SESSION->feedback = new object();
 }
 
+/** 
+ * Code to be executed when a module is installed
+ * now is just used to register the module as message provider
+ */ 
+function feedback_install() {
+    $eventdata = new object();
+    $eventdata->modulename = 'feedback';
+    $eventdata->modulefile = 'mod/feedback/index.php';
+    events_trigger('message_provider_register', $eventdata); 
+   
+    return true; 
+}
+
+
 /**
 * this will create a new instance and return the id number
 * of the new instance.
@@ -1808,9 +1824,37 @@
             $posthtml = ($teacher->mailformat == 1) ? feedback_send_email_html($info, $course, $cm) : '';
 
             if($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) {
+                $eventdata = new object();
+                $eventdata->modulename       = 'feedback';
+                $eventdata->userfrom         = $user;
+                $eventdata->userto           = $teacher;
+                $eventdata->subject          = $postsubject;
+                $eventdata->fullmessage      = $posttext;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml  = $posthtml;
+                $eventdata->smallmessage     = '';
+                if ( events_trigger('message_send', $eventdata) > 0 ){
+                }
+
+                /*
                 @email_to_user($teacher, $user, $postsubject, $posttext, $posthtml);
+                */
             }else {
+                $eventdata = new object();
+                $eventdata->modulename       = 'feedback';
+                $eventdata->userfrom         = $teacher;
+                $eventdata->userto           = $teacher;
+                $eventdata->subject          = $postsubject;
+                $eventdata->fullmessage      = $posttext;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml  = $posthtml;
+                $eventdata->smallmessage     = '';
+                if ( events_trigger('message_send', $eventdata) > 0 ){
+                }
+
+                /*
                 @email_to_user($teacher, $teacher, $postsubject, $posttext, $posthtml);
+                */
             }
         }
     }
@@ -1849,7 +1893,21 @@
             $posttext = feedback_send_email_text($info, $course);
             $posthtml = ($teacher->mailformat == 1) ? feedback_send_email_html($info, $course, $cm) : '';
 
+            $eventdata = new object();
+            $eventdata->modulename       = 'feedback';
+            $eventdata->userfrom         = $teacher;
+            $eventdata->userto           = $teacher;
+            $eventdata->subject          = $postsubject;
+            $eventdata->fullmessage      = $posttext;
+            $eventdata->fullmessageformat = FORMAT_PLAIN;
+            $eventdata->fullmessagehtml  = $posthtml;
+            $eventdata->smallmessage     = '';
+            if ( events_trigger('message_send', $eventdata) > 0 ){
+            }
+
+            /*
             @email_to_user($teacher, $teacher, $postsubject, $posttext, $posthtml);
+            */
         }
     }
 }
Index: mod/feedback/version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/feedback/version.php,v
retrieving revision 1.17
diff -u -r1.17 version.php
--- mod/feedback/version.php	22 Jun 2008 18:02:55 -0000	1.17
+++ mod/feedback/version.php	23 Jul 2008 18:41:52 -0000
@@ -10,8 +10,8 @@
 */
 
    
-    $module->version = 2008052208; // The current module version (Date: YYYYMMDDXX)
-    $module->requires = 2007101503;  // Requires this Moodle version
+    $module->version = 2008071200; // The current module version (Date: YYYYMMDDXX)
+    $module->requires = 2008071200;  // Requires this Moodle version
     $feedback_version_intern = 1; //this version is used for restore older backups
     $module->cron = 0; // Period for cron to check this module (secs)
 
Index: mod/feedback/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/feedback/db/upgrade.php,v
retrieving revision 1.16
diff -u -r1.16 upgrade.php
--- mod/feedback/db/upgrade.php	22 Jun 2008 23:35:52 -0000	1.16
+++ mod/feedback/db/upgrade.php	23 Jul 2008 18:41:52 -0000
@@ -232,6 +232,16 @@
 
         upgrade_mod_savepoint($result, 2008050105, 'feedback');
     }
+    
+    if ($result and $oldversion < 2008071200) {
+        $eventdata = new object();
+        $eventdata->modulename = 'forum';
+        $eventdata->modulefile = 'mod/forum/index.php';
+        events_trigger('message_provider_register', $eventdata);
+        
+        upgrade_mod_savepoint($result, 2008071200, 'feedback');
+    }
+
 
     return $result;
 }
Index: mod/forum/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/lib.php,v
retrieving revision 1.685
diff -u -r1.685 lib.php
--- mod/forum/lib.php	10 Jul 2008 09:55:12 -0000	1.685
+++ mod/forum/lib.php	23 Jul 2008 18:41:53 -0000
@@ -1,6 +1,7 @@
 <?php  // $Id: patch.diff,v 1.7 2008/07/23 18:43:20 lfrodrigues Exp $
 
 require_once($CFG->libdir.'/filelib.php');
+require_once($CFG->libdir.'/eventslib.php');
 
 /// CONSTANTS ///////////////////////////////////////////////////////////
 
@@ -28,6 +29,20 @@
 
 /// STANDARD FUNCTIONS ///////////////////////////////////////////////////////////
 
+/** 
+ * Code to be executed when a module is installed
+ * now is just used to register the module as message provider
+ */ 
+function forum_install() {
+    $eventdata = new object();
+    $eventdata->modulename = 'forum';
+    $eventdata->modulefile = 'mod/forum/index.php';
+    events_trigger('message_provider_register', $eventdata); 
+
+    return true; 
+}
+
+
 /**
  * Given an object containing all the necessary data,
  * (defined by the form in mod_form.php) this function
@@ -446,9 +461,21 @@
                 // Send the post now!
 
                 mtrace('Sending ', '');
-
+                /*
                 if (!$mailresult = email_to_user($userto, $userfrom, $postsubject, $posttext,
                                                  $posthtml, '', '', $CFG->forum_replytouser)) {
+                */
+                $eventdata = new object();
+                $eventdata->modulename       = 'forum';
+                $eventdata->userfrom         = $userfrom;
+                $eventdata->userto           = $userto;
+                $eventdata->subject          = $postsubject;
+                $eventdata->fullmessage      = $posttext;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml  = $posthtml;
+                $eventdata->smallmessage     = '';
+                if ( events_trigger('message_send', $eventdata) > 0){
+
                     mtrace("Error: mod/forum/cron.php: Could not send out mail for id $post->id to user $userto->id".
                          " ($userto->email) .. not trying again.");
                     add_to_log($course->id, 'forum', 'mail error', "discuss.php?d=$discussion->id#p$post->id",
@@ -734,8 +761,20 @@
                     $posthtml = '';
                 }
 
+                /*
                 if (!$mailresult =  email_to_user($userto, $site->shortname, $postsubject, $posttext, $posthtml,
                                                   '', '', $CFG->forum_replytouser)) {
+                */
+                $eventdata = new object();
+                $eventdata->modulename       = 'forum';
+                $eventdata->userfrom         = $site->shortname;
+                $eventdata->userto           = $userto;
+                $eventdata->subject          = $postsubject;
+                $eventdata->fullmessage      = $posttext;
+                $eventdata->fullmessageformat = FORMAT_PLAIN;
+                $eventdata->fullmessagehtml  = $posthtml;
+                $eventdata->smallmessage     = '';
+                if ( events_trigger('message_send', $eventdata) > 0){
                     mtrace("ERROR!");
                     echo "Error: mod/forum/cron.php: Could not send out digest mail to user $userto->id ($userto->email)... not trying again.\n";
                     add_to_log($course->id, 'forum', 'mail digest error', '', '', $cm->id, $userto->id);
Index: mod/forum/version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/version.php,v
retrieving revision 1.73
diff -u -r1.73 version.php
--- mod/forum/version.php	13 Apr 2008 19:15:03 -0000	1.73
+++ mod/forum/version.php	23 Jul 2008 18:41:53 -0000
@@ -5,8 +5,8 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2007101512;
-$module->requires = 2007101509;  // Requires this Moodle version
+$module->version  = 2008071200;
+$module->requires = 2008071200;  // Requires this Moodle version
 $module->cron     = 60;
 
 ?>
Index: mod/forum/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/db/upgrade.php,v
retrieving revision 1.16
diff -u -r1.16 upgrade.php
--- mod/forum/db/upgrade.php	27 Jun 2008 17:28:22 -0000	1.16
+++ mod/forum/db/upgrade.php	23 Jul 2008 18:41:53 -0000
@@ -75,6 +75,16 @@
 
         upgrade_mod_savepoint($result, 2007101512, 'forum');
     }
+    
+    if ($result and $oldversion < 2008071200) {
+        $eventdata = new object();
+        $eventdata->modulename = 'forum';
+        $eventdata->modulefile = 'mod/forum/index.php';
+        events_trigger('message_provider_register', $eventdata);
+        
+        upgrade_mod_savepoint($result, 2008071200, 'forum');
+    }
+
 
 
     return $result;
Index: mod/lesson/essay.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/lesson/essay.php,v
retrieving revision 1.15
diff -u -r1.15 essay.php
--- mod/lesson/essay.php	13 Jun 2008 05:12:50 -0000	1.15
+++ mod/lesson/essay.php	23 Jul 2008 18:41:55 -0000
@@ -10,6 +10,7 @@
     require_once('../../config.php');
     require_once('locallib.php');
     require_once('lib.php');
+    require_once($CFG->libdir.'/eventslib.php');
 
     $id   = required_param('id', PARAM_INT);             // Course Module ID
     $mode = optional_param('mode', 'display', PARAM_ALPHA);
@@ -219,7 +220,19 @@
                     // Subject
                     $subject = get_string('essayemailsubject', 'lesson', format_string($pages[$attempt->pageid]->title,true));
 
+                    /*
                     if(email_to_user($users[$attempt->userid], $USER, $subject, $plaintxt, $message)) {
+                    */
+                    $eventdata = new object();
+                    $eventdata->modulename       = 'lesson';
+                    $eventdata->userfrom         = $USER;
+                    $eventdata->userto           = $users[$attempt->userid];
+                    $eventdata->subject          = $subject;
+                    $eventdata->fullmessage      = $plaintext;
+                    $eventdata->fullmessageformat = FORMAT_PLAIN;
+                    $eventdata->fullmessagehtml  = $message;
+                    $eventdata->smallmessage     = '';
+                    if ( events_trigger('message_send', $eventdata) == 0){
                         $essayinfo->sent = 1;
                         $attempt->useranswer = serialize($essayinfo);
                         $DB->update_record('lesson_attempts', $attempt);
Index: mod/lesson/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/lesson/lib.php,v
retrieving revision 1.48
diff -u -r1.48 lib.php
--- mod/lesson/lib.php	9 Jun 2008 12:29:40 -0000	1.48
+++ mod/lesson/lib.php	23 Jul 2008 18:41:55 -0000
@@ -7,8 +7,24 @@
  * @package lesson
  **/
 
+require_once($CFG->libdir.'/eventslib.php');
+
 define("LESSON_MAX_EVENT_LENGTH", "432000");   // 5 days maximum
 
+/** 
+ * Code to be executed when a module is installed
+ * now is just used to register the module as message provider
+ */ 
+function lesson_install() {
+    $eventdata = new object();
+    $eventdata->modulename = 'lesson';
+    $eventdata->modulefile = 'mod/lesson/index.php';
+    events_trigger('message_provider_register', $eventdata); 
+   
+    return true; 
+}
+
+
 /**
  * Given an object containing all the necessary data,
  * (defined by the form in mod_form.php) this function
Index: mod/lesson/version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/lesson/version.php,v
retrieving revision 1.41
diff -u -r1.41 version.php
--- mod/lesson/version.php	3 Mar 2008 11:49:35 -0000	1.41
+++ mod/lesson/version.php	23 Jul 2008 18:41:55 -0000
@@ -8,8 +8,8 @@
  * @package lesson
  **/
 
-$module->version  = 2007101509;  // The current module version (Date: YYYYMMDDXX)
-$module->requires = 2007101509;  // Requires this Moodle version
+$module->version  = 2008071200;  // The current module version (Date: YYYYMMDDXX)
+$module->requires = 2008071200;  // Requires this Moodle version
 $module->cron     = 0;           // Period for cron to check this module (secs)
 
 ?>
Index: mod/lesson/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/lesson/db/upgrade.php,v
retrieving revision 1.17
diff -u -r1.17 upgrade.php
--- mod/lesson/db/upgrade.php	22 Jun 2008 23:35:53 -0000	1.17
+++ mod/lesson/db/upgrade.php	23 Jul 2008 18:41:56 -0000
@@ -43,6 +43,15 @@
 
         upgrade_mod_savepoint($result, 2007072201, 'lesson');
     }
+    
+    if ($result and $oldversion < 2008071200) {
+        $eventdata = new object();
+        $eventdata->modulename = 'lesson';
+        $eventdata->modulefile = 'mod/lesson/index.php';
+        events_trigger('message_provider_register', $eventdata);
+        
+        upgrade_mod_savepoint($result, 2008071200, 'lesson');
+    }
 
     return $result;
 }
Index: mod/quiz/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/quiz/lib.php,v
retrieving revision 1.305
diff -u -r1.305 lib.php
--- mod/quiz/lib.php	11 Jul 2008 07:27:15 -0000	1.305
+++ mod/quiz/lib.php	23 Jul 2008 18:41:56 -0000
@@ -11,6 +11,7 @@
 
 require_once($CFG->libdir.'/pagelib.php');
 require_once($CFG->libdir.'/questionlib.php');
+require_once($CFG->libdir.'/eventslib.php');
 
 /// CONSTANTS ///////////////////////////////////////////////////////////////////
 
@@ -57,6 +58,19 @@
 
 /// FUNCTIONS ///////////////////////////////////////////////////////////////////
 
+/** 
+ * Code to be executed when a module is installed
+ * now is just used to register the module as message provider
+ */ 
+function quiz_install() {
+    $eventdata = new object();
+    $eventdata->modulename = 'quiz';
+    $eventdata->modulefile = 'mod/quiz/index.php';
+    events_trigger('message_provider_register', $eventdata); 
+   
+    return true; 
+}
+
 /**
  * Given an object containing all the necessary data,
  * (defined by the form in mod_form.php) this function
Index: mod/quiz/locallib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/quiz/locallib.php,v
retrieving revision 1.152
diff -u -r1.152 locallib.php
--- mod/quiz/locallib.php	15 Jul 2008 15:30:40 -0000	1.152
+++ mod/quiz/locallib.php	23 Jul 2008 18:41:56 -0000
@@ -27,6 +27,7 @@
 require_once($CFG->dirroot . '/mod/quiz/accessrules.php');
 require_once($CFG->dirroot . '/question/editlib.php');
 require_once($CFG->dirroot . '/mod/quiz/attemptlib.php');
+require_once($CFG->libdir  . '/eventslib.php');
 
 /// Constants ///////////////////////////////////////////////////////////////////
 
@@ -927,7 +928,20 @@
     $body = get_string('emailconfirmbody', 'quiz', $a);
 
     // send email and analyse result
+    $eventdata = new object();
+    $eventdata->modulename        = 'quiz';
+    $eventdata->userfrom          = get_admin();
+    $eventdata->userto            = $USER;
+    $eventdata->subject           = $subject;
+    $eventdata->fullmessage       = $body;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml   = '';
+    $eventdata->smallmessage      = '';
+    return (events_trigger('message_send', $eventdata) == 0);
+
+    /*
     return email_to_user($USER, get_admin(), $subject, $body);
+    */
 }
 
 /**
@@ -952,7 +966,20 @@
     $body = get_string('emailnotifybody', 'quiz', $a);
 
     // send email and analyse result
+    $eventdata = new object();
+    $eventdata->modulename        = 'quiz';
+    $eventdata->userfrom          = $USER;
+    $eventdata->userto            = $recipient;
+    $eventdata->subject           = $subject;
+    $eventdata->fullmessage       = $body;
+    $eventdata->fullmessageformat = FORMAT_PLAIN;
+    $eventdata->fullmessagehtml   = '';
+    $eventdata->smallmessage      = '';
+    return (events_trigger('message_send', $eventdata) == 0);
+
+    /*
     return email_to_user($recipient, $USER, $subject, $body);
+    */
 }
 
 /**
Index: mod/quiz/version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/quiz/version.php,v
retrieving revision 1.130
diff -u -r1.130 version.php
--- mod/quiz/version.php	20 Jun 2008 13:43:06 -0000	1.130
+++ mod/quiz/version.php	23 Jul 2008 18:41:57 -0000
@@ -5,8 +5,8 @@
 //  This fragment is called by moodle_needs_upgrading() and /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2008062001;   // The (date) version of this module
-$module->requires = 2007101509;   // Requires this Moodle version
+$module->version  = 2008071200;   // The (date) version of this module
+$module->requires = 2008071200;   // Requires this Moodle version
 $module->cron     = 0;            // How often should cron check this module (seconds)?
 
 ?>
Index: mod/quiz/db/upgrade.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/quiz/db/upgrade.php,v
retrieving revision 1.16
diff -u -r1.16 upgrade.php
--- mod/quiz/db/upgrade.php	22 Jun 2008 23:35:52 -0000	1.16
+++ mod/quiz/db/upgrade.php	23 Jul 2008 18:41:57 -0000
@@ -76,6 +76,16 @@
 
         upgrade_mod_savepoint($result, 2008062001, 'quiz');
     }
+    
+    if ($result and $oldversion < 2008071200) {
+        $eventdata = new object();
+        $eventdata->modulename = 'quiz';
+        $eventdata->modulefile = 'mod/quiz/index.php';
+        events_trigger('message_provider_register', $eventdata);
+        
+        upgrade_mod_savepoint($result, 2008071200, 'quiz');
+    }
+
 
 
     return $result;
Index: user/editadvanced.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/editadvanced.php,v
retrieving revision 1.36
diff -u -r1.36 editadvanced.php
--- user/editadvanced.php	7 Jul 2008 07:45:51 -0000	1.36
+++ user/editadvanced.php	23 Jul 2008 18:42:13 -0000
@@ -100,6 +100,7 @@
                 print_error('cannotcreateuser');
             }
             $usercreated = true;
+            
         } else {
             if (!$DB->update_record('user', $usernew)) {
                 print_error('cannotupdateuser');
@@ -146,9 +147,20 @@
 
         // reload from db
         $usernew = $DB->get_record('user', array('id'=>$usernew->id));
-
+        
         // trigger events
         if ($usercreated) {
+            //add default preferences for the messageprocessors (by default all users get email)
+            $providers = $DB->get_records('message_providers');
+            $preferences = array();
+            foreach ( $providers as $providerid => $provider){
+                $preferences[ 'message_provider_'.$provider->modulename.'_loggedin'  ] = 'popup';
+                $preferences[ 'message_provider_'.$provider->modulename.'_loggedoff'  ] = 'email';
+            }    
+            if (!set_user_preferences( $preferences, $usernew->id ) ){
+                print_error('Error updating user message preferences');
+            }
+        
             events_trigger('user_created', $usernew);
         } else {
             events_trigger('user_updated', $usernew);
@@ -167,7 +179,7 @@
                 redirect("$CFG->wwwroot/$CFG->admin/");
             } else {
                 redirect("$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id");
-            }
+            }            
         } else {
             redirect("$CFG->wwwroot/$CFG->admin/user.php");
         }
Index: user/tabs.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/tabs.php,v
retrieving revision 1.50
diff -u -r1.50 tabs.php
--- user/tabs.php	13 Jun 2008 07:07:45 -0000	1.50
+++ user/tabs.php	23 Jul 2008 18:42:13 -0000
@@ -238,6 +238,12 @@
             }
         }
     }
+    
+///added a new messaging tab
+    if (has_capability('moodle/user:editownmessageprofile', $systemcontext)) {
+        $toprow[] = new tabobject('editmessage', $wwwroot.'/message/edit.php?id='.$user->id.'&amp;course='.$course->id, get_string('editmymessage', 'message'));
+    }
+
 /// Add second row to display if there is one
 
     if (!empty($secondrow)) {

Moodle CVS Admin
ViewVC Help
Powered by ViewVC 1.0.7