public function display($forum) { // Work out current status $manualmark = !forum::mark_read_automatically(); $current = get_string($manualmark ? 'manualmark_manual' : 'manualmark_auto', 'forumng'); // Make a help button $change = get_string('manualmark_change', 'forumng'); $helpbutton = helpbutton('manualmark', $change, 'forumng', true, false, '', true); // Get the button form $params = $forum->get_link_params_array(); return parent::get_button($forum, $change, 'feature/manualmark/change.php', true, $params, $helpbutton, 'forumng-manualmark', $current . ' ', 'forumng-button-to-link'); }
/** * Displays the discussion page. * @param forum_discussion $discussion Discussion */ public function print_discussion_page($discussion) { $previousread = (int) $discussion->get_time_read(); // 'Read date' option (used when viewing all posts so that they keep // their read/unread colouring) $timeread = optional_param('timeread', 0, PARAM_INT); if ($timeread) { $discussion->pretend_time_read($timeread); $previousread = $timeread; } // 'Expand all' option (always chosen for non-JS browsers) $expandall = optional_param('expand', 0, PARAM_INT) || forum_utils::is_bad_browser(); // 'Expand all' option (always chosen for non-JS browsers) $collapseall = optional_param('collapse', 0, PARAM_INT); // Magic expand tracker (for use in JS only, never set server-side). // This tracks expanded posts, and makes the Back button 'work' in // the sense that it will expand these posts again. print '<form method="post" action="."><div>' . '<input type="hidden" id="expanded_posts" name="expanded_posts" ' . 'value="" /></div></form>'; // Get content for all posts in the discussion $options = array(); if ($expandall) { $options[forum_post::OPTION_CHILDREN_EXPANDED] = true; } if ($collapseall) { $options[forum_post::OPTION_CHILDREN_COLLAPSED] = true; } $content = $this->display_discussion($discussion, $options); // Some post display options use the read time to construct links // (usually for non-JS version) so that unread state is maintained. $options[forum_post::OPTION_READ_TIME] = $previousread; // Display expand all option if there are any 'Expand' links in content $fakedate = '&timeread=' . $previousread; print '<div id="forumng-expandall">'; $showexpandall = preg_match('~<a [^>]*href="discuss\\.php\\?d=[0-9]+[^"]*&expand=1#p[0-9]+">~', $content); $showcollapseall = preg_match('~<div class="forumng-post forumng-full.*<div class="forumng-post forumng-full~s', $content); if ($showexpandall) { print '<a href="' . $discussion->get_url(forum::PARAM_HTML) . '&expand=1' . $fakedate . '">' . get_string('expandall', 'forumng') . '</a>'; if ($showcollapseall) { print ' • '; } } if ($showcollapseall) { print '<a href="' . $discussion->get_url(forum::PARAM_HTML) . '&collapse=1' . $fakedate . '">' . get_string('collapseall', 'forumng') . '</a> '; } print '</div>'; // Display content print $content; // Print reply/edit forms for AJAX print $this->display_ajax_forms($discussion->get_forum()); // Link back to forum print $discussion->display_link_back_to_forum(); // Display discussion features (row of buttons) print $discussion->display_discussion_features(); // Display the subscription options to this disucssion if available print $discussion->display_subscribe_options(); // Atom/RSS links print $discussion->display_feed_links(); // Set read data [shouldn't this logic be somewhere else as it is not // part of display?] if (forum::mark_read_automatically()) { $discussion->mark_read(); } }
public function should_display($discussion) { return !forum::mark_read_automatically() && $discussion->get_forum()->can_mark_read() && $discussion->get_num_unread_posts(); }
<?php require_once '../../../../config.php'; require_once '../../forum.php'; // This script toggles the user's 'automatically mark read' preference. $id = required_param('id', PARAM_INT); $cloneid = optional_param('clone', 0, PARAM_INT); try { $forum = forum::get_from_cmid($id, $cloneid); $groupid = forum::get_activity_group($forum->get_course_module(), false); $forum->require_view($groupid); $manualmark = !forum::mark_read_automatically(); if ($manualmark) { unset_user_preference('forumng_manualmark'); } else { set_user_preference('forumng_manualmark', 1); } redirect($forum->get_url(forum::PARAM_PLAIN)); } catch (Exception $e) { forum_utils::handle_exception($e); }