summaryrefslogtreecommitdiff
path: root/includes/Math.php
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2009-02-22 13:37:51 +0100
committerPierre Schmitz <pierre@archlinux.de>2009-02-22 13:37:51 +0100
commitb9b85843572bf283f48285001e276ba7e61b63f6 (patch)
tree4c6f4571552ada9ccfb4030481dcf77308f8b254 /includes/Math.php
parentd9a20acc4e789cca747ad360d87ee3f3e7aa58c1 (diff)
updated to MediaWiki 1.14.0
Diffstat (limited to 'includes/Math.php')
-rw-r--r--includes/Math.php48
1 files changed, 36 insertions, 12 deletions
diff --git a/includes/Math.php b/includes/Math.php
index 871e9fc3..2ed16033 100644
--- a/includes/Math.php
+++ b/includes/Math.php
@@ -47,7 +47,7 @@ class MathRenderer {
if( !$this->_recall() ) {
# Ensure that the temp and output directories are available before continuing...
if( !file_exists( $wgTmpDirectory ) ) {
- if( !@mkdir( $wgTmpDirectory ) ) {
+ if( !wfMkdirParents( $wgTmpDirectory ) ) {
return $this->_error( 'math_bad_tmpdir' );
}
} elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) {
@@ -145,6 +145,10 @@ class MathRenderer {
return $this->_error( 'math_image_error' );
}
+ if( filesize( "$wgTmpDirectory/{$this->hash}.png" ) == 0 ) {
+ return $this->_error( 'math_image_error' );
+ }
+
$hashpath = $this->_getHashPath();
if( !file_exists( $hashpath ) ) {
if( !@wfMkdirParents( $hashpath, 0755 ) ) {
@@ -172,10 +176,17 @@ class MathRenderer {
'math_html_conservativeness' => $this->conservativeness,
'math_html' => $this->html,
'math_mathml' => $this->mathml,
- ), $fname, array( 'IGNORE' )
+ ), $fname
);
}
-
+
+ // If we're replacing an older version of the image, make sure it's current.
+ global $wgUseSquid;
+ if ( $wgUseSquid ) {
+ $urls = array( $this->_mathImageUrl() );
+ $u = new SquidUpdate( $urls );
+ $u->doUpdate();
+ }
}
return $this->_doRender();
@@ -209,8 +220,14 @@ class MathRenderer {
$this->html = $rpage->math_html;
$this->mathml = $rpage->math_mathml;
- if( file_exists( $this->_getHashPath() . "/{$this->hash}.png" ) ) {
- return true;
+ $filename = $this->_getHashPath() . "/{$this->hash}.png";
+ if( file_exists( $filename ) ) {
+ if( filesize( $filename ) == 0 ) {
+ // Some horrible error corrupted stuff :(
+ @unlink( $filename );
+ } else {
+ return true;
+ }
}
if( file_exists( $wgMathDirectory . "/{$this->hash}.png" ) ) {
@@ -268,10 +285,7 @@ class MathRenderer {
}
function _linkToMathImage() {
- global $wgMathPath;
- $url = "$wgMathPath/" . substr($this->hash, 0, 1)
- .'/'. substr($this->hash, 1, 1) .'/'. substr($this->hash, 2, 1)
- . "/{$this->hash}.png";
+ $url = $this->_mathImageUrl();
return Xml::element( 'img',
$this->_attribs(
@@ -283,14 +297,24 @@ class MathRenderer {
'src' => $url ) ) );
}
+ function _mathImageUrl() {
+ global $wgMathPath;
+ $dir = $this->_getHashSubPath();
+ return "$wgMathPath/$dir/{$this->hash}.png";
+ }
+
function _getHashPath() {
global $wgMathDirectory;
- $path = $wgMathDirectory .'/'. substr($this->hash, 0, 1)
- .'/'. substr($this->hash, 1, 1)
- .'/'. substr($this->hash, 2, 1);
+ $path = $wgMathDirectory .'/' . $this->_getHashSubPath();
wfDebug( "TeX: getHashPath, hash is: $this->hash, path is: $path\n" );
return $path;
}
+
+ function _getHashSubPath() {
+ return substr($this->hash, 0, 1)
+ .'/'. substr($this->hash, 1, 1)
+ .'/'. substr($this->hash, 2, 1);
+ }
public static function renderMath( $tex, $params=array() ) {
global $wgUser;