fixed double count in read messages

Former-commit-id: e3661ad675c7dcd70fbea3bc5a41b3f103a376a0
This commit is contained in:
fbsanchez 2019-02-11 15:28:38 +01:00
parent 7893827652
commit d2649bb51c
2 changed files with 14 additions and 3 deletions

View File

@ -363,9 +363,11 @@ function messages_get_count(
$sql = sprintf(
'SELECT count(*) FROM (
SELECT tm.*, utimestamp_read > 0 as "read" FROM tmensajes tm
SELECT DISTINCT tm.*, utimestamp_read > 0 as "read"
FROM tmensajes tm
LEFT JOIN tnotification_user nu
ON tm.id_mensaje=nu.id_mensaje
AND nu.id_user="%s"
LEFT JOIN (tnotification_group ng
INNER JOIN tusuario_perfil up
ON ng.id_group=up.id_grupo
@ -377,6 +379,7 @@ function messages_get_count(
%s',
$user,
$user,
$user,
$read
);
@ -467,11 +470,14 @@ function messages_get_overview(
ON tns.id=tm.id_source';
}
// Using distinct because could be double assignment due group/user.
$sql = sprintf(
'SELECT * FROM (
SELECT tm.*, utimestamp_read > 0 as "read" %s FROM tmensajes tm
SELECT DISTINCT tm.*, utimestamp_read > 0 as "read" %s
FROM tmensajes tm
LEFT JOIN tnotification_user nu
ON tm.id_mensaje=nu.id_mensaje
AND nu.id_user="%s"
LEFT JOIN (tnotification_group ng
INNER JOIN tusuario_perfil up
ON ng.id_group=up.id_grupo
@ -486,6 +492,7 @@ function messages_get_overview(
ORDER BY %s
%s',
$source_fields,
$config['id_user'],
$source_join,
$config['id_user'],
$config['id_user'],

View File

@ -131,10 +131,13 @@ function check_notification_readable(int $id_message)
return false;
}
// Using distinct to avoid double response on group messages read by user.
$sql = sprintf(
'SELECT tm.*, utimestamp_read > 0 as "read" FROM tmensajes tm
'SELECT DISTINCT tm.*, utimestamp_read > 0 as "read"
FROM tmensajes tm
LEFT JOIN tnotification_user nu
ON tm.id_mensaje=nu.id_mensaje
AND nu.id_user="%s"
AND tm.id_mensaje=%d
LEFT JOIN (tnotification_group ng
INNER JOIN tusuario_perfil up
@ -143,6 +146,7 @@ function check_notification_readable(int $id_message)
) ON tm.id_mensaje=ng.id_mensaje
WHERE utimestamp_erased is null
AND (nu.id_user="%s" OR (up.id_usuario="%s" AND ng.id_group=0))',
$config['id_user'],
$id_message,
$config['id_user'],
$config['id_user']