diff -r 2f6f6f7551ca -r 32102edaa81b web/wp-includes/wp-diff.php --- a/web/wp-includes/wp-diff.php Thu Sep 16 15:45:36 2010 +0000 +++ b/web/wp-includes/wp-diff.php Mon Nov 19 18:26:13 2012 +0100 @@ -60,17 +60,16 @@ var $inline_diff_renderer = 'WP_Text_Diff_Renderer_inline'; /** - * PHP4 Constructor - Call parent constructor with params array. + * Constructor - Call parent constructor with params array. * * This will set class properties based on the key value pairs in the array. * - * @since unknown + * @since 2.6.0 * * @param array $params */ - function Text_Diff_Renderer_Table( $params = array() ) { - $parent = get_parent_class($this); - $this->$parent( $params ); + function __construct( $params = array() ) { + parent::__construct( $params ); } /** @@ -203,15 +202,14 @@ $r = ''; // Does the aforementioned additional processing - // *_matches tell what rows are "the same" in orig and final. Those pairs will be diffed to get word changes + // *_matches tell what rows are "the same" in orig and final. Those pairs will be diffed to get word changes // match is numeric: an index in other column - // match is 'X': no match. It is a new row + // match is 'X': no match. It is a new row // *_rows are column vectors for the orig column and the final column. // row >= 0: an indix of the $orig or $final array // row < 0: a blank row for that column list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final ); - // These will hold the word changes as determined by an inline diff $orig_diffs = array(); $final_diffs = array(); @@ -232,7 +230,7 @@ $stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches; $diff_ratio = $stripped_matches / $stripped_diff; if ( $diff_ratio > $this->_diff_threshold ) - continue; // Too different. Don't save diffs. + continue; // Too different. Don't save diffs. } // Un-inline the diffs by removing del or ins @@ -242,21 +240,28 @@ } foreach ( array_keys($orig_rows) as $row ) { - // Both columns have blanks. Ignore them. + // Both columns have blanks. Ignore them. if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 ) continue; - // If we have a word based diff, use it. Otherwise, use the normal line. - $orig_line = isset($orig_diffs[$orig_rows[$row]]) - ? $orig_diffs[$orig_rows[$row]] - : htmlspecialchars($orig[$orig_rows[$row]]); - $final_line = isset($final_diffs[$final_rows[$row]]) - ? $final_diffs[$final_rows[$row]] - : htmlspecialchars($final[$final_rows[$row]]); + // If we have a word based diff, use it. Otherwise, use the normal line. + if ( isset( $orig_diffs[$orig_rows[$row]] ) ) + $orig_line = $orig_diffs[$orig_rows[$row]]; + elseif ( isset( $orig[$orig_rows[$row]] ) ) + $orig_line = htmlspecialchars($orig[$orig_rows[$row]]); + else + $orig_line = ''; - if ( $orig_rows[$row] < 0 ) { // Orig is blank. This is really an added row. + if ( isset( $final_diffs[$final_rows[$row]] ) ) + $final_line = $final_diffs[$final_rows[$row]]; + elseif ( isset( $final[$final_rows[$row]] ) ) + $final_line = htmlspecialchars($final[$final_rows[$row]]); + else + $final_line = ''; + + if ( $orig_rows[$row] < 0 ) { // Orig is blank. This is really an added row. $r .= $this->_added( array($final_line), false ); - } elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row. + } elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row. $r .= $this->_deleted( array($orig_line), false ); } else { // A true changed row. $r .= '