コード例 #1
0
 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'));
 }
コード例 #2
0
/**
 * 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);
}