Esempio n. 1
0
        $anonforum = $anonforums[$anonforumid];
        $modcontext = context_module::instance($cm->id);
        $cansub = false;
        if (has_capability('mod/anonforum:viewdiscussion', $modcontext)) {
            $cansub = true;
        }
        if ($cansub && $cm->visible == 0 && !has_capability('mod/anonforum:managesubscriptions', $modcontext)) {
            $cansub = false;
        }
        if (!anonforum_is_forcesubscribed($anonforum)) {
            $subscribed = anonforum_is_subscribed($USER->id, $anonforum);
            if ((has_capability('moodle/course:manageactivities', $coursecontext, $USER->id) || $anonforum->forcesubscribe != ANONFORUM_DISALLOWSUBSCRIBE) && $subscribe && !$subscribed && $cansub) {
                anonforum_subscribe($USER->id, $anonforumid);
            } else {
                if (!$subscribe && $subscribed) {
                    anonforum_unsubscribe($USER->id, $anonforumid);
                }
            }
        }
    }
    $returnto = anonforum_go_back_to("index.php?id={$course->id}");
    $shortname = format_string($course->shortname, true, array('context' => context_course::instance($course->id)));
    if ($subscribe) {
        redirect($returnto, get_string('nowallsubscribed', 'anonforum', $shortname), 1);
    } else {
        redirect($returnto, get_string('nowallunsubscribed', 'anonforum', $shortname), 1);
    }
}
/// First, let's process the general anonymous forums and build up a display
if ($generalanonforums) {
    foreach ($generalanonforums as $anonforum) {
Esempio n. 2
0
/**
 * Given a new post, subscribes or unsubscribes as appropriate.
 * Returns some text which describes what happened.
 *
 * @global objec
 * @param object $post
 * @param object $anonforum
 */
function anonforum_post_subscription($post, $anonforum)
{
    global $USER;
    $action = '';
    $subscribed = anonforum_is_subscribed($USER->id, $anonforum);
    if ($anonforum->forcesubscribe == ANONFORUM_FORCESUBSCRIBE) {
        // database ignored
        return "";
    } elseif ($anonforum->forcesubscribe == ANONFORUM_DISALLOWSUBSCRIBE && !has_capability('moodle/course:manageactivities', context_course::instance($anonforum->course), $USER->id)) {
        if ($subscribed) {
            $action = 'unsubscribe';
            // sanity check, following MDL-14558
        } else {
            return "";
        }
    } else {
        // go with the user's choice
        if (isset($post->subscribe)) {
            // no change
            if (!empty($post->subscribe) && $subscribed || empty($post->subscribe) && !$subscribed) {
                return "";
            } elseif (!empty($post->subscribe) && !$subscribed) {
                $action = 'subscribe';
            } elseif (empty($post->subscribe) && $subscribed) {
                $action = 'unsubscribe';
            }
        }
    }
    $info = new stdClass();
    $info->anonforum = $anonforum->name;
    if (empty($post->anonymouspost)) {
        $info->name = fullname($USER);
    } else {
        $info->name = get_string('anonymoususer', 'anonforum');
    }
    switch ($action) {
        case 'subscribe':
            anonforum_subscribe($USER->id, $post->anonforum);
            return "<p>" . get_string("nowsubscribed", "anonforum", $info) . "</p>";
        case 'unsubscribe':
            anonforum_unsubscribe($USER->id, $post->anonforum);
            return "<p>" . get_string("nownotsubscribed", "anonforum", $info) . "</p>";
    }
}
}
$info = new stdClass();
$info->name = fullname($user);
$info->anonforum = format_string($anonforum->name);
if (anonforum_is_subscribed($user->id, $anonforum->id)) {
    if (is_null($sesskey)) {
        // we came here via link in email
        $PAGE->set_title($course->shortname);
        $PAGE->set_heading($course->fullname);
        echo $OUTPUT->header();
        echo $OUTPUT->confirm(get_string('confirmunsubscribe', 'anonforum', format_string($anonforum->name)), new moodle_url($PAGE->url, array('sesskey' => sesskey())), new moodle_url('/mod/anonforum/view.php', array('f' => $id)));
        echo $OUTPUT->footer();
        exit;
    }
    require_sesskey();
    if (anonforum_unsubscribe($user->id, $anonforum->id)) {
        if (empty($anonforum->anonymous)) {
            $params = array('context' => $context, 'courseid' => $course->id, 'anonymous' => 1, 'other' => array('forumid' => $anonforum->id, '$cm->id' => $cm->id, 'action' => 'unsubscribe'));
            $event = mod_anonforum\event\subscription_deleted::create($params);
            $event->add_record_snapshot('anonforum', $anonforum);
            $event->trigger();
        }
        redirect($returnto, get_string("nownotsubscribed", "anonforum", $info), 1);
    } else {
        print_error('cannotunsubscribe', 'anonforum', $_SERVER["HTTP_REFERER"]);
    }
} else {
    // subscribe
    if ($anonforum->forcesubscribe == ANONFORUM_DISALLOWSUBSCRIBE && !has_capability('mod/anonforum:managesubscriptions', $context)) {
        print_error('disallowsubscribe', 'anonforum', $_SERVER["HTTP_REFERER"]);
    }
    // It has to be one or the other, not both or neither.
    if (!($subscribe xor $unsubscribe)) {
        print_error('invalidaction');
    }
    if ($subscribe) {
        $users = $subscriberselector->get_selected_users();
        foreach ($users as $user) {
            if (!anonforum_subscribe($user->id, $id)) {
                print_error('cannotaddsubscriber', 'anonforum', '', $user->id);
            }
        }
    } else {
        if ($unsubscribe) {
            $users = $existingselector->get_selected_users();
            foreach ($users as $user) {
                if (!anonforum_unsubscribe($user->id, $id)) {
                    print_error('cannotremovesubscriber', 'anonforum', '', $user->id);
                }
            }
        }
    }
    $subscriberselector->invalidate_selected_users();
    $existingselector->invalidate_selected_users();
    $subscriberselector->set_existing_subscribers($existingselector->find_users(''));
}
$strsubscribers = get_string("subscribers", "anonforum");
$PAGE->navbar->add($strsubscribers);
$PAGE->set_title($strsubscribers);
$PAGE->set_heading($COURSE->fullname);
if (has_capability('mod/anonforum:managesubscriptions', $context)) {
    $PAGE->set_button(anonforum_update_subscriptions_button($course->id, $id));