Example #1
0
                if ($fromform->mailnow) {
                    $message .= get_string("postmailnow", "forum");
                    $timemessage = 4;
                } else {
                    $message .= '<p>' . get_string("postaddedsuccess", "forum") . '</p>';
                    $message .= '<p>' . get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
                }
                if ($subscribemessage = forum_post_subscription($discussion, $forum)) {
                    $timemessage = 4;
                }
                // Update completion status
                $completion = new completion_info($course);
                if ($completion->is_enabled($cm) && ($forum->completiondiscussions || $forum->completionposts)) {
                    $completion->update_state($cm, COMPLETION_COMPLETE);
                }
                redirect(forum_go_back_to("view.php?f={$fromform->forum}"), $message . $subscribemessage, $timemessage);
            } else {
                print_error("couldnotadd", "forum", $errordestination);
            }
            exit;
        }
    }
}
// To get here they need to edit a post, and the $post
// variable will be loaded with all the particulars,
// so bring up the form.
// $course, $forum are defined.  $discussion is for edit and reply only.
if ($post->discussion) {
    if (!($toppost = $DB->get_record("forum_posts", array("discussion" => $post->discussion, "parent" => 0)))) {
        print_error('cannotfindparentpost', 'forum', '', $post->id);
    }
Example #2
0
        }
        if ($cansub && $cm->visible == 0 && !has_capability('mod/forum:managesubscriptions', $modcontext)) {
            $cansub = false;
        }
        if (!forum_is_forcesubscribed($forum)) {
            $subscribed = forum_is_subscribed($USER->id, $forum);
            if ((has_capability('moodle/course:manageactivities', $coursecontext, $USER->id) || $forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) && $subscribe && !$subscribed && $cansub) {
                forum_subscribe($USER->id, $forumid, $modcontext);
            } else {
                if (!$subscribe && $subscribed) {
                    forum_unsubscribe($USER->id, $forumid, $modcontext);
                }
            }
        }
    }
    $returnto = forum_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', 'forum', $shortname), 1);
    } else {
        redirect($returnto, get_string('nowallunsubscribed', 'forum', $shortname), 1);
    }
}
/// First, let's process the general forums and build up a display
if ($generalforums) {
    foreach ($generalforums as $forum) {
        $cm = $modinfo->instances['forum'][$forum->id];
        $context = context_module::instance($cm->id);
        $count = forum_count_discussions($forum, $cm, $course);
        if ($usetracking) {
            if ($forum->trackingtype == FORUM_TRACKING_OFF) {
$id = required_param('id', PARAM_INT);
// The forum to subscribe or unsubscribe to
$returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);
// Page to return to.
require_sesskey();
if (!($forum = $DB->get_record("forum", array("id" => $id)))) {
    print_error('invalidforumid', 'forum');
}
if (!($course = $DB->get_record("course", array("id" => $forum->course)))) {
    print_error('invalidcoursemodule');
}
if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id))) {
    print_error('invalidcoursemodule');
}
require_login($course, false, $cm);
$returnto = forum_go_back_to($returnpage . '?id=' . $course->id . '&f=' . $forum->id);
if (!forum_tp_can_track_forums($forum)) {
    redirect($returnto);
}
$info = new stdClass();
$info->name = fullname($USER);
$info->forum = format_string($forum->name);
$eventparams = array('context' => context_module::instance($cm->id), 'relateduserid' => $USER->id, 'other' => array('forumid' => $forum->id));
if (forum_tp_is_tracked($forum)) {
    if (forum_tp_stop_tracking($forum->id)) {
        $event = \mod_forum\event\readtracking_disabled::create($eventparams);
        $event->trigger();
        redirect($returnto, get_string("nownottracking", "forum", $info), 1);
    } else {
        print_error('cannottrack', '', $_SERVER["HTTP_REFERER"]);
    }
Example #4
0
// The forum to subscribe or unsubscribe to
$returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);
// Page to return to.
require_sesskey();
if (!($forum = $DB->get_record("forum", array("id" => $id)))) {
    print_error('invalidforumid', 'forum');
}
if (!($course = $DB->get_record("course", array("id" => $forum->course)))) {
    print_error('invalidcoursemodule');
}
if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id))) {
    print_error('invalidcoursemodule');
}
require_login($course, false, $cm);
$returnpageurl = new moodle_url('/mod/forum/' . $returnpage, array('id' => $course->id, 'f' => $forum->id));
$returnto = forum_go_back_to($returnpageurl);
if (!forum_tp_can_track_forums($forum)) {
    redirect($returnto);
}
$info = new stdClass();
$info->name = fullname($USER);
$info->forum = format_string($forum->name);
$eventparams = array('context' => context_module::instance($cm->id), 'relateduserid' => $USER->id, 'other' => array('forumid' => $forum->id));
if (forum_tp_is_tracked($forum)) {
    if (forum_tp_stop_tracking($forum->id)) {
        $event = \mod_forum\event\readtracking_disabled::create($eventparams);
        $event->trigger();
        redirect($returnto, get_string("nownottracking", "forum", $info), 1);
    } else {
        print_error('cannottrack', '', get_local_referer(false));
    }
Example #5
0
                    $timemessage = 6;
                }
            } else {
                print_error("couldnotadd", "forum", $errordestination);
            }
        }

        // Update completion status.
        $completion = new completion_info($course);
        if ($completion->is_enabled($cm) &&
                ($forum->completiondiscussions || $forum->completionposts)) {
            $completion->update_state($cm, COMPLETION_COMPLETE);
        }

        // Redirect back to the discussion.
        redirect(forum_go_back_to($redirectto->out()), $message . $subscribemessage, $timemessage);
    }
}



// To get here they need to edit a post, and the $post
// variable will be loaded with all the particulars,
// so bring up the form.

// $course, $forum are defined.  $discussion is for edit and reply only.

if ($post->discussion) {
    if (! $toppost = $DB->get_record("forum_posts", array("discussion" => $post->discussion, "parent" => 0))) {
        print_error('cannotfindparentpost', 'forum', '', $post->id);
    }
Example #6
0
        if ($cansub && $cm->visible == 0 && !has_capability('mod/forum:managesubscriptions', $modcontext)) {
            $cansub = false;
        }
        if (!\mod_forum\subscriptions::is_forcesubscribed($forum)) {
            $subscribed = \mod_forum\subscriptions::is_subscribed($USER->id, $forum, null, $cm);
            $canmanageactivities = has_capability('moodle/course:manageactivities', $coursecontext, $USER->id);
            if (($canmanageactivities || \mod_forum\subscriptions::is_subscribable($forum)) && $subscribe && !$subscribed && $cansub) {
                \mod_forum\subscriptions::subscribe_user($USER->id, $forum, $modcontext, true);
            } else {
                if (!$subscribe && $subscribed) {
                    \mod_forum\subscriptions::unsubscribe_user($USER->id, $forum, $modcontext, true);
                }
            }
        }
    }
    $returnto = forum_go_back_to(new moodle_url('/mod/forum/index.php', array('id' => $course->id)));
    $shortname = format_string($course->shortname, true, array('context' => context_course::instance($course->id)));
    if ($subscribe) {
        redirect($returnto, get_string('nowallsubscribed', 'forum', $shortname), null, \core\output\notification::NOTIFY_SUCCESS);
    } else {
        redirect($returnto, get_string('nowallunsubscribed', 'forum', $shortname), null, \core\output\notification::NOTIFY_SUCCESS);
    }
}
/// First, let's process the general forums and build up a display
if ($generalforums) {
    foreach ($generalforums as $forum) {
        $cm = $modinfo->instances['forum'][$forum->id];
        $context = context_module::instance($cm->id);
        $count = forum_count_discussions($forum, $cm, $course);
        if ($usetracking) {
            if ($forum->trackingtype == FORUM_TRACKING_OFF) {
Example #7
0
// Page to return to.
if (!($forum = get_record("forum", "id", $f))) {
    error("Forum ID was incorrect");
}
if (!($course = get_record("course", "id", $forum->course))) {
    error("Forum doesn't belong to a course!");
}
if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id))) {
    error("Incorrect cm!");
}
$user = $USER;
require_course_login($course, false, $cm);
if ($returnpage == 'index.php') {
    $returnto = forum_go_back_to($returnpage . '?id=' . $course->id);
} else {
    $returnto = forum_go_back_to($returnpage . '?f=' . $forum->id);
}
if (isguest()) {
    // Guests can't change forum
    $wwwroot = $CFG->wwwroot . '/login/index.php';
    if (!empty($CFG->loginhttps)) {
        $wwwroot = str_replace('http:', 'https:', $wwwroot);
    }
    $navigation = build_navigation('', $cm);
    print_header($course->shortname, $course->fullname, $navigation, '', '', true, "", navmenu($course, $cm));
    notice_yesno(get_string('noguesttracking', 'forum') . '<br /><br />' . get_string('liketologin'), $wwwroot, $returnto);
    print_footer($course);
    exit;
}
$info = new object();
$info->name = fullname($user);
Example #8
0
                        } else {
                            $message .= '<p>' . get_string("postaddedsuccess", "forum") . '</p>';
                            $message .= '<p>' . get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
                        }
                        $subscribemessage = forum_post_subscription($fromform, $forum, $discussion);
                    } else {
                        print_error("couldnotadd", "forum", $errordestination);
                    }
                }
                // Update completion status.
                $completion = new completion_info($course);
                if ($completion->is_enabled($cm) && ($forum->completiondiscussions || $forum->completionposts)) {
                    $completion->update_state($cm, COMPLETION_COMPLETE);
                }
                // Redirect back to the discussion.
                redirect(forum_go_back_to($redirectto->out()), $message . $subscribemessage, null, \core\output\notification::NOTIFY_SUCCESS);
            }
        }
    }
}
// To get here they need to edit a post, and the $post
// variable will be loaded with all the particulars,
// so bring up the form.
// $course, $forum are defined.  $discussion is for edit and reply only.
if ($post->discussion) {
    if (!($toppost = $DB->get_record("forum_posts", array("discussion" => $post->discussion, "parent" => 0)))) {
        print_error('cannotfindparentpost', 'forum', '', $post->id);
    }
} else {
    $toppost = new stdClass();
    $toppost->subject = $forum->type == "news" ? get_string("addanewtopic", "forum") : get_string("addanewdiscussion", "forum");
Example #9
0
$PAGE->set_url($url);
if (!($forum = $DB->get_record("forum", array("id" => $f)))) {
    print_error('invalidforumid', 'forum');
}
if (!($course = $DB->get_record("course", array("id" => $forum->course)))) {
    print_error('invalidcourseid');
}
if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id))) {
    print_error('invalidcoursemodule');
}
$user = $USER;
require_login($course, false, $cm);
if ($returnpage == 'index.php') {
    $returnto = forum_go_back_to(new moodle_url("/mod/forum/{$returnpage}", array('id' => $course->id)));
} else {
    $returnto = forum_go_back_to(new moodle_url("/mod/forum/{$returnpage}", array('f' => $forum->id)));
}
if (isguestuser()) {
    // Guests can't change forum
    $PAGE->set_title($course->shortname);
    $PAGE->set_heading($course->fullname);
    echo $OUTPUT->header();
    echo $OUTPUT->confirm(get_string('noguesttracking', 'forum') . '<br /><br />' . get_string('liketologin'), get_login_url(), $returnto);
    echo $OUTPUT->footer();
    exit;
}
$info = new stdClass();
$info->name = fullname($user);
$info->forum = format_string($forum->name);
if ($mark == 'read') {
    if (!empty($d)) {