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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user