Introduce normalize_whitespace(). Use it instead of wp_text_diff() when checking for identical autosave revisions. Props tellyworth. fixes #7691
git-svn-id: http://svn.automattic.com/wordpress/trunk@9302 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
77f5447071
commit
33f8a5e080
|
@ -45,7 +45,7 @@ if ( 0 == $post_ID ) {
|
||||||
// Detect if there exists an autosave newer than the post and if that autosave is different than the post
|
// Detect if there exists an autosave newer than the post and if that autosave is different than the post
|
||||||
if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt ) > mysql2date( 'U', $post->post_modified_gmt ) ) {
|
if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt ) > mysql2date( 'U', $post->post_modified_gmt ) ) {
|
||||||
foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) {
|
foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) {
|
||||||
if ( wp_text_diff( $autosave->$autosave_field, $post->$autosave_field ) ) {
|
if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) {
|
||||||
$notice = sprintf( $notices[1], get_edit_post_link( $autosave->ID ) );
|
$notice = sprintf( $notices[1], get_edit_post_link( $autosave->ID ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2144,4 +2144,12 @@ function _links_add_target( $m, $target ) {
|
||||||
return '<' . $tag . $link . ' target="' . $target . '">';
|
return '<' . $tag . $link . ' target="' . $target . '">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// normalize EOL characters and strip duplicate whitespace
|
||||||
|
function normalize_whitespace( $str ) {
|
||||||
|
$str = trim($str);
|
||||||
|
$str = str_replace("\r", "\n", $str);
|
||||||
|
$str = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $str );
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1663,13 +1663,8 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
|
||||||
if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
|
if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
|
||||||
require( ABSPATH . WPINC . '/wp-diff.php' );
|
require( ABSPATH . WPINC . '/wp-diff.php' );
|
||||||
|
|
||||||
// Normalize whitespace
|
$left_string = normalize_whitespace($left_string);
|
||||||
$left_string = trim($left_string);
|
$right_string = normalize_whitespace($right_string);
|
||||||
$right_string = trim($right_string);
|
|
||||||
$left_string = str_replace("\r", "\n", $left_string);
|
|
||||||
$right_string = str_replace("\r", "\n", $right_string);
|
|
||||||
$left_string = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $left_string );
|
|
||||||
$right_string = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $right_string );
|
|
||||||
|
|
||||||
$left_lines = split("\n", $left_string);
|
$left_lines = split("\n", $left_string);
|
||||||
$right_lines = split("\n", $right_string);
|
$right_lines = split("\n", $right_string);
|
||||||
|
|
Loading…
Reference in New Issue