diff --git a/classes/repos/notification_repo.php b/classes/repos/notification_repo.php index 94ff572d..a3c557dc 100644 --- a/classes/repos/notification_repo.php +++ b/classes/repos/notification_repo.php @@ -130,10 +130,10 @@ public static function get_notification_for_course_user_or_null($notification_id return $notification; } - private static function get_all_for_course_sql($course_id, $user_id = null, $sort_by, $sort_dir, $as_count = false) + private static function get_all_for_course_sql($course_id, $user_id = null, $sort_by = null, $sort_dir, $as_count = false) { $sql = $as_count - ? 'SELECT COUNT(DISTINCT n.id) ' + ? 'SELECT COUNT(res.id) FROM (select DISTINCT id' . ($sort_by? ','.$sort_by:'') : 'SELECT DISTINCT n.* '; $sql .= 'FROM {block_quickmail_notifs} n @@ -143,8 +143,11 @@ private static function get_all_for_course_sql($course_id, $user_id = null, $sor $sql .= ' AND n.user_id = :user_id'; } - $sql .= ' AND n.timedeleted = 0 - ORDER BY ' . $sort_by . ' ' . $sort_dir; + $sql .= ' AND n.timedeleted = 0 ORDER BY ' . $sort_by . ' ' . $sort_dir; + + $sql .= $as_count + ? ') as res ' + : ''; return $sql; } diff --git a/classes/repos/queued_repo.php b/classes/repos/queued_repo.php index 9da54d69..64c287cb 100644 --- a/classes/repos/queued_repo.php +++ b/classes/repos/queued_repo.php @@ -180,25 +180,31 @@ public static function get_for_user($user_id, $course_id = 0, $params = []) return $repo->result; } - private static function get_for_user_sql($course_id, $sort_by, $sort_dir, $as_count = false) - { - $sql = $as_count - ? 'SELECT COUNT(DISTINCT m.id) ' - : 'SELECT DISTINCT m.* '; + private static function get_for_user_sql($course_id, $sort_by = null, $sort_dir, $as_count = false) + { + + + $sql = $as_count + ? 'SELECT COUNT(res.id) FROM (select DISTINCT id' . ($sort_by? ','.$sort_by:'') + : 'SELECT DISTINCT m.* '; - $sql .= 'FROM {block_quickmail_messages} m + $sql .= ' FROM {block_quickmail_messages} m WHERE m.user_id = :user_id'; - if ($course_id) { - $sql .= ' AND m.course_id = :course_id'; - } - - $sql .= ' AND m.to_send_at <> 0 AND m.timedeleted = 0 AND m.sent_at = 0 AND m.is_draft = 0 ORDER BY ' . $sort_by . ' ' . $sort_dir; + if ($course_id) { + $sql .= ' AND m.course_id = :course_id'; + } - return $sql; - } + $sql .= ' AND m.to_send_at <> 0 AND m.timedeleted = 0 AND m.sent_at = 0 AND m.is_draft = 0 ORDER BY ' . $sort_by . ' ' . $sort_dir; - /** + $sql .= $as_count + ? ') as res ' + : ''; + + return $sql; + } + + /** * Returns an array of all messages that should be sent by the system right now * * @return array diff --git a/classes/repos/sent_repo.php b/classes/repos/sent_repo.php index 8645f891..932a903e 100644 --- a/classes/repos/sent_repo.php +++ b/classes/repos/sent_repo.php @@ -114,21 +114,25 @@ public static function get_for_user($user_id, $course_id = 0, $params = []) return $repo->result; } - private static function get_for_user_sql($course_id, $sort_by, $sort_dir, $as_count = false) + private static function get_for_user_sql($course_id, $sort_by = null, $sort_dir, $as_count = false) { $sql = $as_count - ? 'SELECT COUNT(DISTINCT m.id) ' + ? 'SELECT COUNT(res.id) FROM (select DISTINCT id' . ($sort_by? ','.$sort_by:'') : 'SELECT DISTINCT m.* '; - $sql .= 'FROM {block_quickmail_messages} m + $sql .= ' FROM {block_quickmail_messages} m WHERE m.user_id = :user_id'; if ($course_id) { $sql .= ' AND m.course_id = :course_id'; } - + $sql .= ' AND m.is_draft = 0 AND m.timedeleted = 0 AND m.sent_at > 0 ORDER BY ' . $sort_by . ' ' . $sort_dir; + $sql .= $as_count + ? ') as res ' + : ''; + return $sql; }