require_sesskey(); switch ($mode) { case HSUFORUM_CHOOSESUBSCRIBE: // 0 hsuforum_forcesubscribe($forum->id, HSUFORUM_CHOOSESUBSCRIBE); redirect($returnto, get_string("everyonecannowchoose", "hsuforum"), 1); break; case HSUFORUM_FORCESUBSCRIBE: // 1 hsuforum_forcesubscribe($forum->id, HSUFORUM_FORCESUBSCRIBE); redirect($returnto, get_string("everyoneisnowsubscribed", "hsuforum"), 1); break; case HSUFORUM_INITIALSUBSCRIBE: // 2 if ($forum->forcesubscribe != HSUFORUM_INITIALSUBSCRIBE) { $users = hsuforum_get_potential_subscribers($context, 0, 'u.id, u.email', ''); foreach ($users as $user) { hsuforum_subscribe($user->id, $forum->id); } } hsuforum_forcesubscribe($forum->id, HSUFORUM_INITIALSUBSCRIBE); redirect($returnto, get_string("everyoneisnowsubscribed", "hsuforum"), 1); break; case HSUFORUM_DISALLOWSUBSCRIBE: // 3 hsuforum_forcesubscribe($forum->id, HSUFORUM_DISALLOWSUBSCRIBE); redirect($returnto, get_string("noonecansubscribenow", "hsuforum"), 1); break; default: print_error(get_string('invalidforcesubscribe', 'hsuforum')); }
/** * Returns list of user objects that are subscribed to this forum * * @global object * @global object * @param object $course the course * @param forum $forum the forum * @param integer $groupid group id, or 0 for all. * @param object $context the forum context, to save re-fetching it where possible. * @param string $fields requested user fields (with "u." table prefix) * @return array list of users. */ function hsuforum_subscribed_users($course, $forum, $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('hsuforum', $forum->id, $course->id); $context = context_module::instance($cm->id); } if (hsuforum_is_forcesubscribed($forum)) { $results = hsuforum_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['forumid'] = $forum->id; $results = $DB->get_records_sql("SELECT {$fields}\n FROM {user} u\n JOIN ({$esql}) je ON je.id = u.id\n JOIN {hsuforum_subscriptions} s ON s.userid = u.id\n WHERE s.forum = :forumid\n ORDER BY u.email ASC", $params); } // Guest user should never be subscribed to a forum. unset($results[$CFG->siteguest]); $cm = get_coursemodule_from_instance('hsuforum', $forum->id); $modinfo = get_fast_modinfo($cm->course); $mod = $modinfo->get_cm($cm->id); $info = new \core_availability\info_module($mod); return $info->filter_user_list($results); }