Make WordPress Core


Ignore:
Timestamp:
09/09/2015 02:40:53 AM (9 years ago)
Author:
wonderboymusic
Message:

Walker_Comment should be in its own file. Loaded now via wp-includes/comment.php, which makes it 100% BC.

See #33413.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/comment-template.php

    r33961 r33962  
    16781678        $author = ( $linktoparent ) ? '<a href="#comment-' . get_comment_ID() . '">' . get_comment_author() . '</a>' : get_comment_author();
    16791679        printf( $replytext, $author );
    1680     }
    1681 }
    1682 
    1683 /**
    1684  * HTML comment list class.
    1685  *
    1686  * @uses Walker
    1687  * @since 2.7.0
    1688  */
    1689 class Walker_Comment extends Walker {
    1690     /**
    1691      * What the class handles.
    1692      *
    1693      * @see Walker::$tree_type
    1694      *
    1695      * @since 2.7.0
    1696      * @var string
    1697      */
    1698     public $tree_type = 'comment';
    1699 
    1700     /**
    1701      * DB fields to use.
    1702      *
    1703      * @see Walker::$db_fields
    1704      *
    1705      * @since 2.7.0
    1706      * @var array
    1707      */
    1708     public $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
    1709 
    1710     /**
    1711      * Start the list before the elements are added.
    1712      *
    1713      * @see Walker::start_lvl()
    1714      *
    1715      * @since 2.7.0
    1716      *
    1717      * @global int $comment_depth
    1718      *
    1719      * @param string $output Passed by reference. Used to append additional content.
    1720      * @param int $depth Depth of comment.
    1721      * @param array $args Uses 'style' argument for type of HTML list.
    1722      */
    1723     public function start_lvl( &$output, $depth = 0, $args = array() ) {
    1724         $GLOBALS['comment_depth'] = $depth + 1;
    1725 
    1726         switch ( $args['style'] ) {
    1727             case 'div':
    1728                 break;
    1729             case 'ol':
    1730                 $output .= '<ol class="children">' . "\n";
    1731                 break;
    1732             case 'ul':
    1733             default:
    1734                 $output .= '<ul class="children">' . "\n";
    1735                 break;
    1736         }
    1737     }
    1738 
    1739     /**
    1740      * End the list of items after the elements are added.
    1741      *
    1742      * @see Walker::end_lvl()
    1743      *
    1744      * @since 2.7.0
    1745      *
    1746      * @global int $comment_depth
    1747      *
    1748      * @param string $output Passed by reference. Used to append additional content.
    1749      * @param int    $depth  Depth of comment.
    1750      * @param array  $args   Will only append content if style argument value is 'ol' or 'ul'.
    1751      */
    1752     public function end_lvl( &$output, $depth = 0, $args = array() ) {
    1753         $GLOBALS['comment_depth'] = $depth + 1;
    1754 
    1755         switch ( $args['style'] ) {
    1756             case 'div':
    1757                 break;
    1758             case 'ol':
    1759                 $output .= "</ol><!-- .children -->\n";
    1760                 break;
    1761             case 'ul':
    1762             default:
    1763                 $output .= "</ul><!-- .children -->\n";
    1764                 break;
    1765         }
    1766     }
    1767 
    1768     /**
    1769      * Traverse elements to create list from elements.
    1770      *
    1771      * This function is designed to enhance Walker::display_element() to
    1772      * display children of higher nesting levels than selected inline on
    1773      * the highest depth level displayed. This prevents them being orphaned
    1774      * at the end of the comment list.
    1775      *
    1776      * Example: max_depth = 2, with 5 levels of nested content.
    1777      * 1
    1778      *  1.1
    1779      *    1.1.1
    1780      *    1.1.1.1
    1781      *    1.1.1.1.1
    1782      *    1.1.2
    1783      *    1.1.2.1
    1784      * 2
    1785      *  2.2
    1786      *
    1787      * @see Walker::display_element()
    1788      * @see wp_list_comments()
    1789      *
    1790      * @since 2.7.0
    1791      *
    1792      * @param object $element           Data object.
    1793      * @param array  $children_elements List of elements to continue traversing.
    1794      * @param int    $max_depth         Max depth to traverse.
    1795      * @param int    $depth             Depth of current element.
    1796      * @param array  $args              An array of arguments.
    1797      * @param string $output            Passed by reference. Used to append additional content.
    1798      */
    1799     public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
    1800         if ( !$element )
    1801             return;
    1802 
    1803         $id_field = $this->db_fields['id'];
    1804         $id = $element->$id_field;
    1805 
    1806         parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    1807 
    1808         // If we're at the max depth, and the current element still has children, loop over those and display them at this level
    1809         // This is to prevent them being orphaned to the end of the list.
    1810         if ( $max_depth <= $depth + 1 && isset( $children_elements[$id]) ) {
    1811             foreach ( $children_elements[ $id ] as $child )
    1812                 $this->display_element( $child, $children_elements, $max_depth, $depth, $args, $output );
    1813 
    1814             unset( $children_elements[ $id ] );
    1815         }
    1816 
    1817     }
    1818 
    1819     /**
    1820      * Start the element output.
    1821      *
    1822      * @since 2.7.0
    1823      *
    1824      * @see Walker::start_el()
    1825      * @see wp_list_comments()
    1826      *
    1827      * @global int    $comment_depth
    1828      * @global object $comment
    1829      *
    1830      * @param string $output  Passed by reference. Used to append additional content.
    1831      * @param object $comment Comment data object.
    1832      * @param int    $depth   Depth of comment in reference to parents.
    1833      * @param array  $args    An array of arguments.
    1834      */
    1835     public function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) {
    1836         $depth++;
    1837         $GLOBALS['comment_depth'] = $depth;
    1838         $GLOBALS['comment'] = $comment;
    1839 
    1840         if ( !empty( $args['callback'] ) ) {
    1841             ob_start();
    1842             call_user_func( $args['callback'], $comment, $args, $depth );
    1843             $output .= ob_get_clean();
    1844             return;
    1845         }
    1846 
    1847         if ( ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) && $args['short_ping'] ) {
    1848             ob_start();
    1849             $this->ping( $comment, $depth, $args );
    1850             $output .= ob_get_clean();
    1851         } elseif ( 'html5' === $args['format'] ) {
    1852             ob_start();
    1853             $this->html5_comment( $comment, $depth, $args );
    1854             $output .= ob_get_clean();
    1855         } else {
    1856             ob_start();
    1857             $this->comment( $comment, $depth, $args );
    1858             $output .= ob_get_clean();
    1859         }
    1860     }
    1861 
    1862     /**
    1863      * Ends the element output, if needed.
    1864      *
    1865      * @since 2.7.0
    1866      *
    1867      * @see Walker::end_el()
    1868      * @see wp_list_comments()
    1869      *
    1870      * @param string     $output  Passed by reference. Used to append additional content.
    1871      * @param WP_Comment $comment The comment object. Default current comment.
    1872      * @param int        $depth   Depth of comment.
    1873      * @param array      $args    An array of arguments.
    1874      */
    1875     public function end_el( &$output, $comment, $depth = 0, $args = array() ) {
    1876         if ( !empty( $args['end-callback'] ) ) {
    1877             ob_start();
    1878             call_user_func( $args['end-callback'], $comment, $args, $depth );
    1879             $output .= ob_get_clean();
    1880             return;
    1881         }
    1882         if ( 'div' == $args['style'] )
    1883             $output .= "</div><!-- #comment-## -->\n";
    1884         else
    1885             $output .= "</li><!-- #comment-## -->\n";
    1886     }
    1887 
    1888     /**
    1889      * Output a pingback comment.
    1890      *
    1891      * @access protected
    1892      * @since 3.6.0
    1893      *
    1894      * @see wp_list_comments()
    1895      *
    1896      * @param WP_Comment $comment The comment object.
    1897      * @param int        $depth   Depth of comment.
    1898      * @param array      $args    An array of arguments.
    1899      */
    1900     protected function ping( $comment, $depth, $args ) {
    1901         $tag = ( 'div' == $args['style'] ) ? 'div' : 'li';
    1902 ?>
    1903         <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
    1904             <div class="comment-body">
    1905                 <?php _e( 'Pingback:' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
    1906             </div>
    1907 <?php
    1908     }
    1909 
    1910     /**
    1911      * Output a single comment.
    1912      *
    1913      * @access protected
    1914      * @since 3.6.0
    1915      *
    1916      * @see wp_list_comments()
    1917      *
    1918      * @param object $comment Comment to display.
    1919      * @param int    $depth   Depth of comment.
    1920      * @param array  $args    An array of arguments.
    1921      */
    1922     protected function comment( $comment, $depth, $args ) {
    1923         if ( 'div' == $args['style'] ) {
    1924             $tag = 'div';
    1925             $add_below = 'comment';
    1926         } else {
    1927             $tag = 'li';
    1928             $add_below = 'div-comment';
    1929         }
    1930 ?>
    1931         <<?php echo $tag; ?> <?php comment_class( $this->has_children ? 'parent' : '' ); ?> id="comment-<?php comment_ID(); ?>">
    1932         <?php if ( 'div' != $args['style'] ) : ?>
    1933         <div id="div-comment-<?php comment_ID(); ?>" class="comment-body">
    1934         <?php endif; ?>
    1935         <div class="comment-author vcard">
    1936             <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
    1937             <?php printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link() ); ?>
    1938         </div>
    1939         <?php if ( '0' == $comment->comment_approved ) : ?>
    1940         <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em>
    1941         <br />
    1942         <?php endif; ?>
    1943 
    1944         <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID, $args ) ); ?>">
    1945             <?php
    1946                 /* translators: 1: comment date, 2: comment time */
    1947                 printf( __( '%1$s at %2$s' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), '&nbsp;&nbsp;', '' );
    1948             ?>
    1949         </div>
    1950 
    1951         <?php comment_text( get_comment_id(), array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
    1952 
    1953         <?php
    1954         comment_reply_link( array_merge( $args, array(
    1955             'add_below' => $add_below,
    1956             'depth'     => $depth,
    1957             'max_depth' => $args['max_depth'],
    1958             'before'    => '<div class="reply">',
    1959             'after'     => '</div>'
    1960         ) ) );
    1961         ?>
    1962 
    1963         <?php if ( 'div' != $args['style'] ) : ?>
    1964         </div>
    1965         <?php endif; ?>
    1966 <?php
    1967     }
    1968 
    1969     /**
    1970      * Output a comment in the HTML5 format.
    1971      *
    1972      * @access protected
    1973      * @since 3.6.0
    1974      *
    1975      * @see wp_list_comments()
    1976      *
    1977      * @param object $comment Comment to display.
    1978      * @param int    $depth   Depth of comment.
    1979      * @param array  $args    An array of arguments.
    1980      */
    1981     protected function html5_comment( $comment, $depth, $args ) {
    1982         $tag = ( 'div' === $args['style'] ) ? 'div' : 'li';
    1983 ?>
    1984         <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $this->has_children ? 'parent' : '' ); ?>>
    1985             <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
    1986                 <footer class="comment-meta">
    1987                     <div class="comment-author vcard">
    1988                         <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
    1989                         <?php printf( __( '%s <span class="says">says:</span>' ), sprintf( '<b class="fn">%s</b>', get_comment_author_link() ) ); ?>
    1990                     </div><!-- .comment-author -->
    1991 
    1992                     <div class="comment-metadata">
    1993                         <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID, $args ) ); ?>">
    1994                             <time datetime="<?php comment_time( 'c' ); ?>">
    1995                                 <?php
    1996                                     /* translators: 1: comment date, 2: comment time */
    1997                                     printf( __( '%1$s at %2$s' ), get_comment_date(), get_comment_time() );
    1998                                 ?>
    1999                             </time>
    2000                         </a>
    2001                         <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
    2002                     </div><!-- .comment-metadata -->
    2003 
    2004                     <?php if ( '0' == $comment->comment_approved ) : ?>
    2005                     <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></p>
    2006                     <?php endif; ?>
    2007                 </footer><!-- .comment-meta -->
    2008 
    2009                 <div class="comment-content">
    2010                     <?php comment_text(); ?>
    2011                 </div><!-- .comment-content -->
    2012 
    2013                 <?php
    2014                 comment_reply_link( array_merge( $args, array(
    2015                     'add_below' => 'div-comment',
    2016                     'depth'     => $depth,
    2017                     'max_depth' => $args['max_depth'],
    2018                     'before'    => '<div class="reply">',
    2019                     'after'     => '</div>'
    2020                 ) ) );
    2021                 ?>
    2022             </article><!-- .comment-body -->
    2023 <?php
    20241680    }
    20251681}
Note: See TracChangeset for help on using the changeset viewer.