mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 20:50:21 +01:00
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! Merged from 19_STABLE
This commit is contained in:
parent
becf869c6b
commit
6bdf4c99b3
@ -1651,6 +1651,22 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
|
||||
upgrade_main_savepoint($result, 2009041700);
|
||||
}
|
||||
|
||||
if ($result && $oldversion < 2009042600) {
|
||||
/// 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 = $DB->get_records_sql('SELECT DISTINCT u.id
|
||||
FROM {user} u
|
||||
JOIN {message} m ON m.useridfrom = u.id
|
||||
WHERE u.deleted = ?', array(1))) {
|
||||
foreach ($deletedusers as $deleteduser) {
|
||||
message_move_userfrom_unread2read($deleteduser->id); // move messages
|
||||
}
|
||||
}
|
||||
/// Main savepoint reached
|
||||
upgrade_main_savepoint($result, 2009042600);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
@ -2989,6 +2989,7 @@ function delete_user($user) {
|
||||
global $CFG, $DB;
|
||||
require_once($CFG->libdir.'/grouplib.php');
|
||||
require_once($CFG->libdir.'/gradelib.php');
|
||||
require_once($CFG->dirroot.'/message/lib.php');
|
||||
|
||||
// TODO: decide if this transaction is really needed
|
||||
$DB->begin_sql();
|
||||
@ -3001,6 +3002,9 @@ function delete_user($user) {
|
||||
}
|
||||
}
|
||||
|
||||
//move unread messages from this user to read
|
||||
message_move_userfrom_unread2read($user->id);
|
||||
|
||||
// remove from all groups
|
||||
$DB->delete_records('groups_members', array('userid'=>$user->id));
|
||||
|
||||
|
@ -20,11 +20,24 @@
|
||||
print_error('invaliduserid');
|
||||
}
|
||||
|
||||
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 = $DB->get_record("user", array("id"=>$userid2))) { // Check
|
||||
print_error('invaliduserid');
|
||||
}
|
||||
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;
|
||||
|
@ -1023,6 +1023,32 @@ 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) {
|
||||
|
||||
global $DB;
|
||||
|
||||
// move all unread messages from message table to messasge_read
|
||||
if ($messages = $DB->get_records_select('message', 'useridfrom = ?', array($userid), 'timecreated')) {
|
||||
foreach ($messages as $message) {
|
||||
$message->timeread = 0; //the message was never read
|
||||
$messageid = $message->id;
|
||||
unset($message->id);
|
||||
if ($DB->insert_record('message_read', $message)) {
|
||||
$DB->delete_records('message', array('id' => $messageid));
|
||||
$DB->delete_records('message_working', array('unreadmessageid' => $messageid));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function message_get_popup_messages($destuserid, $fromuserid=NULL){
|
||||
global $DB;
|
||||
|
||||
|
@ -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 = 2009041700; // YYYYMMDD = date of the last version bump
|
||||
$version = 2009042600; // YYYYMMDD = date of the last version bump
|
||||
// XX = daily increments
|
||||
|
||||
$release = '2.0 dev (Build: 20090426)'; // Human-friendly version name
|
||||
|
Loading…
x
Reference in New Issue
Block a user