<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[34561] trunk: Force comment pagination on single posts.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/34561">34561</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/34561","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>boonebgorges</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2015-09-25 20:39:18 +0000 (Fri, 25 Sep 2015)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Force comment pagination on single posts.

Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.

Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.

Here's the breakdown:

* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.

Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.

Props boonebgorges, wonderboymusic.
Fixes <a href="https://core.trac.wordpress.org/ticket/8071">#8071</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludesschemaphp">trunk/src/wp-admin/includes/schema.php</a></li>
<li><a href="#trunksrcwpadminoptionsdiscussionphp">trunk/src/wp-admin/options-discussion.php</a></li>
<li><a href="#trunksrcwpadminoptionsphp">trunk/src/wp-admin/options.php</a></li>
<li><a href="#trunksrcwpincludescanonicalphp">trunk/src/wp-includes/canonical.php</a></li>
<li><a href="#trunksrcwpincludesclasswpcommentqueryphp">trunk/src/wp-includes/class-wp-comment-query.php</a></li>
<li><a href="#trunksrcwpincludesclasswpcommentphp">trunk/src/wp-includes/class-wp-comment.php</a></li>
<li><a href="#trunksrcwpincludescommentfunctionsphp">trunk/src/wp-includes/comment-functions.php</a></li>
<li><a href="#trunksrcwpincludescommenttemplatephp">trunk/src/wp-includes/comment-template.php</a></li>
<li><a href="#trunksrcwpincludesdefaultfiltersphp">trunk/src/wp-includes/default-filters.php</a></li>
<li><a href="#trunksrcwpincludeslinktemplatephp">trunk/src/wp-includes/link-template.php</a></li>
<li><a href="#trunktestsphpunittestscommentgetCommentsPagesCountphp">trunk/tests/phpunit/tests/comment/getCommentsPagesCount.php</a></li>
<li><a href="#trunktestsphpunittestslinkgetNextCommentsLinkphp">trunk/tests/phpunit/tests/link/getNextCommentsLink.php</a></li>
<li><a href="#trunktestsphpunittestslinkgetPreviousCommentsLinkphp">trunk/tests/phpunit/tests/link/getPreviousCommentsLink.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludesschemaphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/schema.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/schema.php    2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-admin/includes/schema.php      2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -482,7 +482,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        'close_comments_days_old' => 14,
</span><span class="cx" style="display: block; padding: 0 10px">        'thread_comments' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">        'thread_comments_depth' => 5,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        'page_comments' => 0,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'page_comments' => 1,
</ins><span class="cx" style="display: block; padding: 0 10px">         'comments_per_page' => 50,
</span><span class="cx" style="display: block; padding: 0 10px">        'default_comments_page' => 'newest',
</span><span class="cx" style="display: block; padding: 0 10px">        'comment_order' => 'asc',
</span></span></pre></div>
<a id="trunksrcwpadminoptionsdiscussionphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/options-discussion.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/options-discussion.php 2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-admin/options-discussion.php   2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -98,17 +98,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> ?></label>
</span><span class="cx" style="display: block; padding: 0 10px"> <br />
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<label for="page_comments">
-<input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked('1', get_option('page_comments')); ?> />
</del><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> $default_comments_page = '</label><label for="default_comments_page"><select name="default_comments_page" id="default_comments_page"><option value="newest"';
</span><span class="cx" style="display: block; padding: 0 10px"> if ( 'newest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
</span><span class="cx" style="display: block; padding: 0 10px"> $default_comments_page .= '>' . __('last') . '</option><option value="oldest"';
</span><span class="cx" style="display: block; padding: 0 10px"> if ( 'oldest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
</span><span class="cx" style="display: block; padding: 0 10px"> $default_comments_page .= '>' . __('first') . '</option></select>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-printf( __('Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default'), '</label><label for="comments_per_page"><input name="comments_per_page" type="number" step="1" min="0" id="comments_per_page" value="' . esc_attr(get_option('comments_per_page')) . '" class="small-text" />', $default_comments_page );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+printf( __('Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default'), '<label for="comments_per_page"><input name="comments_per_page" type="number" step="1" min="0" id="comments_per_page" value="' . esc_attr(get_option('comments_per_page')) . '" class="small-text" />', $default_comments_page );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> ?></label>
</span><span class="cx" style="display: block; padding: 0 10px"> <br />
</span></span></pre></div>
<a id="trunksrcwpadminoptionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/options.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/options.php    2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-admin/options.php      2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -83,7 +83,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> $whitelist_options = array(
</span><span class="cx" style="display: block; padding: 0 10px">        'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string', 'WPLANG' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
</ins><span class="cx" style="display: block; padding: 0 10px">         'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ),
</span><span class="cx" style="display: block; padding: 0 10px">        'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'page_on_front', 'page_for_posts', 'blog_public' ),
</span><span class="cx" style="display: block; padding: 0 10px">        'writing' => array( 'default_category', 'default_email_category', 'default_link_category', 'default_post_format' )
</span></span></pre></div>
<a id="trunksrcwpincludescanonicalphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/canonical.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/canonical.php       2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/canonical.php 2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -321,7 +321,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( get_option('page_comments') && ( ( 'newest' == get_option('default_comments_page') && get_query_var('cpage') > 0 ) || ( 'newest' != get_option('default_comments_page') && get_query_var('cpage') > 1 ) ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ( 'newest' == get_option('default_comments_page') && get_query_var('cpage') > 0 ) || ( 'newest' != get_option('default_comments_page') && get_query_var('cpage') > 1 ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . get_query_var('cpage'), 'commentpaged' );
</span><span class="cx" style="display: block; padding: 0 10px">                                $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span></span></pre></div>
<a id="trunksrcwpincludesclasswpcommentqueryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-comment-query.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-comment-query.php  2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/class-wp-comment-query.php    2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -865,6 +865,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $level = 0;
</span><span class="cx" style="display: block; padding: 0 10px">                do {
</span><span class="cx" style="display: block; padding: 0 10px">                        $parent_ids = $levels[ $level ];
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        if ( ! $parent_ids ) {
+                               break;
+                       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                         $where = 'WHERE ' . implode( ' AND ', $where_clauses ) . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
</span><span class="cx" style="display: block; padding: 0 10px">                        $comment_ids = $wpdb->get_col( "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']}" );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludesclasswpcommentphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-comment.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-comment.php        2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/class-wp-comment.php  2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -227,9 +227,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.4.0
</span><span class="cx" style="display: block; padding: 0 10px">         * @access public
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param string $format Return value format. 'tree' for a hierarchical tree, 'flat' for a flattened array.
+        *                       Default 'tree'.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return array Array of `WP_Comment` objects.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function get_children() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_children( $format = 'tree' ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_null( $this->children ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->children = get_comments( array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $this->comment_ID,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -237,7 +239,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $this->children;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( 'flat' === $format ) {
+                       $children = array();
+                       foreach ( $this->children as $child ) {
+                               $children = array_merge( $children, array( $child ), $child->get_children( 'flat' ) );
+                       }
+               } else {
+                       $children = $this->children;
+               }
+
+               return $children;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunksrcwpincludescommentfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/comment-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/comment-functions.php       2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/comment-functions.php 2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -807,9 +807,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty($comments) )
</span><span class="cx" style="display: block; padding: 0 10px">                return 0;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( ! get_option( 'page_comments' ) )
-               return 1;
-
</del><span class="cx" style="display: block; padding: 0 10px">         if ( !isset($per_page) )
</span><span class="cx" style="display: block; padding: 0 10px">                $per_page = (int) get_query_var('comments_per_page');
</span><span class="cx" style="display: block; padding: 0 10px">        if ( 0 === $per_page )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -858,7 +855,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
</span><span class="cx" style="display: block; padding: 0 10px">        $args = wp_parse_args( $args, $defaults );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( '' === $args['per_page'] && get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( '' === $args['per_page'] )
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args['per_page'] = get_query_var('comments_per_page');
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty($args['per_page']) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $args['per_page'] = 0;
</span></span></pre></div>
<a id="trunksrcwpincludescommenttemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/comment-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/comment-template.php        2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/comment-template.php  2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -683,7 +683,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
</span><span class="cx" style="display: block; padding: 0 10px">        $args = wp_parse_args( $args, $defaults );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( '' === $args['per_page'] && get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( '' === $args['per_page'] )
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args['per_page'] = get_option('comments_per_page');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty($args['per_page']) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1214,10 +1214,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $comment_author_url = esc_url($commenter['comment_author_url']);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $comment_args = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'order'   => 'ASC',
</del><span class="cx" style="display: block; padding: 0 10px">                 'orderby' => 'comment_date_gmt',
</span><span class="cx" style="display: block; padding: 0 10px">                'status'  => 'approve',
</span><span class="cx" style="display: block; padding: 0 10px">                'post_id' => $post->ID,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'hierarchical' => 'threaded',
+               'no_found_rows' => false,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1227,8 +1228,88 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $comment_args['include_unapproved'] = array( $comment_author_email );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $comments = get_comments( $comment_args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $per_page = (int) get_query_var( 'comments_per_page' );
+       if ( 0 === $per_page ) {
+               $per_page = (int) get_option( 'comments_per_page' );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $flip_comment_order = $trim_comments_on_page = false;
+       if ( $post->comment_count > $per_page ) {
+               $comment_args['number'] = $per_page;
+
+               /*
+                * For legacy reasons, higher page numbers always mean more recent comments, regardless of sort order.
+                * Since we don't have full pagination info until after the query, we use some tricks to get the
+                * right comments for the current page.
+                *
+                * Abandon all hope, ye who enter here!
+                */
+               $page = (int) get_query_var( 'cpage' );
+               if ( 'newest' === get_option( 'default_comments_page' ) ) {
+                       if ( $page ) {
+                               $comment_args['order'] = 'ASC';
+
+                               /*
+                                * We don't have enough data (namely, the total number of comments) to calculate an
+                                * exact offset. We'll fetch too many comments, and trim them as needed
+                                * after the query.
+                                */
+                               $offset = ( $page - 2 ) * $per_page;
+                               if ( 0 > $offset ) {
+                                       // `WP_Comment_Query` doesn't support negative offsets.
+                                       $comment_args['offset'] = 0;
+                               } else {
+                                       $comment_args['offset'] = $offset;
+                               }
+
+                               // Fetch double the number of comments we need.
+                               $comment_args['number'] += $per_page;
+                               $trim_comments_on_page = true;
+                       } else {
+                               $comment_args['order'] = 'DESC';
+                               $comment_args['offset'] = 0;
+                               $flip_comment_order = true;
+                       }
+               } else {
+                       $comment_args['order'] = 'ASC';
+                       if ( $page ) {
+                               $comment_args['offset'] = ( $page - 1 ) * $per_page;
+                       } else {
+                               $comment_args['offset'] = 0;
+                       }
+               }
+       }
+
+       $comment_query = new WP_Comment_Query( $comment_args );
+       $_comments = $comment_query->comments;
+
+       // Delightful pagination quirk #1: first page of results sometimes needs reordering.
+       if ( $flip_comment_order ) {
+               $_comments = array_reverse( $_comments );
+       }
+
+       // Delightful pagination quirk #2: reverse chronological order requires page shifting.
+       if ( $trim_comments_on_page ) {
+               // Correct the value of max_num_pages, which is wrong because we manipulated the per_page 'number'.
+               $comment_query->max_num_pages = ceil( $comment_query->found_comments / $per_page );
+
+               // Identify the number of comments that should appear on page 1.
+               $page_1_count = $comment_query->found_comments - ( ( $comment_query->max_num_pages - 1 ) * $per_page );
+
+               // Use that value to shift the matched comments.
+               if ( 1 === $page ) {
+                       $_comments = array_slice( $_comments, 0, $page_1_count );
+               } else {
+                       $_comments = array_slice( $_comments, $page_1_count, $per_page );
+               }
+       }
+
+       // Trees must be flattened before they're passed to the walker.
+       $comments_flat = array();
+       foreach ( $_comments as $_comment ) {
+               $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( 'flat' ) );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Filter the comments array.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1237,9 +1318,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param array $comments Array of comments supplied to the comments template.
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int   $post_ID  Post ID.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $wp_query->comments = apply_filters( 'comments_array', $comments, $post->ID );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $wp_query->comments = apply_filters( 'comments_array', $comments_flat, $post->ID );
</ins><span class="cx" style="display: block; padding: 0 10px">         $comments = &$wp_query->comments;
</span><span class="cx" style="display: block; padding: 0 10px">        $wp_query->comment_count = count($wp_query->comments);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $wp_query->max_num_comment_pages = $comment_query->max_num_pages;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( $separate_comments ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $wp_query->comments_by_type = separate_comments($comments);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1249,7 +1331,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $overridden_cpage = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( '' == get_query_var('cpage') && get_option('page_comments') ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( '' == get_query_var('cpage') ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $overridden_cpage = true;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1825,9 +1907,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $_comments = $wp_query->comments;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
+               if ( 1 < $wp_query->max_num_comment_pages ) {
+                       $r['page'] = 1;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( '' === $r['per_page'] && get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( '' === $r['per_page'] )
</ins><span class="cx" style="display: block; padding: 0 10px">                 $r['per_page'] = get_query_var('comments_per_page');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty($r['per_page']) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1866,7 +1953,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $output = $walker->paged_walk( $_comments, $r['max_depth'], $r['page'], $r['per_page'], $r );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $wp_query->max_num_comment_pages = $walker->max_pages;
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $in_comment_loop = false;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludesdefaultfiltersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/default-filters.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/default-filters.php 2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/default-filters.php   2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -316,6 +316,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // This option no longer exists; tell plugins we always support auto-embedding.
</span><span class="cx" style="display: block; padding: 0 10px"> add_filter( 'default_option_embed_autourls', '__return_true' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// This option no longer exists; tell plugins we want comment pagination.
+add_filter( 'pre_option_page_comments', '__return_true' );
+
</ins><span class="cx" style="display: block; padding: 0 10px"> // Default settings for heartbeat
</span><span class="cx" style="display: block; padding: 0 10px"> add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludeslinktemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/link-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/link-template.php   2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/src/wp-includes/link-template.php     2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2590,7 +2590,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> function get_next_comments_link( $label = '', $max_page = 0 ) {
</span><span class="cx" style="display: block; padding: 0 10px">        global $wp_query;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( !is_singular() || !get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( ! is_singular() )
</ins><span class="cx" style="display: block; padding: 0 10px">                 return;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $page = get_query_var('cpage');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2644,7 +2644,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @return string|void HTML-formatted link for the previous page of comments.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function get_previous_comments_link( $label = '' ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( !is_singular() || !get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( ! is_singular() )
</ins><span class="cx" style="display: block; padding: 0 10px">                 return;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $page = get_query_var('cpage');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2692,7 +2692,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> function paginate_comments_links($args = array()) {
</span><span class="cx" style="display: block; padding: 0 10px">        global $wp_rewrite;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( !is_singular() || !get_option('page_comments') )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( ! is_singular() )
</ins><span class="cx" style="display: block; padding: 0 10px">                 return;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $page = get_query_var('cpage');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2737,7 +2737,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $navigation = '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Are there comments to navigate through?
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( get_comment_pages_count() > 1 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = wp_parse_args( $args, array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'prev_text'          => __( 'Older comments' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'next_text'          => __( 'Newer comments' ),
</span></span></pre></div>
<a id="trunktestsphpunittestscommentgetCommentsPagesCountphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/comment/getCommentsPagesCount.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/comment/getCommentsPagesCount.php       2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/tests/phpunit/tests/comment/getCommentsPagesCount.php 2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,28 +71,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Validate get_comments_pages_count for option page_comments
-        */
-       function test_option_page_comments() {
-               //setup post and comments
-               $post = $this->factory->post->create_and_get( array( 'post_title' => 'comment--post', 'post_type' => 'post' ) );
-               $comments = $this->factory->comment->create_post_comments( $post->ID, 15 );
-
-               // comment paging disabled
-               update_option( 'page_comments', false );
-
-               $this->assertEquals( 1, get_comment_pages_count( $comments, 10, false ) );
-               $this->assertEquals( 1, get_comment_pages_count( $comments, 0, true ) );
-               $this->assertEquals( 1, get_comment_pages_count( $comments, 2, true ) );
-
-               // comment paging enabled
-               update_option( 'page_comments', true );
-
-               $this->assertEquals( 2, get_comment_pages_count( $comments, 10, false ) );
-               $this->assertEquals( 3, get_comment_pages_count( $comments, 5, false ) );
-       }
-
-       /**
</del><span class="cx" style="display: block; padding: 0 10px">          * Validate get_comments_pages_count for option tread_comments
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        function test_option_thread_comments() {
</span></span></pre></div>
<a id="trunktestsphpunittestslinkgetNextCommentsLinkphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/link/getNextCommentsLink.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/link/getNextCommentsLink.php    2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/tests/phpunit/tests/link/getNextCommentsLink.php      2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,7 +16,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_page_should_respect_value_of_cpage_query_var() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_option( 'page_comments', '1' );
</del><span class="cx" style="display: block; padding: 0 10px">                 $p = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->go_to( get_permalink( $p ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -34,7 +33,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 20319
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_page_should_default_to_1_when_no_cpage_query_var_is_found() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_option( 'page_comments', '1' );
</del><span class="cx" style="display: block; padding: 0 10px">                 $p = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->go_to( get_permalink( $p ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunktestsphpunittestslinkgetPreviousCommentsLinkphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/link/getPreviousCommentsLink.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/link/getPreviousCommentsLink.php        2015-09-25 20:30:02 UTC (rev 34560)
+++ trunk/tests/phpunit/tests/link/getPreviousCommentsLink.php  2015-09-25 20:39:18 UTC (rev 34561)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,7 +16,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_page_should_respect_value_of_cpage_query_var() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_option( 'page_comments', '1' );
</del><span class="cx" style="display: block; padding: 0 10px">                 $p = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->go_to( get_permalink( $p ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,7 +30,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_page_should_default_to_1_when_no_cpage_query_var_is_found() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_option( 'page_comments', '1' );
</del><span class="cx" style="display: block; padding: 0 10px">                 $p = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->go_to( get_permalink( $p ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>