@@ -470,18 +470,29 @@ public static function get_untracked_moodleoverflows($userid, $courseid) {
470470 *
471471 * @return int|mixed
472472 */
473- public static function moodleoverflow_count_unread_posts_moodleoverflow ($ cm, $ course ) {
473+ public static function moodleoverflow_count_unread_posts_moodleoverflow ($ cm ) {
474474 global $ DB , $ USER ;
475475
476- // Get the moodleoverflow ids.
477- $ moodleoverflowid = $ cm ->instance ;
478-
476+ $ moodleoverflow = $ DB ->get_record_sql ("SELECT m.*, tm.id as hasdisabledtracking " .
477+ "FROM {moodleoverflow} m " .
478+ "LEFT JOIN {moodleoverflow_tracking} tm ON m.id = tm.moodleoverflowid AND tm.userid = :userid " .
479+ "WHERE m.id = :moodleoverflowid " , ['userid ' => $ USER ->id , 'moodleoverflowid ' => $ cm ->instance ]);
480+
481+ // Return if tracking is off, or ((optional or forced, but forced disallowed by admin) and user has disabled tracking).
482+ if ($ moodleoverflow ->trackingtype == MOODLEOVERFLOW_TRACKING_OFF || (
483+ ($ moodleoverflow ->trackingtype == MOODLEOVERFLOW_TRACKING_OPTIONAL || (
484+ $ moodleoverflow ->trackingtype == MOODLEOVERFLOW_TRACKING_FORCED &&
485+ !get_config ('moodleoverflow ' , 'allowforcedreadtracking ' )
486+ )
487+ ) && $ moodleoverflow ->hasdisabledtracking )) {
488+ return 0 ;
489+ }
479490 // Get the current timestamp and the cutoffdate.
480- $ now = round (time (), -2 );
491+ $ now = round (time (), -2 );
481492 $ cutoffdate = $ now - (get_config ('moodleoverflow ' , 'oldpostdays ' ) * 24 * 60 * 60 );
482493
483494 // Define a sql-query.
484- $ params = array ($ USER ->id , $ moodleoverflowid , $ cutoffdate );
495+ $ params = array ($ USER ->id , $ cm -> instance , $ cutoffdate );
485496 $ sql = "SELECT COUNT(p.id)
486497 FROM {moodleoverflow_posts} p
487498 JOIN {moodleoverflow_discussions} d ON p.discussion = d.id
0 commit comments