Exemplo n.º 1
0
        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'));
    }
}
if (anonforum_is_forcesubscribed($anonforum)) {
    redirect($returnto, get_string("everyoneisnowsubscribed", "anonforum"), 1);
}
$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);
Exemplo n.º 2
0
     // there should not be any links leading to this place, just redirect
     redirect(new moodle_url('/mod/anonforum/index.php', array('id' => $id)), get_string('subscribeenrolledonly', 'anonforum'));
 }
 // Can proceed now, the user is not guest and is enrolled
 foreach ($modinfo->get_instances_of('anonforum') as $anonforumid => $cm) {
     $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);
Exemplo n.º 3
0
/**
 * Adds module specific settings to the settings block
 *
 * @param settings_navigation $settings The settings navigation object
 * @param navigation_node $anonforumnode The node to add module settings to
 */
function anonforum_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $anonforumnode)
{
    global $USER, $PAGE, $CFG, $DB, $OUTPUT;
    $anonforumobject = $DB->get_record("anonforum", array("id" => $PAGE->cm->instance));
    if (empty($PAGE->cm->context)) {
        $PAGE->cm->context = context_module::instance($PAGE->cm->instance);
    }
    // for some actions you need to be enrolled, beiing admin is not enough sometimes here
    $enrolled = is_enrolled($PAGE->cm->context, $USER, '', false);
    $activeenrolled = is_enrolled($PAGE->cm->context, $USER, '', true);
    $canmanage = has_capability('mod/anonforum:managesubscriptions', $PAGE->cm->context);
    $subscriptionmode = anonforum_get_forcesubscribed($anonforumobject);
    $cansubscribe = $activeenrolled && $subscriptionmode != ANONFORUM_FORCESUBSCRIBE && ($subscriptionmode != ANONFORUM_DISALLOWSUBSCRIBE || $canmanage);
    if ($canmanage) {
        $mode = $anonforumnode->add(get_string('subscriptionmode', 'anonforum'), null, navigation_node::TYPE_CONTAINER);
        $allowchoice = $mode->add(get_string('subscriptionoptional', 'anonforum'), new moodle_url('/mod/anonforum/subscribe.php', array('id' => $anonforumobject->id, 'mode' => ANONFORUM_CHOOSESUBSCRIBE, 'sesskey' => sesskey())), navigation_node::TYPE_SETTING);
        $forceforever = $mode->add(get_string("subscriptionforced", "anonforum"), new moodle_url('/mod/anonforum/subscribe.php', array('id' => $anonforumobject->id, 'mode' => ANONFORUM_FORCESUBSCRIBE, 'sesskey' => sesskey())), navigation_node::TYPE_SETTING);
        $forceinitially = $mode->add(get_string("subscriptionauto", "anonforum"), new moodle_url('/mod/anonforum/subscribe.php', array('id' => $anonforumobject->id, 'mode' => ANONFORUM_INITIALSUBSCRIBE, 'sesskey' => sesskey())), navigation_node::TYPE_SETTING);
        $disallowchoice = $mode->add(get_string('subscriptiondisabled', 'anonforum'), new moodle_url('/mod/anonforum/subscribe.php', array('id' => $anonforumobject->id, 'mode' => ANONFORUM_DISALLOWSUBSCRIBE, 'sesskey' => sesskey())), navigation_node::TYPE_SETTING);
        switch ($subscriptionmode) {
            case ANONFORUM_CHOOSESUBSCRIBE:
                // 0
                $allowchoice->action = null;
                $allowchoice->add_class('activesetting');
                break;
            case ANONFORUM_FORCESUBSCRIBE:
                // 1
                $forceforever->action = null;
                $forceforever->add_class('activesetting');
                break;
            case ANONFORUM_INITIALSUBSCRIBE:
                // 2
                $forceinitially->action = null;
                $forceinitially->add_class('activesetting');
                break;
            case ANONFORUM_DISALLOWSUBSCRIBE:
                // 3
                $disallowchoice->action = null;
                $disallowchoice->add_class('activesetting');
                break;
        }
    } else {
        if ($activeenrolled) {
            switch ($subscriptionmode) {
                case ANONFORUM_CHOOSESUBSCRIBE:
                    // 0
                    $notenode = $anonforumnode->add(get_string('subscriptionoptional', 'anonforum'));
                    break;
                case ANONFORUM_FORCESUBSCRIBE:
                    // 1
                    $notenode = $anonforumnode->add(get_string('subscriptionforced', 'anonforum'));
                    break;
                case ANONFORUM_INITIALSUBSCRIBE:
                    // 2
                    $notenode = $anonforumnode->add(get_string('subscriptionauto', 'anonforum'));
                    break;
                case ANONFORUM_DISALLOWSUBSCRIBE:
                    // 3
                    $notenode = $anonforumnode->add(get_string('subscriptiondisabled', 'anonforum'));
                    break;
            }
        }
    }
    if ($cansubscribe) {
        if (anonforum_is_subscribed($USER->id, $anonforumobject)) {
            $linktext = get_string('unsubscribe', 'anonforum');
        } else {
            $linktext = get_string('subscribe', 'anonforum');
        }
        $url = new moodle_url('/mod/anonforum/subscribe.php', array('id' => $anonforumobject->id, 'sesskey' => sesskey()));
        $anonforumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
    }
    if (has_capability('mod/anonforum:viewsubscribers', $PAGE->cm->context)) {
        $url = new moodle_url('/mod/anonforum/subscribers.php', array('id' => $anonforumobject->id));
        $anonforumnode->add(get_string('showsubscribers', 'anonforum'), $url, navigation_node::TYPE_SETTING);
    }
    if ($enrolled && anonforum_tp_can_track_anonforums($anonforumobject)) {
        // keep tracking info for users with suspended enrolments
        if ($anonforumobject->trackingtype == ANONFORUM_TRACKING_OPTIONAL || !$CFG->anonforum_allowforcedreadtracking && $anonforumobject->trackingtype == ANONFORUM_TRACKING_FORCED) {
            if (anonforum_tp_is_tracked($anonforumobject)) {
                $linktext = get_string('notrackanonforum', 'anonforum');
            } else {
                $linktext = get_string('trackanonforum', 'anonforum');
            }
            $url = new moodle_url('/mod/anonforum/settracking.php', array('id' => $anonforumobject->id));
            $anonforumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
        }
    }
    if (!isloggedin() && $PAGE->course->id == SITEID) {
        $userid = guest_user()->id;
    } else {
        $userid = $USER->id;
    }
    $hascourseaccess = $PAGE->course->id == SITEID || can_access_course($PAGE->course, $userid);
    $enablerssfeeds = !empty($CFG->enablerssfeeds) && !empty($CFG->anonforum_enablerssfeeds);
    if ($enablerssfeeds && $anonforumobject->rsstype && $anonforumobject->rssarticles && $hascourseaccess) {
        if (!function_exists('rss_get_url')) {
            require_once "{$CFG->libdir}/rsslib.php";
        }
        if ($anonforumobject->rsstype == 1) {
            $string = get_string('rsssubscriberssdiscussions', 'anonforum');
        } else {
            $string = get_string('rsssubscriberssposts', 'anonforum');
        }
        $url = new moodle_url(rss_get_url($PAGE->cm->context->id, $userid, "mod_anonforum", $anonforumobject->id));
        $anonforumnode->add($string, $url, settings_navigation::TYPE_SETTING, null, null, new pix_icon('i/rss', ''));
    }
}