mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00

Prevent moodle_url error, cleanup entity encoding and decoding, disable tex source view when TeX and Algebra plugins disabled, localise TeX source popup and prevent phishing attempts, fix executable permission of Algebra pearl script, prevent image error in tex debug when Tex/Ghostscript not configured properly, fix copyright blocks and phpdocs, improve coding style, fix wrong source display link in Algebra filter.
76 lines
2.9 KiB
PHP
76 lines
2.9 KiB
PHP
<?PHP
|
|
// This function fetches math. images from the data directory
|
|
// If not, it obtains the corresponding TeX expression from the cache_tex db table
|
|
// and uses mimeTeX to create the image file
|
|
|
|
// disable moodle specific debug messages and any errors in output
|
|
define('NO_DEBUG_DISPLAY', true);
|
|
define('NO_MOODLE_COOKIES', true); // Because it interferes with caching
|
|
|
|
require_once('../../config.php');
|
|
|
|
if (!filter_is_enabled('filter/tex')) {
|
|
print_error('filternotenabled');
|
|
}
|
|
|
|
require_once($CFG->libdir.'/filelib.php');
|
|
require_once($CFG->dirroot.'/filter/tex/lib.php');
|
|
require_once($CFG->dirroot.'/filter/tex/latex.php');
|
|
|
|
$cmd = ''; // Initialise these variables
|
|
$status = '';
|
|
|
|
$relativepath = get_file_argument();
|
|
|
|
$args = explode('/', trim($relativepath, '/'));
|
|
|
|
if (count($args) == 1) {
|
|
$image = $args[0];
|
|
$pathname = $CFG->dataroot.'/filter/tex/'.$image;
|
|
} else {
|
|
print_error('invalidarguments', 'error');
|
|
}
|
|
|
|
if (!file_exists($pathname)) {
|
|
$md5 = str_replace(".{$CFG->filter_tex_convertformat}",'',$image);
|
|
if ($texcache = $DB->get_record('cache_filters', array('filter'=>'tex', 'md5key'=>$md5))) {
|
|
if (!file_exists($CFG->dataroot.'/filter/tex')) {
|
|
make_upload_directory('filter/tex');
|
|
}
|
|
|
|
// try and render with latex first
|
|
$latex = new latex();
|
|
$density = $CFG->filter_tex_density;
|
|
$background = $CFG->filter_tex_latexbackground;
|
|
$texexp = $texcache->rawtext; // the entities are now decoded before inserting to DB
|
|
$latex_path = $latex->render($texexp, $md5, 12, $density, $background);
|
|
if ($latex_path) {
|
|
copy($latex_path, $pathname);
|
|
$latex->clean_up($md5);
|
|
|
|
} else {
|
|
// failing that, use mimetex
|
|
$texexp = $texcache->rawtext;
|
|
$texexp = str_replace('<', '<', $texexp);
|
|
$texexp = str_replace('>', '>', $texexp);
|
|
$texexp = preg_replace('!\r\n?!', ' ', $texexp);
|
|
$texexp = '\Large '.$texexp;
|
|
$cmd = filter_tex_get_cmd($pathname, $texexp);
|
|
system($cmd, $status);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (file_exists($pathname)) {
|
|
send_file($pathname, $image);
|
|
} else {
|
|
if (debugging()) {
|
|
echo "The shell command<br />$cmd<br />returned status = $status<br />\n";
|
|
echo "Image not found!<br />";
|
|
echo "Please try the <a href=\"$CFG->wwwroot/filter/tex/texdebug.php\">debugging script</a>";
|
|
} else {
|
|
echo "Image not found!<br />";
|
|
echo "Please try the <a href=\"$CFG->wwwroot/filter/tex/texdebug.php\">debugging script</a><br />";
|
|
echo "Please turn on debug mode in site configuration to see more info here.";
|
|
}
|
|
}
|