2015-08-31 04:42:55 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MediaWiki\Tidy;
|
|
|
|
|
|
2018-06-26 13:58:47 +00:00
|
|
|
/**
|
|
|
|
|
* @deprecated since 1.32, use RemexDriver
|
|
|
|
|
*/
|
2015-08-31 04:42:55 +00:00
|
|
|
class RaggettInternalPHP extends RaggettBase {
|
|
|
|
|
/**
|
|
|
|
|
* Use the HTML tidy extension to use the tidy library in-process,
|
|
|
|
|
* saving the overhead of spawning a new process.
|
|
|
|
|
*
|
|
|
|
|
* @param string $text HTML to check
|
|
|
|
|
* @param bool $stderr Whether to read result from error status instead of output
|
2018-06-26 21:14:43 +00:00
|
|
|
* @param int|null &$retval Exit code (-1 on internal error)
|
2015-08-31 04:42:55 +00:00
|
|
|
* @return string|null
|
|
|
|
|
*/
|
|
|
|
|
protected function cleanWrapped( $text, $stderr = false, &$retval = null ) {
|
|
|
|
|
if ( !class_exists( 'tidy' ) ) {
|
|
|
|
|
wfWarn( "Unable to load internal tidy class." );
|
|
|
|
|
$retval = -1;
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$tidy = new \tidy;
|
|
|
|
|
$tidy->parseString( $text, $this->config['tidyConfigFile'], 'utf8' );
|
|
|
|
|
|
|
|
|
|
if ( $stderr ) {
|
|
|
|
|
$retval = $tidy->getStatus();
|
|
|
|
|
return $tidy->errorBuffer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$tidy->cleanRepair();
|
|
|
|
|
$retval = $tidy->getStatus();
|
|
|
|
|
if ( $retval == 2 ) {
|
|
|
|
|
// 2 is magic number for fatal error
|
2016-10-13 05:34:26 +00:00
|
|
|
// https://secure.php.net/manual/en/tidy.getstatus.php
|
2015-08-31 04:42:55 +00:00
|
|
|
$cleansource = null;
|
|
|
|
|
} else {
|
|
|
|
|
$cleansource = tidy_get_output( $tidy );
|
|
|
|
|
if ( !empty( $this->config['debugComment'] ) && $retval > 0 ) {
|
|
|
|
|
$cleansource .= "<!--\nTidy reports:\n" .
|
|
|
|
|
str_replace( '-->', '-->', $tidy->errorBuffer ) .
|
|
|
|
|
"\n-->";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $cleansource;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function supportsValidate() {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|