2017-12-16 00:26:25 +00:00
|
|
|
<?php
|
|
|
|
|
2021-01-03 11:12:16 +00:00
|
|
|
namespace MediaWiki\Extension\AbuseFilter;
|
|
|
|
|
|
|
|
use Diff;
|
|
|
|
use TableDiffFormatter;
|
|
|
|
|
2017-12-16 00:26:25 +00:00
|
|
|
/**
|
2022-09-29 16:54:36 +00:00
|
|
|
* Like TableDiffFormatter, but will always render the full context (even for empty diffs).
|
|
|
|
*
|
2021-01-03 11:12:16 +00:00
|
|
|
* @todo Consider moving to MW core (as a separate class, or as an option to TableDiffFormatter)
|
2017-12-16 00:26:25 +00:00
|
|
|
*
|
2022-09-29 16:54:36 +00:00
|
|
|
* @internal
|
2017-12-16 00:26:25 +00:00
|
|
|
*/
|
|
|
|
class TableDiffFormatterFullContext extends TableDiffFormatter {
|
|
|
|
/**
|
|
|
|
* Format a diff.
|
|
|
|
*
|
|
|
|
* @param Diff $diff
|
|
|
|
* @return string The formatted output.
|
|
|
|
*/
|
2018-04-04 21:14:25 +00:00
|
|
|
public function format( $diff ) {
|
2017-12-16 00:26:25 +00:00
|
|
|
$xlen = $ylen = 0;
|
|
|
|
|
|
|
|
// Calculate the length of the left and the right side
|
|
|
|
foreach ( $diff->edits as $edit ) {
|
|
|
|
if ( $edit->orig ) {
|
|
|
|
$xlen += count( $edit->orig );
|
|
|
|
}
|
|
|
|
if ( $edit->closing ) {
|
|
|
|
$ylen += count( $edit->closing );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Just render the diff with no preprocessing
|
|
|
|
$this->startDiff();
|
|
|
|
$this->block( 1, $xlen, 1, $ylen, $diff->edits );
|
|
|
|
$end = $this->endDiff();
|
|
|
|
|
|
|
|
return $end;
|
|
|
|
}
|
|
|
|
}
|