Be able to get messages from users who are deleted. Fixes bug #11909.
This commit is contained in:
parent
f90a3f7c58
commit
7d71a5d59e
3 changed files with 26 additions and 11 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
7.10.3
|
7.10.3
|
||||||
- fixed #11903: Unnecessary debug in Thingy
|
- fixed #11903: Unnecessary debug in Thingy
|
||||||
- fixed #11908: Inbox messages linger after deleting a user
|
- fixed #11908: Inbox messages linger after deleting a user
|
||||||
|
- fixed #11909: Wrong message count in the inbox
|
||||||
|
|
||||||
7.10.2
|
7.10.2
|
||||||
- fixed #11884: Editing Templates impossible / Code editor not loaded
|
- fixed #11884: Editing Templates impossible / Code editor not loaded
|
||||||
|
|
|
||||||
|
|
@ -499,20 +499,13 @@ ibox.messageId, ibox.subject, ibox.sentBy, ibox.dateStamp,
|
||||||
SELECT
|
SELECT
|
||||||
}
|
}
|
||||||
|
|
||||||
my $messageLimit = 20_000;
|
|
||||||
my $limitHalf = $messageLimit / 2;
|
|
||||||
my $limitQuarter = $messageLimit / 4;
|
|
||||||
my $userGroups = $session->db->quoteAndJoin( $user->getGroupIdsRecursive );
|
|
||||||
$userGroups = "''" if $userGroups eq "";
|
|
||||||
|
|
||||||
# for performance purposes don't use datasets larger than 20000 no matter how man messages are in the inbox
|
|
||||||
my $sql = qq{
|
my $sql = qq{
|
||||||
SELECT
|
SELECT
|
||||||
$select
|
$select
|
||||||
FROM inbox_messageState
|
FROM inbox_messageState
|
||||||
JOIN inbox ibox USING (messageId)
|
JOIN inbox ibox USING (messageId)
|
||||||
JOIN users on users.userId = ibox.sentBy
|
LEFT OUTER JOIN users on users.userId = ibox.sentBy
|
||||||
JOIN userProfileData on userProfileData.userId = ibox.sentBy
|
LEFT OUTER JOIN userProfileData on userProfileData.userId = ibox.sentBy
|
||||||
WHERE inbox_messageState.messageId = ibox.messageId
|
WHERE inbox_messageState.messageId = ibox.messageId
|
||||||
AND inbox_messageState.userId = '$userId'
|
AND inbox_messageState.userId = '$userId'
|
||||||
AND inbox_messageState.deleted = 0
|
AND inbox_messageState.deleted = 0
|
||||||
|
|
|
||||||
25
t/Inbox.t
25
t/Inbox.t
|
|
@ -17,13 +17,13 @@ use WebGUI::Session;
|
||||||
use WebGUI::Inbox;
|
use WebGUI::Inbox;
|
||||||
use WebGUI::User;
|
use WebGUI::User;
|
||||||
|
|
||||||
use Test::More tests => 15; # increment this value for each test you create
|
use Test::More tests => 20; # increment this value for each test you create
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
||||||
# get a user so we can test retrieving messages for a specific user
|
# get a user so we can test retrieving messages for a specific user
|
||||||
my $admin = WebGUI::User->new($session, 3);
|
my $admin = WebGUI::User->new($session, 3);
|
||||||
WebGUI::Test->addToCleanup(sub { WebGUI::Test->cleanupAdminInbox; });
|
WebGUI::Test->addToCleanup(sub { WebGUI::Test->cleanupAdminInbox($session); });
|
||||||
|
|
||||||
# Begin tests by getting an inbox object
|
# Begin tests by getting an inbox object
|
||||||
my $inbox = WebGUI::Inbox->new($session);
|
my $inbox = WebGUI::Inbox->new($session);
|
||||||
|
|
@ -132,4 +132,25 @@ my $messages = $inbox->getMessagesForUser($admin);
|
||||||
$messages->[0]->setRead($admin->userId);
|
$messages->[0]->setRead($admin->userId);
|
||||||
is($inbox->getUnreadMessageCount($admin->userId), 3, '... really tracks unread messages');
|
is($inbox->getUnreadMessageCount($admin->userId), 3, '... really tracks unread messages');
|
||||||
|
|
||||||
|
is(scalar @{ $inbox->getMessagesForUser($admin) }, 4, 'Four messages in the inbox');
|
||||||
|
$inbox->deleteMessagesForUser($admin);
|
||||||
|
is(scalar @{ $inbox->getMessagesForUser($admin) }, 0, 'deleteMessagesForUser removed all messages');
|
||||||
|
|
||||||
|
my $dead_user = WebGUI::User->create($session);
|
||||||
|
WebGUI::Test->addToCleanup($dead_user);
|
||||||
|
$inbox->addMessage({
|
||||||
|
message => "This method should be removed",
|
||||||
|
userId => 3,
|
||||||
|
sentBy => $dead_user->userId,
|
||||||
|
status => 'unread',
|
||||||
|
},{
|
||||||
|
no_email => 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
is(scalar @{ $inbox->getMessagesForUser($admin) }, 1, 'one message from dead_user in the inbox');
|
||||||
|
$dead_user->delete;
|
||||||
|
is(scalar @{ $inbox->getMessagesForUser($admin) }, 1, '... after deleting the user, still 1 message');
|
||||||
|
$inbox->deleteMessagesForUser($admin);
|
||||||
|
is(scalar @{ $inbox->getMessagesForUser($admin) }, 0, '... after deleteMessagesForUser, all messages gone again');
|
||||||
|
|
||||||
#vim:ft=perl
|
#vim:ft=perl
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue