diff --git a/lang/en/qtype_stack.php b/lang/en/qtype_stack.php
index 3f47c59dc4476cd62f5887d4deacef1398d56fb9..0ab37eae092c8bfea1780bced80b94e1edfd1970 100644
--- a/lang/en/qtype_stack.php
+++ b/lang/en/qtype_stack.php
@@ -333,7 +333,8 @@ $string['settingdefaultquestionoptions_desc'] = 'Used when creating a new questi
$string['settingmathsdisplay'] = 'Maths filter';
$string['settingmathsdisplay_mathjax'] = 'MathJax';
$string['settingmathsdisplay_tex'] = 'Moodle TeX filter';
-$string['settingmathsdisplay_maths'] = 'OU maths filter';
+$string['settingmathsdisplay_maths'] = 'Old OU maths filter';
+$string['settingmathsdisplay_oumaths'] = 'New OU maths filter';
$string['settingmathsdisplay_desc'] = 'The method used to display maths. If you select MathJax, then you will need to follow the instructions on the Healthcheck page to set it up. If you select a filter, then you must ensure that filter is enabled on the Manage filters configuration page.';
$string['settingsmathsdisplayheading'] = 'Maths display options';
$string['settingsmaximasettings'] = 'Connecting to Maxima';
diff --git a/settingslib.php b/settingslib.php
index 63754078d67c7b4a78844f5e32f1b9b2f6064e21..c2bd61e3f482fc7d3b0ed6afd65cd2d0a9b6f2ae 100644
--- a/settingslib.php
+++ b/settingslib.php
@@ -56,6 +56,10 @@ class qtype_stack_admin_setting_maths_display_method extends admin_setting_confi
$this->choices['maths'] = get_string('settingmathsdisplay_maths', 'qtype_stack');
}
+ if (array_key_exists('oumaths', $filters)) {
+ $this->choices['oumaths'] = get_string('settingmathsdisplay_oumaths', 'qtype_stack');
+ }
+
return true;
}
}
diff --git a/stack/mathsoutput/mathsoutputoumaths.class.php b/stack/mathsoutput/mathsoutputoumaths.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..f7f0c1104e1603785e39ae85cc58f4c4a31656c6
--- /dev/null
+++ b/stack/mathsoutput/mathsoutputoumaths.class.php
@@ -0,0 +1,56 @@
+<?php
+// This file is part of Stack - http://stack.bham.ac.uk/
+//
+// Stack is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Stack is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Stack. If not, see <http://www.gnu.org/licenses/>.
+
+
+global $CFG;
+require_once($CFG->libdir . '/filterlib.php');
+require_once(__DIR__ . '/mathsoutputfilterbase.class.php');
+
+
+/**
+ * STACK maths output methods for using The OU's maths filter.
+ *
+ * @copyright 2012 The Open University
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class stack_maths_output_oumaths extends stack_maths_output_filter_base {
+
+ /**
+ * @return boolean is the OU maths filter installed?
+ */
+ public static function filter_is_installed() {
+ global $CFG;
+ return file_exists($CFG->dirroot . '/filter/maths/filter.php');
+ }
+
+ protected function initialise_delimiters() {
+ $this->displaystart = '<tex mode="display">';
+ $this->displayend = '</tex>';
+ $this->inlinestart = '<tex mode="inline">';
+ $this->inlineend = '</tex>';
+ }
+
+ protected function make_filter() {
+ global $CFG;
+
+ if (!self::filter_is_installed()) {
+ throw new coding_exception('The OU maths filter is not installed.');
+ }
+
+ require_once($CFG->dirroot . '/filter/oumaths/filter.php');
+ return new filter_oumaths(context_system::instance(), array());
+ }
+}