require_sesskey();
 switch ($mode) {
     case ANONFORUM_CHOOSESUBSCRIBE:
         // 0
         anonforum_forcesubscribe($anonforum->id, ANONFORUM_CHOOSESUBSCRIBE);
         redirect($returnto, get_string("everyonecannowchoose", "anonforum"), 1);
         break;
     case ANONFORUM_FORCESUBSCRIBE:
         // 1
         anonforum_forcesubscribe($anonforum->id, ANONFORUM_FORCESUBSCRIBE);
         redirect($returnto, get_string("everyoneisnowsubscribed", "anonforum"), 1);
         break;
     case ANONFORUM_INITIALSUBSCRIBE:
         // 2
         if ($anonforum->forcesubscribe != ANONFORUM_INITIALSUBSCRIBE) {
             $users = anonforum_get_potential_subscribers($context, 0, 'u.id, u.email', '');
             foreach ($users as $user) {
                 anonforum_subscribe($user->id, $anonforum->id);
             }
         }
         anonforum_forcesubscribe($anonforum->id, ANONFORUM_INITIALSUBSCRIBE);
         redirect($returnto, get_string("everyoneisnowsubscribed", "anonforum"), 1);
         break;
     case ANONFORUM_DISALLOWSUBSCRIBE:
         // 3
         anonforum_forcesubscribe($anonforum->id, ANONFORUM_DISALLOWSUBSCRIBE);
         redirect($returnto, get_string("noonecansubscribenow", "anonforum"), 1);
         break;
     default:
         print_error(get_string('invalidforcesubscribe', 'anonforum'));
 }
/**
 * Returns list of user objects that are subscribed to this anonforum
 *
 * @global object
 * @global object
 * @param object $course the course
 * @param anonforum $anonforum the anonforum
 * @param integer $groupid group id, or 0 for all.
 * @param object $context the anonforum context, to save re-fetching it where possible.
 * @param string $fields requested user fields (with "u." table prefix)
 * @return array list of users.
 */
function anonforum_subscribed_users($course, $anonforum, $groupid = 0, $context = null, $fields = null)
{
    global $CFG, $DB;
    $allnames = get_all_user_name_fields(true, 'u');
    if (empty($fields)) {
        $fields = "u.id,\n                  u.username,\n                  {$allnames},\n                  u.maildisplay,\n                  u.mailformat,\n                  u.maildigest,\n                  u.imagealt,\n                  u.email,\n                  u.emailstop,\n                  u.city,\n                  u.country,\n                  u.lastaccess,\n                  u.lastlogin,\n                  u.picture,\n                  u.timezone,\n                  u.theme,\n                  u.lang,\n                  u.trackforums,\n                  u.mnethostid";
    }
    if (empty($context)) {
        $cm = get_coursemodule_from_instance('anonforum', $anonforum->id, $course->id);
        $context = context_module::instance($cm->id);
    }
    if (anonforum_is_forcesubscribed($anonforum)) {
        $results = anonforum_get_potential_subscribers($context, $groupid, $fields, "u.email ASC");
    } else {
        // only active enrolled users or everybody on the frontpage
        list($esql, $params) = get_enrolled_sql($context, '', $groupid, true);
        $params['anonforumid'] = $anonforum->id;
        $results = $DB->get_records_sql("SELECT {$fields}\n                                           FROM {user} u\n                                           JOIN ({$esql}) je ON je.id = u.id\n                                           JOIN {anonforum_subscriptions} s ON s.userid = u.id\n                                          WHERE s.anonforum = :anonforumid\n                                       ORDER BY u.email ASC", $params);
    }
    // Guest user should never be subscribed to a anonymous forum.
    unset($results[$CFG->siteguest]);
    return $results;
}