X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/6c8f14c09105d0afa4c1574215c59b5021040e76..61343b82c4f0da4c68e4c6373daafff4a81efdd1:/wp-includes/post-template.php diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index 21620b45..03302eab 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -69,15 +69,15 @@ function the_title($before = '', $after = '', $echo = true) { * @return string|null Null on failure or display. String when echo is false. */ function the_title_attribute( $args = '' ) { - $title = get_the_title(); + $defaults = array('before' => '', 'after' => '', 'echo' => true, 'post' => get_post() ); + $r = wp_parse_args($args, $defaults); + extract( $r, EXTR_SKIP ); + + $title = get_the_title( $post ); if ( strlen($title) == 0 ) return; - $defaults = array('before' => '', 'after' => '', 'echo' => true); - $r = wp_parse_args($args, $defaults); - extract( $r, EXTR_SKIP ); - $title = $before . $title . $after; $title = esc_attr(strip_tags($title)); @@ -96,7 +96,7 @@ function the_title_attribute( $args = '' ) { * * @since 0.71 * - * @param mixed $post Optional. Post ID or object. + * @param int|object $post Optional. Post ID or object. * @return string */ function get_the_title( $post = 0 ) { @@ -159,12 +159,12 @@ function get_the_guid( $id = 0 ) { * @since 0.71 * * @param string $more_link_text Optional. Content for when there is more text. - * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false. + * @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false. */ -function the_content($more_link_text = null, $stripteaser = false) { - $content = get_the_content($more_link_text, $stripteaser); - $content = apply_filters('the_content', $content); - $content = str_replace(']]>', ']]>', $content); +function the_content( $more_link_text = null, $strip_teaser = false) { + $content = get_the_content( $more_link_text, $strip_teaser ); + $content = apply_filters( 'the_content', $content ); + $content = str_replace( ']]>', ']]>', $content ); echo $content; } @@ -177,52 +177,57 @@ function the_content($more_link_text = null, $stripteaser = false) { * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false. * @return string */ -function get_the_content( $more_link_text = null, $stripteaser = false ) { - global $more, $page, $pages, $multipage, $preview; +function get_the_content( $more_link_text = null, $strip_teaser = false ) { + global $page, $more, $preview, $pages, $multipage; $post = get_post(); if ( null === $more_link_text ) - $more_link_text = __( '(more...)' ); + $more_link_text = __( '(more…)' ); $output = ''; - $hasTeaser = false; + $has_teaser = false; // If post password required and it doesn't match the cookie. - if ( post_password_required() ) - return get_the_password_form(); + if ( post_password_required( $post ) ) + return get_the_password_form( $post ); - if ( $page > count($pages) ) // if the requested page doesn't exist - $page = count($pages); // give them the highest numbered page that DOES exist + if ( $page > count( $pages ) ) // if the requested page doesn't exist + $page = count( $pages ); // give them the highest numbered page that DOES exist - $content = $pages[$page-1]; - if ( preg_match('//', $content, $matches) ) { - $content = explode($matches[0], $content, 2); - if ( !empty($matches[1]) && !empty($more_link_text) ) - $more_link_text = strip_tags(wp_kses_no_null(trim($matches[1]))); + $content = $pages[$page - 1]; + if ( preg_match( '//', $content, $matches ) ) { + $content = explode( $matches[0], $content, 2 ); + if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) ) + $more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) ); - $hasTeaser = true; + $has_teaser = true; } else { - $content = array($content); + $content = array( $content ); } - if ( (false !== strpos($post->post_content, '') && ((!$multipage) || ($page==1))) ) - $stripteaser = true; + + if ( false !== strpos( $post->post_content, '' ) && ( ! $multipage || $page == 1 ) ) + $strip_teaser = true; + $teaser = $content[0]; - if ( $more && $stripteaser && $hasTeaser ) + + if ( $more && $strip_teaser && $has_teaser ) $teaser = ''; + $output .= $teaser; - if ( count($content) > 1 ) { + + if ( count( $content ) > 1 ) { if ( $more ) { $output .= '' . $content[1]; } else { - if ( ! empty($more_link_text) ) + if ( ! empty( $more_link_text ) ) $output .= apply_filters( 'the_content_more_link', ' ID}\" class=\"more-link\">$more_link_text", $more_link_text ); - $output = force_balance_tags($output); + $output = force_balance_tags( $output ); } - } + if ( $preview ) // preview fix for javascript bug with foreign languages - $output = preg_replace_callback('/\%u([0-9A-F]{4})/', '_convert_urlencoded_to_entities', $output); + $output = preg_replace_callback( '/\%u([0-9A-F]{4})/', '_convert_urlencoded_to_entities', $output ); return $output; } @@ -563,12 +568,10 @@ function get_body_class( $class = '' ) { * * @since 2.7.0 * - * @param int|object $post An optional post. Global $post used if not provided. + * @param int|WP_Post $post An optional post. Global $post used if not provided. * @return bool false if a password is not required or the correct password cookie is present, true otherwise. */ function post_password_required( $post = null ) { - global $wp_hasher; - $post = get_post($post); if ( empty( $post->post_password ) ) @@ -577,15 +580,14 @@ function post_password_required( $post = null ) { if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) ) return true; - if ( empty( $wp_hasher ) ) { - require_once( ABSPATH . 'wp-includes/class-phpass.php'); - // By default, use the portable hash from phpass - $wp_hasher = new PasswordHash(8, true); - } + require_once ABSPATH . 'wp-includes/class-phpass.php'; + $hasher = new PasswordHash( 8, true ); - $hash = stripslashes( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ); + $hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ); + if ( 0 !== strpos( $hash, '$P$B' ) ) + return true; - return ! $wp_hasher->CheckPassword( $post->post_password, $hash ); + return ! $hasher->CheckPassword( $post->post_password, $hash ); } /** @@ -602,15 +604,6 @@ function post_password_required( $post = null ) { * Quicktag one or more times). This tag must be within The Loop. * * The defaults for overwriting are: - * 'next_or_number' - Default is 'number' (string). Indicates whether page - * numbers should be used. Valid values are number and next. - * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. - * of the bookmark. - * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to - * previous page, if available. - * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in - * the parameter string will be replaced with the page number, so Page % - * generates "Page 1", "Page 2", etc. Defaults to %, just the page number. * 'before' - Default is '

Pages:' (string). The html or text to prepend to * each bookmarks. * 'after' - Default is '

' (string). The html or text to append to each @@ -621,20 +614,36 @@ function post_password_required( $post = null ) { * 'link_after' - Default is '' (string). The html or text to append to each * Pages link inside the tag. Also appended to the current item, which * is not linked. + * 'next_or_number' - Default is 'number' (string). Indicates whether page + * numbers should be used. Valid values are number and next. + * 'separator' - Default is ' ' (string). Text used between pagination links. + * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. + * of the bookmark. + * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to + * previous page, if available. + * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in + * the parameter string will be replaced with the page number, so Page % + * generates "Page 1", "Page 2", etc. Defaults to %, just the page number. + * 'echo' - Default is 1 (integer). When not 0, this triggers the HTML to be + * echoed and then returned. * * @since 1.2.0 - * @access private * * @param string|array $args Optional. Overwrite the defaults. * @return string Formatted output in HTML. */ -function wp_link_pages($args = '') { +function wp_link_pages( $args = '' ) { $defaults = array( - 'before' => '

' . __('Pages:'), 'after' => '

', - 'link_before' => '', 'link_after' => '', - 'next_or_number' => 'number', 'nextpagelink' => __('Next page'), - 'previouspagelink' => __('Previous page'), 'pagelink' => '%', - 'echo' => 1 + 'before' => '

' . __( 'Pages:' ), + 'after' => '

', + 'link_before' => '', + 'link_after' => '', + 'next_or_number' => 'number', + 'separator' => ' ', + 'nextpagelink' => __( 'Next page' ), + 'previouspagelink' => __( 'Previous page' ), + 'pagelink' => '%', + 'echo' => 1 ); $r = wp_parse_args( $args, $defaults ); @@ -647,35 +656,34 @@ function wp_link_pages($args = '') { if ( $multipage ) { if ( 'number' == $next_or_number ) { $output .= $before; - for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { - $j = str_replace('%',$i,$pagelink); - $output .= ' '; - if ( ($i != $page) || ((!$more) && ($page==1)) ) { - $output .= _wp_link_page($i); - } - $output .= $link_before . $j . $link_after; - if ( ($i != $page) || ((!$more) && ($page==1)) ) - $output .= '
'; + for ( $i = 1; $i <= $numpages; $i++ ) { + $link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after; + if ( $i != $page || ! $more && 1 == $page ) + $link = _wp_link_page( $i ) . $link . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; } $output .= $after; - } else { - if ( $more ) { - $output .= $before; - $i = $page - 1; - if ( $i && $more ) { - $output .= _wp_link_page($i); - $output .= $link_before. $previouspagelink . $link_after . ''; - } - $i = $page + 1; - if ( $i <= $numpages && $more ) { - $output .= _wp_link_page($i); - $output .= $link_before. $nextpagelink . $link_after . ''; - } - $output .= $after; + } elseif ( $more ) { + $output .= $before; + $i = $page - 1; + if ( $i ) { + $link = _wp_link_page( $i ) . $link_before . $previouspagelink . $link_after . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; + } + $i = $page + 1; + if ( $i <= $numpages ) { + $link = _wp_link_page( $i ) . $link_before . $nextpagelink . $link_after . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; } + $output .= $after; } } + $output = apply_filters( 'wp_link_pages', $output, $args ); + if ( $echo ) echo $output; @@ -1026,7 +1034,7 @@ class Walker_Page extends Walker { * @param int $current_page Page ID. * @param array $args */ - function start_el( &$output, $page, $depth, $args, $current_page = 0 ) { + function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) { if ( $depth ) $indent = str_repeat("\t", $depth); else @@ -1048,6 +1056,9 @@ class Walker_Page extends Walker { $css_class = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); + if ( '' === $page->post_title ) + $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID ); + $output .= $indent . '
  • ' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . ''; if ( !empty($show_date) ) { @@ -1108,7 +1119,7 @@ class Walker_PageDropdown extends Walker { * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element. * @param int $id */ - function start_el(&$output, $page, $depth, $args, $id = 0) { + function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) { $pad = str_repeat(' ', $depth * 3); $output .= "\t