MDL-16824 messaging - move unread messages from deleted users to message_read.

Pending to commit changes to uploaduser.php. Credit goes to Anthony Borrow. Thanks!
This commit is contained in:
stronk7
2009-04-26 21:12:55 +00:00
parent 851c918d23
commit 156f59304e
5 changed files with 58 additions and 1 deletions
+16
View File
@@ -3131,6 +3131,22 @@ function xmldb_main_upgrade($oldversion=0) {
upgrade_main_savepoint($result, 2007101546.02);
}
if ($result && $oldversion < 2007101546.03) {
/// Deleting orphaned messages from deleted users.
require_once($CFG->dirroot.'/message/lib.php');
/// Detect deleted users with messages sent(useridfrom) and not read
if ($deletedusers = get_records_sql("SELECT DISTINCT u.id
FROM {$CFG->prefix}user u
JOIN {$CFG->prefix}message m ON m.useridfrom = u.id
WHERE u.deleted = 1")) {
foreach ($deletedusers as $deleteduser) {
message_move_userfrom_unread2read($deleteduser->id); // move messages
}
}
/// Main savepoint reached
upgrade_main_savepoint($result, 2007101546.03);
}
return $result;
}
+4
View File
@@ -3019,6 +3019,7 @@ function delete_user($user) {
global $CFG;
require_once($CFG->libdir.'/grouplib.php');
require_once($CFG->libdir.'/gradelib.php');
require_once($CFG->dirroot.'/message/lib.php');
begin_sql();
@@ -3029,6 +3030,9 @@ function delete_user($user) {
}
}
//move unread messages from this user to read
message_move_userfrom_unread2read($user->id);
// remove from all groups
delete_records('groups_members', 'userid', $user->id);
+13
View File
@@ -20,11 +20,24 @@
error("User ID 1 was incorrect");
}
if ($user1->deleted) {
print_header();
print_heading(get_string('userdeleted').': '.$userid1);
print_footer();
die;
}
if (has_capability('moodle/site:readallmessages', get_context_instance(CONTEXT_SYSTEM))) { // Able to see any discussion
$userid2 = optional_param('user2', $USER->id, PARAM_INT);
if (! $user2 = get_record("user", "id", $userid2)) { // Check
error("User ID 2 was incorrect");
}
if ($user2->deleted) {
print_header();
print_heading(get_string('userdeleted').': '.$userid2);
print_footer();
die;
}
} else {
$userid2 = $USER->id; // Can only see messages involving yourself
$user2 = $USER;
+24
View File
@@ -1064,4 +1064,28 @@ function message_print_contactlist_user($contact, $incontactlist = true){
echo '</tr>';
}
/**
* Moves unread messages from message table to message_read for a given from user
* @param object $userid User id
* @return boolean success
*/
function message_move_userfrom_unread2read($userid) {
// move all unread messages from message table to messasge_read
if ($messages = get_records_select('message', "useridfrom = $userid", 'timecreated')) {
foreach ($messages as $message) {
$message->timeread = 0; //the message was never read
$message = addslashes_object($message);
$messageid = $message->id;
unset($message->id);
if (insert_record('message_read', $message)) {
delete_records('message', 'id', $messageid);
} else {
return false;
}
}
}
return true;
}
?>
+1 -1
View File
@@ -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 = 2007101546.02; // YYYYMMDD = date of the 1.9 branch (don't change)
$version = 2007101546.03; // YYYYMMDD = date of the 1.9 branch (don't change)
// X = release number 1.9.[0,1,2,3,4,5...]
// Y.YY = micro-increments between releases