textfilters)) { error ('Filter not enabled!'); } else { $filters = explode(',', $CFG->textfilters); if (array_search('filter/tex', $filters) === FALSE) { error ('Filter not enabled!'); } } // disable moodle specific debug messages disable_debugging(); require_once($CFG->libdir.'/filelib.php'); require_once('defaultsettings.php' ); require_once('latex.php'); $CFG->texfilterdir = 'filter/tex'; $CFG->teximagedir = 'filter/tex'; // check/initialise default configuration for filter (in defaultsettings.php) tex_defaultsettings(); $cmd = ''; // Initialise these variables $status = ''; error_reporting(E_ALL); $relativepath = get_file_argument('pix.php'); $args = explode('/', trim($relativepath, '/')); if (count($args) == 1) { $image = $args[0]; $pathname = $CFG->dataroot.'/'.$CFG->teximagedir.'/'.$image; } else { error('No valid arguments supplied'); } if (!file_exists($pathname)) { $md5 = str_replace('.gif','',$image); if ($texcache = get_record('cache_filters', 'filter', 'tex', 'md5key', $md5)) { if (!file_exists($CFG->dataroot.'/'.$CFG->teximagedir)) { make_upload_directory($CFG->teximagedir); } // try and render with latex first $latex = new latex(); $density = $CFG->filter_tex_density; $background = $CFG->filter_tex_latexbackground; $latex_path = $latex->render( $texcache->rawtext, $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; if ((PHP_OS == "WINNT") || (PHP_OS == "WIN32") || (PHP_OS == "Windows")) { $texexp = str_replace('"','\"',$texexp); $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex.exe"; $cmd = str_replace(' ','^ ',$cmd); $cmd .= " ++ -e \"$pathname\" -- \"$texexp\""; } else if (is_executable("$CFG->dirroot/$CFG->texfilterdir/mimetex")) { /// Use the custom binary $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex -e $pathname -- ". escapeshellarg($texexp); } else { /// Auto-detect the right TeX binary switch (PHP_OS) { case "Linux": $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.linux\" -e \"$pathname\" -- ". escapeshellarg($texexp); break; case "Darwin": $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin\" -e \"$pathname\" -- ". escapeshellarg($texexp); break; case "FreeBSD": $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.freebsd\" -e \"$pathname\" ". escapeshellarg($texexp); break; default: /// Nothing was found, so tell them how to fix it. if (debugging()) { echo "Make sure you have an appropriate MimeTeX binary here:\n\n"; echo " $CFG->dirroot/$CFG->texfilterdir/mimetex\n\n"; echo "and that it has the right permissions set on it as executable program.\n\n"; echo "You can get the latest binaries for your ".PHP_OS." platform from: \n\n"; echo " http://moodle.org/download/mimetex/"; } else { echo "Mimetex executable was not found,\n"; echo "Please turn on debug mode in site configuration to see more info here."; } die; break; } } system($cmd, $status); } } } if (file_exists($pathname)) { send_file($pathname, $image); } else { if (debugging()) { echo "The shell command
$cmd
returned status = $status
\n"; echo "Image not found!
"; echo "Please try the wwwroot/$CFG->texfilterdir/texdebug.php\">debugging script"; } else { echo "Image not found!
"; echo "Please try the wwwroot/$CFG->texfilterdir/texdebug.php\">debugging script
"; echo "Please turn on debug mode in site configuration to see more info here."; } } ?>