public function display($forum)
 {
     $params = $forum->get_link_params_array();
     if ($forum->get_group_mode()) {
         $params['group'] = forum::get_activity_group($forum->get_course_module());
     }
     return parent::get_button($forum, get_string('markallread', 'forumng'), 'markread.php', true, $params);
 }
 * @package forumNG
 */
require_once '../../../../config.php';
require_once $CFG->dirroot . '/mod/forumng/forum.php';
$cmid = required_param('id', PARAM_INT);
$cloneid = optional_param('clone', 0, PARAM_INT);
try {
    $forum = forum::get_from_cmid($cmid, $cloneid);
    $course = $forum->get_course();
    $cm = $forum->get_course_module();
    $context = $forum->get_context();
    if ($forum->is_shared() || $forum->is_clone()) {
        throw new forum_exception("<strong>View post by user</strong> doesn't work for a shared forum.");
    }
    // Check forum access (using forum group, if required)
    $forumgroupid = forum::get_activity_group($cm, false);
    $forum->require_view($forumgroupid);
    // TODO: Use/define a more accurate capability. This will do for now.
    require_capability('mod/forumng:viewallposts', $forum->get_context());
    // Print page header
    $forum->print_subpage_header(get_string('userposts', 'forumng'));
    // This section uses custom groups rather than the normal forum groups.
    // We are using the groups that are set for the course and not the ones
    // for the forum. This is because we want it so that even if the forum
    // does not have groups, or it has weird groups, the control for who can
    // see which posts is based on the 'real' tutor group which should be
    // defined at course level.
    $groups = null;
    if ($course->groupmode) {
        // Get groups. Because the logic for this is slightly weird (we're
        // using course groups regardless of activity group setting; etc) it
$id = required_param('id', PARAM_INT);
// On the view page ONLY we allow a default for the clone parameter that won't
// cause an error if it's omitted. All other pages have default 0, which will
// show up any errors caused if the parameter is omitted somewhere.
$cloneid = optional_param('clone', forum::CLONE_DIRECT, PARAM_INT);
try {
    // Construct forum variable (will check id is valid)
    $forum = forum::get_from_cmid($id, $cloneid);
    $course = $forum->get_course();
    $cm = $forum->get_course_module();
    // If this is a clone, redirect to original
    if ($forum->is_clone()) {
        $forum->redirect_to_original();
    }
    // Check that forum can be viewed [Handles all other permissions]
    $groupid = forum::get_activity_group($cm, true);
    $forum->require_view($groupid, 0, true);
    // Get update button, if allowed for current user
    $strforum = get_string("modulename", "forum");
    $buttontext = $forum->display_search_form();
    // Atom header meta tag
    $feedtype = $forum->get_effective_feed_option();
    if ($feedtype == forum::FEEDTYPE_DISCUSSIONS || $feedtype == forum::FEEDTYPE_ALL_POSTS && $forum->can_view_discussions()) {
        $atomurl = $forum->get_feed_url(forum::FEEDFORMAT_ATOM, $groupid);
        $meta = '<link rel="alternate" type="application/atom+xml" ' . 'title="Atom feed" href="' . htmlspecialchars($atomurl) . '" />';
    } else {
        $meta = '';
    }
    // Initialize $PAGE, compute blocks
    require_once $CFG->dirroot . '/mod/forumng/pagelib.php';
    global $CURRENTFORUM;
 /**
  * Display subscribe options.
  * @param forum $forum Forum
  * @param string $text Textual note
  * @param int $subscribed
  * @param bool $button True if subscribe/unsubscribe button should be shown
  * @param bool $viewlink True if 'view subscribers' link should be shown
  * @return string HTML code for this area
  */
 public function display_subscribe_options($forum, $text, $subscribed, $button, $viewlink)
 {
     $out = '<div class="forumng-subscribe-options">' . '<h3>' . get_string('subscription', 'forumng') . '</h3>' . '<p>' . $text . '</p>';
     $cm = $forum->get_course_module();
     if ($button) {
         $outsubmit = '';
         $currentgroupid = forum::get_activity_group($cm, true);
         if ($currentgroupid == forum::NO_GROUPS) {
             $currentgroupid = 0;
         }
         if ($subscribed == forum::FULLY_SUBSCRIBED || $subscribed == forum::FULLY_SUBSCRIBED_GROUPMODE) {
             $outsubmit .= '<input type="submit" name="submitunsubscribe" value="' . get_string('unsubscribeshort', 'forumng') . '" />';
         } else {
             if ($subscribed == forum::PARTIALLY_SUBSCRIBED) {
                 //print both subscribe button and unsubscribe button
                 $outsubmit .= '<input type="submit" name="submitsubscribe" value="' . get_string('subscribelong', 'forumng') . '" />' . '<input type="submit" name="submitunsubscribe" value="' . get_string('unsubscribelong', 'forumng') . '" />';
             } else {
                 if ($subscribed == forum::NOT_SUBSCRIBED) {
                     //default unsubscribed, print subscribe button
                     $outsubmit .= '<input type="submit" name="submitsubscribe" value="' . get_string('subscribeshort', 'forumng') . '" />';
                 } else {
                     if ($subscribed == forum::THIS_GROUP_PARTIALLY_SUBSCRIBED) {
                         $outsubmit .= '<input type="submit" name="submitsubscribe_thisgroup" value="' . get_string('subscribegroup', 'forumng') . '" />' . '<input type="submit" name="submitunsubscribe_thisgroup" value="' . get_string('unsubscribegroup_partial', 'forumng') . '" />' . '<input type="hidden" name="g" value="' . $currentgroupid . '" />';
                     } else {
                         if ($subscribed == forum::THIS_GROUP_SUBSCRIBED) {
                             $outsubmit .= '<input type="submit" name="submitunsubscribe_thisgroup" value="' . get_string('unsubscribegroup', 'forumng') . '" />' . '<input type="hidden" name="g" value="' . $currentgroupid . '" />';
                         } else {
                             if ($subscribed == forum::THIS_GROUP_NOT_SUBSCRIBED) {
                                 $outsubmit .= '<input type="submit" name="submitsubscribe_thisgroup" value="' . get_string('subscribegroup', 'forumng') . '" />' . '<input type="hidden" name="g" value="' . $currentgroupid . '" />';
                             }
                         }
                     }
                 }
             }
         }
         $out .= '<form action="subscribe.php" method="post"><div>' . $forum->get_link_params(forum::PARAM_FORM) . '<input type="hidden" name="back" value="view" />' . $outsubmit . '</div></form>';
     }
     if ($viewlink) {
         $out .= ' <div class="forumng-subscribe-admin">' . '<a href="subscribers.php?' . $forum->get_link_params(forum::PARAM_HTML) . '">' . get_string('viewsubscribers', 'forumng') . '</a></div>';
     }
     $out .= '</div>';
     return $out;
 }
                 $canunsubscribesomething = true;
                 $submitbutton = "<input type='submit' name='submitunsubscribe' value='{$strunsubscribe}' />";
             } else {
                 $cansubscribesomething = true;
                 $submitbutton = "<input type='submit' name='submitsubscribe' value='{$strsubscribe}' />";
             }
             $subscribetext .= "&nbsp;" . "<form method='post' action='subscribe.php'><div>" . $forum->get_link_params(forum::PARAM_FORM) . "<input type='hidden' name='back' value='index' />" . $submitbutton . "</div></form>";
         }
         $subscribetext .= '</div>';
         $row[] = $subscribetext;
     }
     // If this forum has RSS/Atom feeds, show link
     if ($showrss) {
         if ($type = $forum->get_effective_feed_option()) {
             // Get group (may end up being none)
             $groupid = forum::get_activity_group($forum->get_course_module(), false);
             $row[] = $forum->display_feed_links($groupid);
         } else {
             $row[] = '&nbsp;';
         }
     }
     $table->data[] = $row;
 }
 print_table($table);
 // 'Subscribe all' links
 if ($canmaybesubscribe) {
     print '<div class="forumng-allsubscribe">';
     $subscribedisabled = $cansubscribesomething ? '' : 'disabled="disabled"';
     $unsubscribedisabled = $canunsubscribesomething ? '' : 'disabled="disabled"';
     print "<form method='post' action='subscribe.php'><div>" . "<input type='hidden' name='course' value='{$course->id}' />" . "<input type='hidden' name='back' value='index' />" . "<input type='submit' name='submitsubscribe' value='" . get_string('allsubscribe', 'forumng') . "' {$subscribedisabled}/>" . "<input type='submit' name='submitunsubscribe' value='" . get_string('allunsubscribe', 'forumng') . "' {$unsubscribedisabled}/>" . "</div></form> ";
     print '</div>';