summaryrefslogtreecommitdiff
path: root/includes/Math.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Math.php')
-rw-r--r--includes/Math.php27
1 files changed, 18 insertions, 9 deletions
diff --git a/includes/Math.php b/includes/Math.php
index 8cf9b8d8..0e136d5f 100644
--- a/includes/Math.php
+++ b/includes/Math.php
@@ -37,7 +37,8 @@ class MathRenderer {
if( $this->mode == MW_MATH_SOURCE ) {
# No need to render or parse anything more!
- return ('$ '.htmlspecialchars( $this->tex ).' $');
+ # New lines are replaced with spaces, which avoids confusing our parser (bugs 23190, 22818)
+ return ('<span class="tex">$ ' . str_replace( "\n", " ", htmlspecialchars( $this->tex ) ) . ' $</span>');
}
if( $this->tex == '' ) {
return; # bug 8372
@@ -55,7 +56,7 @@ class MathRenderer {
}
}
- if( function_exists( 'is_executable' ) && !is_executable( $wgTexvc ) ) {
+ if( !is_executable( $wgTexvc ) ) {
return $this->_error( 'math_notexvc' );
}
$cmd = $wgTexvc . ' ' .
@@ -71,7 +72,7 @@ class MathRenderer {
}
wfDebug( "TeX: $cmd\n" );
- $contents = `$cmd`;
+ $contents = wfShellExec( $cmd );
wfDebug( "TeX output:\n $contents\n---\n" );
if (strlen($contents) == 0) {
@@ -153,7 +154,10 @@ class MathRenderer {
$hashpath = $this->_getHashPath();
if( !file_exists( $hashpath ) ) {
- if( !@wfMkdirParents( $hashpath, 0755 ) ) {
+ wfSuppressWarnings();
+ $ret = wfMkdirParents( $hashpath, 0755 );
+ wfRestoreWarnings();
+ if( !$ret ) {
return $this->_error( 'math_bad_output' );
}
} elseif( !is_dir( $hashpath ) || !is_writable( $hashpath ) ) {
@@ -231,7 +235,9 @@ class MathRenderer {
if( file_exists( $filename ) ) {
if( filesize( $filename ) == 0 ) {
// Some horrible error corrupted stuff :(
- @unlink( $filename );
+ wfSuppressWarnings();
+ unlink( $filename );
+ wfRestoreWarnings();
} else {
return true;
}
@@ -241,7 +247,10 @@ class MathRenderer {
$hashpath = $this->_getHashPath();
if( !file_exists( $hashpath ) ) {
- if( !@wfMkdirParents( $hashpath, 0755 ) ) {
+ wfSuppressWarnings();
+ $ret = wfMkdirParents( $hashpath, 0755 );
+ wfRestoreWarnings();
+ if( !$ret ) {
return false;
}
} elseif( !is_dir( $hashpath ) || !is_writable( $hashpath ) ) {
@@ -323,10 +332,10 @@ class MathRenderer {
.'/'. substr($this->hash, 2, 1);
}
- public static function renderMath( $tex, $params=array() ) {
- global $wgUser;
+ public static function renderMath( $tex, $params=array(), ParserOptions $parserOptions = null ) {
$math = new MathRenderer( $tex, $params );
- $math->setOutputMode( $wgUser->getOption('math'));
+ if ( $parserOptions )
+ $math->setOutputMode( $parserOptions->getMath() );
return $math->render();
}
}