WordPress.org

Make WordPress Core

Ticket #7956: 7956.6.patch

File 7956.6.patch, 4.6 KB (added by Viper007Bond, 10 years ago)
  • wp-includes/comment-template.php

     
    435435 * @uses $comment
    436436 *
    437437 * @param object|string|int $comment Comment to retrieve.
     438 * @param string|int $page The comment's page if known. Optional. Avoids extra database query.
    438439 * @return string The permalink to the current comment
    439440 */
    440 function get_comment_link($comment = null) {
     441function get_comment_link( $comment = null, $page = null ) {
    441442        global $wp_rewrite;
    442443
    443444        $comment = get_comment($comment);
    444445
    445446        if ( get_option('page_comments') ) {
    446                 $page = get_page_of_comment( $comment->comment_ID );
     447                $page = (int) ( null !== $page ) ? $page : get_page_of_comment( $comment->comment_ID );
    447448
    448449                if ( $wp_rewrite->using_permalinks() )
    449450                        return user_trailingslashit( trailingslashit( get_permalink( $comment->comment_post_ID ) ) . "comment-page-$page", 'comment' ) . '#comment-' . $comment->comment_ID;
     
    11501151                <br />
    11511152<?php endif; ?>
    11521153
    1153                 <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date('F jS, Y'),  get_comment_time()) ?></a><?php edit_comment_link('edit','&nbsp;&nbsp;','') ?></div>
     1154                <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID, $page ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date('F jS, Y'),  get_comment_time()) ?></a><?php edit_comment_link('edit','&nbsp;&nbsp;','') ?></div>
    11541155
    11551156                <?php comment_text() ?>
    11561157
  • wp-includes/comment.php

     
    536536 * @return int|null Comment page number or null on error.
    537537 */
    538538function get_page_of_comment( $comment_ID, $per_page = null, $threaded = null ) {
     539        global $wpdb;
     540
    539541        if ( !$comment = get_comment( $comment_ID ) )
    540542                return;
    541543
     
    552554        if ( $threaded && 0 != $comment->comment_parent )
    553555                return get_page_of_comment( $comment->comment_parent, $per_page, $threaded );
    554556
    555         $comments = get_comments( array( 'post_id' => $comment->comment_post_ID, 'order' => 'ASC' ) );
     557        // Count comments older than this one
     558        $oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_date_gmt < '%s'", $comment->comment_post_ID, $comment->comment_date_gmt ) );
    556559
    557         // Start going through the comments until we find what page number the above top level comment is on
    558         $page = 1;
    559         $comthispage = 0;
    560         foreach ( $comments as $com ) {
    561                 if ( $threaded && 0 != $com->comment_parent )
    562                         continue;
     560        // No older comments? Then it's page #1.
     561        if ( 0 == $oldercoms )
     562                return 1;
    563563
    564                 if ( $com->comment_ID == $comment->comment_ID )
    565                         return $page;
    566 
    567                 $comthispage++;
    568 
    569                 if ( $comthispage >= $per_page ) {
    570                         $page++;
    571                         $comthispage = 0;
    572                 }
    573         }
     564        // Divide comments older than this one by comments per page to get this comment's page number
     565        return ceil( ( $oldercoms + 1 ) / $per_page );
    574566}
    575567
    576568/**
  • wp-includes/widgets.php

     
    13871387                $number = 15;
    13881388
    13891389        if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
    1390                 $comments = $wpdb->get_results("SELECT comment_author, comment_author_url, comment_ID, comment_post_ID FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
     1390                $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
    13911391                wp_cache_add( 'recent_comments', $comments, 'widget' );
    13921392        }
    13931393?>
     
    13961396                        <?php echo $before_title . $title . $after_title; ?>
    13971397                        <ul id="recentcomments"><?php
    13981398                        if ( $comments ) : foreach ( (array) $comments as $comment) :
    1399                         echo  '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_comment_author_link(), '<a href="'. get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
     1399                        echo  '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_comment_author_link(), '<a href="'. get_comment_link($comment->comment_ID) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
    14001400                        endforeach; endif;?></ul>
    14011401                <?php echo $after_widget; ?>
    14021402<?php