aboutsummaryrefslogtreecommitdiffstats
path: root/texvc.phtml
diff options
context:
space:
mode:
Diffstat (limited to 'texvc.phtml')
-rw-r--r--texvc.phtml254
1 files changed, 133 insertions, 121 deletions
diff --git a/texvc.phtml b/texvc.phtml
index 7a9127185227..7f5e1a04721e 100644
--- a/texvc.phtml
+++ b/texvc.phtml
@@ -7,148 +7,160 @@ print "?xml version=\"1.0\" encoding=\"utf-8\"?";
print ">";
?>
<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>texvc</title></head><body>
<?php
print "<form method=\"post\" action=\"{$wgServer}{$wgScriptPath}/texvc_cgi.phtml\">"
?>
<textarea name='math' rows='10' cols='80'><?
- global $math;
- $math = preg_replace ("/\\\\\\\\/", '\\', $math);
- print $math;
+ global $math;
+ $math = preg_replace ("/\\\\\\\\/", '\\', $math);
+ print $math;
?></textarea><br /><input type="submit" value="Preview" name="preview" /></form>
<?php
function xlinkToMathImage ( $tex, $outputhash )
{
- global $wgMathPath;
- return "<img src=\"".$wgMathPath."/".$outputhash.".png\" alt=\"".wfEscapeHTML($tex)."\" />";
+ global $wgMathPath;
+ return "<img src=\"".$wgMathPath."/".$outputhash.".png\" alt=\"".wfEscapeHTML($tex)."\" />";
}
function texvc_cgi_renderMath( $tex )
{
- global $wgMathDirectory, $wgTmpDirectory, $wgInputEncoding;
- $mf = wfMsg( "math_failure" );
- $munk = wfMsg( "math_unknown_error" );
-
- $image = "";
- $outhtml = "";
- $outtex = "";
-
- $fname = "texvc_cgi_renderMath";
-
- $md5 = md5($tex);
- $md5_sql = mysql_escape_string(pack("H32", $md5));
- $sql = "SELECT math_outputhash,math_html_conservativeness,math_html,math_mathml FROM math WHERE math_inputhash = '".$md5_sql."'";
-
- $res = wfQuery( $sql, 0, $fname );
- if ( wfNumRows( $res ) == 0 )
- {
- $cmd = "./math/texvc ".escapeshellarg($wgTmpDirectory)." ".
- escapeshellarg($wgMathDirectory)." ".escapeshellarg($tex)." ".escapeshellarg($wgInputEncoding);
- $contents = `$cmd`;
-
- if (strlen($contents) == 0)
- return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
- $retval = substr ($contents, 0, 1);
-
- if (($retval == "C") || ($retval == "M") || ($retval == "L")) {
- if ($retval == "C")
- $conservativeness = 2;
- else if ($retval == "M")
- $conservativeness = 1;
- else
- $conservativeness = 0;
- $outdata = substr ($contents, 33);
-
- $i = strpos($outdata, "\000");
-
- $outhtml = substr($outdata, 0, $i);
- $mathml = substr($outdata, $i+1);
-
- $sql_html = "'".mysql_escape_string($outhtml)."'";
- $sql_mathml = "'".mysql_escape_string($mathml)."'";
- } else if (($retval == "c") || ($retval == "m") || ($retval == "l")) {
- $outhtml = substr ($contents, 33);
- if ($retval == "c")
- $conservativeness = 2;
- else if ($retval == "m")
- $conservativeness = 1;
- else
- $conservativeness = 0;
- $sql_html = "'".mysql_escape_string($outhtml)."'";
- $mathml = '';
- $sql_mathml = 'NULL';
- } else if ($retval == "X") {
- $outhtml = '';
- $mathml = substr ($contents, 33);
- $sql_html = 'NULL';
- $sql_mathml = "'".mysql_escape_string($mathml)."'";
- $conservativeness = 0;
- } else if ($retval == "+") {
- $outhtml = '';
- $mathml = '';
- $sql_html = 'NULL';
- $sql_mathml = 'NULL';
- $conservativeness = 0;
+ global $wgMathDirectory, $wgTmpDirectory, $wgInputEncoding;
+ $dbr =& wfGetDB( DB_READ );
+ $mf = wfMsg( "math_failure" );
+ $munk = wfMsg( "math_unknown_error" );
+
+ $image = "";
+ $outhtml = "";
+ $outtex = "";
+
+ $fname = "texvc_cgi_renderMath";
+
+ $md5 = md5($tex);
+ $md5_sql = pack("H32", $md5);
+
+ $mathTable = $dbr->tableName( 'math' );
+ $rpage = $dbr->getArray( 'math', array('math_outputhash','math_html_conservativeness','math_html','math_mathml'),
+ array( 'math_inputhash' => $md5_sql ) );
+
+ if ( $rpage === false )
+ {
+ $cmd = "./math/texvc ".wfEscapeShellArg($wgTmpDirectory)." ".
+ wfEscapeShellArg($wgMathDirectory)." ".wfEscapeShellArg($tex)." ".wfEscapeShellArg($wgInputEncoding);
+ $contents = `$cmd`;
+
+ if (strlen($contents) == 0)
+ return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
+ $retval = substr ($contents, 0, 1);
+
+ if (($retval == "C") || ($retval == "M") || ($retval == "L")) {
+ if ($retval == "C")
+ $conservativeness = 2;
+ else if ($retval == "M")
+ $conservativeness = 1;
+ else
+ $conservativeness = 0;
+ $outdata = substr ($contents, 33);
+
+ $i = strpos($outdata, "\000");
+
+ $outhtml = substr($outdata, 0, $i);
+ $mathml = substr($outdata, $i+1);
+
+ #$sql_html = "'".mysql_escape_string($outhtml)."'";
+ #$sql_mathml = "'".mysql_escape_string($mathml)."'";
+ } else if (($retval == "c") || ($retval == "m") || ($retval == "l")) {
+ $outhtml = substr ($contents, 33);
+ if ($retval == "c")
+ $conservativeness = 2;
+ else if ($retval == "m")
+ $conservativeness = 1;
+ else
+ $conservativeness = 0;
+ #$sql_html = "'".mysql_escape_string($outhtml)."'";
+ $mathml = NULL;
+ #$sql_mathml = 'NULL';
+ } else if ($retval == "X") {
+ $outhtml = NULL;
+ $mathml = substr ($contents, 33);
+ #$sql_html = 'NULL';
+ #$sql_mathml = "'".mysql_escape_string($mathml)."'";
+ $conservativeness = 0;
+ } else if ($retval == "+") {
+ $outhtml = NULL;
+ $mathml = NULL;
+ #$sql_html = 'NULL';
+ #$sql_mathml = 'NULL';
+ $conservativeness = 0;
+ } else {
+ if ($retval == "E")
+ $errmsg = wfMsg( "math_lexing_error" );
+ else if ($retval == "S")
+ $errmsg = wfMsg( "math_syntax_error" );
+ else if ($retval == "F")
+ $errmsg = wfMsg( "math_unknown_function" );
+ else
+ $errmsg = $munk;
+ return "<h3>".$mf." (".$errmsg.substr($contents, 1)."): ".wfEscapeHTML($tex)."</h3>";
+ }
+
+ $outmd5 = substr ($contents, 1, 32);
+ if (!preg_match("/^[a-f0-9]{32}$/", $outmd5))
+ return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
+
+ $outmd5_sql = pack("H32", $outmd5);
+
+ # Someone may have inserted the same hash since the SELECT, but that's no big deal, just ignore errors
+ $dbw =& wfGetDB( DB_WRITE );
+ $dbw->insertArray( 'math',
+ array(
+ 'math_inputhash' => $md5_sql,
+ 'math_outputhash' => $outmd5_sql,
+ 'math_html_conservativeness' => $conservativeness,
+ 'math_html' => $outhtml,
+ 'math_mathml' => $mathml,
+ ), $fname, array( 'IGNORE' )
+ );
+
+// we don't really care if it fails
} else {
- if ($retval == "E")
- $errmsg = wfMsg( "math_lexing_error" );
- else if ($retval == "S")
- $errmsg = wfMsg( "math_syntax_error" );
- else if ($retval == "F")
- $errmsg = wfMsg( "math_unknown_function" );
- else
- $errmsg = $munk;
- return "<h3>".$mf." (".$errmsg.substr($contents, 1)."): ".wfEscapeHTML($tex)."</h3>";
+ $rpage = $dbr->fetchObject ( $res );
+ $outmd5 = unpack ("H32md5", $rpage->math_outputhash);
+ $outmd5 = $outmd5 ['md5'];
+ $outhtml = $rpage->math_html;
+ $conservativeness = $rpage->math_html_conservativeness;
+ $mathml = $rpage->math_mathml;
}
-
- $outmd5 = substr ($contents, 1, 32);
- if (!preg_match("/^[a-f0-9]{32}$/", $outmd5))
- return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
-
- $outmd5_sql = mysql_escape_string(pack("H32", $outmd5));
-
- $sql = "INSERT INTO math VALUES ('".$md5_sql."', '".$outmd5_sql."', ".$conservativeness.", ".$sql_html.", ".$sql_mathml.")";
-
- $res = wfQuery( $sql, 0, $fname );
-// we don't really care if it fails
- } else {
- $rpage = wfFetchObject ( $res );
- $outmd5 = unpack ("H32md5", $rpage->math_outputhash);
- $outmd5 = $outmd5 ['md5'];
- $outhtml = $rpage->math_html;
- $conservativeness = $rpage->math_html_conservativeness;
- $mathml = $rpage->math_mathml;
- }
- if ($mathml == '')
- $mathml = "<h3>Failed to generate MathML</h3>";
- else
- $mathml = "<h3>MathML</h3><math xmlns=\"http://www.w3.org/1998/Math/MathML\">$mathml</math>";
- $image = "<h3>Image</h3>" . xlinkToMathImage ( $tex, $outmd5 );
- $cmd = "./math/texvc_tex ".escapeshellarg($tex)." ".escapeshellarg($wgInputEncoding);
- $outtex = `$cmd`;
-
- if ( $outhtml == '' )
- $outhtml = "<h3>Failed to generate HTML</h3>";
- else
- if ( $conservativeness == 2)
- $outhtml = "<h3>HTML (conservative)</h3>" . $outhtml;
- else if ( $conservativeness == 1)
- $outhtml = "<h3>HTML (moderate)</h3>" . $outhtml;
+ if ( is_null( $mathml ) || $mathml === '' )
+ $mathml = "<h3>Failed to generate MathML</h3>";
else
- $outhtml = "<h3>HTML (liberal)</h3>" . $outhtml;
+ $mathml = "<h3>MathML</h3><math xmlns=\"http://www.w3.org/1998/Math/MathML\">$mathml</math>";
+ $image = "<h3>Image</h3>" . xlinkToMathImage ( $tex, $outmd5 );
+ $cmd = "./math/texvc_tex ".escapeshellarg($tex)." ".escapeshellarg($wgInputEncoding);
+ $outtex = `$cmd`;
- if ( $outtex == '' )
- $outtex = "<h3>Failed to generate TeX</h3>";
- else
- $outtex = "<h3>TeX</h3>" . wfEscapeHTML($outtex);
+ if ( is_null( $outhtml ) || $outhtml === '' )
+ $outhtml = "<h3>Failed to generate HTML</h3>";
+ else
+ if ( $conservativeness == 2)
+ $outhtml = "<h3>HTML (conservative)</h3>" . $outhtml;
+ else if ( $conservativeness == 1)
+ $outhtml = "<h3>HTML (moderate)</h3>" . $outhtml;
+ else
+ $outhtml = "<h3>HTML (liberal)</h3>" . $outhtml;
+
+ if ( $outtex == '' )
+ $outtex = "<h3>Failed to generate TeX</h3>";
+ else
+ $outtex = "<h3>TeX</h3>" . wfEscapeHTML($outtex);
- return $outtex . $outhtml . $mathml . $image;
+ return $outtex . $outhtml . $mathml . $image;
}
global $math;
if ($math != '')
- print texvc_cgi_renderMath($math);
+ print texvc_cgi_renderMath($math);
?>
</body></html>