Merge branch 'MDL-33487' of git://github.com/danpoltawski/moodle
authorSam Hemelryk <sam@moodle.com>
Tue, 5 Jun 2012 22:06:17 +0000 (10:06 +1200)
committerSam Hemelryk <sam@moodle.com>
Tue, 5 Jun 2012 22:06:17 +0000 (10:06 +1200)
1  2 
mod/forum/lib.php

diff --combined mod/forum/lib.php
@@@ -4611,63 -4611,6 +4611,63 @@@ function forum_get_subscribed_forums($c
      }
  }
  
 +/**
 + * Returns an array of forums that the current user is subscribed to and is allowed to unsubscribe from
 + *
 + * @return array An array of unsubscribable forums
 + */
 +function forum_get_optional_subscribed_forums() {
 +    global $USER, $DB;
 +
 +    // Get courses that $USER is enrolled in and can see
 +    $courses = enrol_get_my_courses();
 +    if (empty($courses)) {
 +        return array();
 +    }
 +
 +    $courseids = array();
 +    foreach($courses as $course) {
 +        $courseids[] = $course->id;
 +    }
 +    list($coursesql, $courseparams) = $DB->get_in_or_equal($courseids, SQL_PARAMS_NAMED, 'c');
 +
 +    // get all forums from the user's courses that they are subscribed to and which are not set to forced
 +    $sql = "SELECT f.id, cm.id as cm, cm.visible
 +              FROM {forum} f
 +                   JOIN {course_modules} cm ON cm.instance = f.id
 +                   JOIN {modules} m ON m.name = :modulename AND m.id = cm.module
 +                   LEFT JOIN {forum_subscriptions} fs ON (fs.forum = f.id AND fs.userid = :userid)
 +             WHERE f.forcesubscribe <> :forcesubscribe AND fs.id IS NOT NULL
 +                   AND cm.course $coursesql";
 +    $params = array_merge($courseparams, array('modulename'=>'forum', 'userid'=>$USER->id, 'forcesubscribe'=>FORUM_FORCESUBSCRIBE));
 +    if (!$forums = $DB->get_records_sql($sql, $params)) {
 +        return array();
 +    }
 +
 +    $unsubscribableforums = array(); // Array to return
 +
 +    foreach($forums as $forum) {
 +
 +        if (empty($forum->visible)) {
 +            // the forum is hidden
 +            $context = context_module::instance($forum->cm);
 +            if (!has_capability('moodle/course:viewhiddenactivities', $context)) {
 +                // the user can't see the hidden forum
 +                continue;
 +            }
 +        }
 +
 +        // subscribe.php only requires 'mod/forum:managesubscriptions' when
 +        // unsubscribing a user other than yourself so we don't require it here either
 +
 +        // A check for whether the forum has subscription set to forced is built into the SQL above
 +
 +        $unsubscribableforums[] = $forum;
 +    }
 +
 +    return $unsubscribableforums;
 +}
 +
  /**
   * Adds user to the subscriber list
   *
@@@ -6397,7 -6340,7 +6397,7 @@@ function forum_tp_count_discussion_unre
             'WHERE p.discussion = ? '.
                  'AND p.modified >= ? AND r.id is NULL';
  
-     return $DB->count_records_sql($sql, array($userid, $cutoffdate, $discussionid));
+     return $DB->count_records_sql($sql, array($userid, $discussionid, $cutoffdate));
  }
  
  /**