aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorJean-Michel Vedrine <vedrine@vedrine.org>2012-09-09 16:54:35 +0200
committerJean-Michel Vedrine <vedrine@vedrine.org>2012-09-09 16:54:35 +0200
commit96bee2b33467a1ce54f88c77b8a867ef1f7a9a97 (patch)
tree27fe7dd14fd3742ad3a9b0eed2b1adbcddd4c3a8 /db
First version of algebra question type initially written by Roger Moore for Moodle 2.3
Diffstat (limited to 'db')
-rw-r--r--db/install.xml47
-rw-r--r--db/upgrade.php59
-rw-r--r--db/upgradelib.php71
3 files changed, 177 insertions, 0 deletions
diff --git a/db/install.xml b/db/install.xml
new file mode 100644
index 0000000..51b8d85
--- /dev/null
+++ b/db/install.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<XMLDB PATH="question/type/symbollic/db" VERSION="20080516" COMMENT="XMLDB file for Moodle question/type/algebra">
+ <TABLES>
+ <TABLE NAME="question_algebra" COMMENT="Options for algebra questions" NEXT="question_algebra_variables">
+ <FIELDS>
+ <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true"
+ NEXT="questionid"/>
+ <FIELD NAME="questionid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0"
+ SEQUENCE="false" PREVIOUS="id" NEXT="compareby"/>
+ <FIELD NAME="compareby" TYPE="char" LENGTH="20" NOTNULL="true" UNSIGNED="false" DEFAULT="evaluated"
+ SEQUENCE="false" PREVIOUS="questionid" NEXT="nchecks"/>
+ <FIELD NAME="nchecks" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="10"
+ SEQUENCE="false" PREVIOUS="compareby" NEXT="tolerance"/>
+ <FIELD NAME="tolerance" TYPE="float" NOTNULL="true" UNSIGNED="false"
+ SEQUENCE="false" PREVIOUS="nchecks" NEXT="disallow"/>
+ <FIELD NAME="disallow" TYPE="text" LENGTH="small" NOTNULL="true" UNSIGNED="false"
+ SEQUENCE="false" PREVIOUS="tolerance" NEXT="allowedfuncs"/>
+ <FIELD NAME="allowedfuncs" TYPE="text" LENGTH="small" NOTNULL="true" UNSIGNED="false"
+ SEQUENCE="false" PREVIOUS="disallow" NEXT="answerprefix"/>
+ <FIELD NAME="answerprefix" TYPE="text" LENGTH="small" NOTNULL="true" UNSIGNED="false"
+ SEQUENCE="false" PREVIOUS="allowedfuncs"/>
+ </FIELDS>
+ <KEYS>
+ <KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="questionid"/>
+ <KEY NAME="questionid" TYPE="foreign" FIELDS="questionid" REFTABLE="question" REFFIELDS="id" PREVIOUS="primary"/>
+ </KEYS>
+ </TABLE>
+ <TABLE NAME="question_algebra_variables" COMMENT="Variables for algebra questions" PREVIOUS="question_algebra">
+ <FIELDS>
+ <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true"
+ NEXT="question"/>
+ <FIELD NAME="question" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0"
+ SEQUENCE="false" PREVIOUS="id" NEXT="name"/>
+ <FIELD NAME="name" TYPE="char" LENGTH="30" NOTNULL="true" UNSIGNED="false"
+ SEQUENCE="false" PREVIOUS="question" NEXT="min"/>
+ <FIELD NAME="min" TYPE="char" LENGTH="30" NOTNULL="true" UNSIGNED="false" DEFAULT="-"
+ SEQUENCE="false" PREVIOUS="name" NEXT="max"/>
+ <FIELD NAME="max" TYPE="char" LENGTH="30" NOTNULL="true" UNSIGNED="false" DEFAULT="-"
+ SEQUENCE="false" PREVIOUS="min"/>
+ </FIELDS>
+ <KEYS>
+ <KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="question"/>
+ <KEY NAME="question" TYPE="foreign" FIELDS="question" REFTABLE="question" REFFIELDS="id" PREVIOUS="primary"/>
+ </KEYS>
+ </TABLE>
+ </TABLES>
+</XMLDB>
diff --git a/db/upgrade.php b/db/upgrade.php
new file mode 100644
index 0000000..371150b
--- /dev/null
+++ b/db/upgrade.php
@@ -0,0 +1,59 @@
+<?php // $Id: upgrade.php,v 1.1 2008/07/24 01:48:12 arborrow Exp $
+
+// This file keeps track of upgrades to
+// the algebra qtype plugin
+//
+// Sometimes, changes between versions involve
+// alterations to database structures and other
+// major things that may break installations.
+//
+// The upgrade function in this file will attempt
+// to perform all the necessary actions to upgrade
+// your older installtion to the current version.
+//
+// If there's something it cannot do itself, it
+// will tell you what you need to do.
+//
+// The commands in here will all be database-neutral,
+// using the functions defined in lib/ddllib.php
+
+function xmldb_qtype_algebra_upgrade($oldversion=0) {
+
+ global $CFG, $THEME, $DB;
+
+ $dbman = $DB->get_manager();
+
+/// And upgrade begins here. For each one, you'll need one
+/// block of code similar to the next one. Please, delete
+/// this comment lines once this file start handling proper
+/// upgrade code.
+
+ // Add the field to store the string which is placed in front of the answer
+ // box when the question is displayed
+ if ($oldversion < 2008061500) {
+ $table = new xmldb_table('question_algebra');
+ $field = new xmldb_field('answerprefix', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, '', 'allowedfuncs');
+ if (!$dbman->field_exists($table, $field)) {
+ $dbman->add_field($table, $field);
+ }
+ upgrade_plugin_savepoint(true, 2008061500, 'qtype', 'algebra');
+ }
+
+ // Drop the answers and variables fields wich are totaly redundants
+ if ($oldversion < 2011072800) {
+ $table = new xmldb_table('question_algebra');
+ $field = new xmldb_field('answers');
+
+ if ($dbman->field_exists($table, $field)) {
+ $dbman->drop_field($table, $field);
+ }
+ $field = new xmldb_field('variables');
+
+ if ($dbman->field_exists($table, $field)) {
+ $dbman->drop_field($table, $field);
+ }
+ upgrade_plugin_savepoint(true, 2011072800, 'qtype', 'algebra');
+ }
+ return true;
+}
+
diff --git a/db/upgradelib.php b/db/upgradelib.php
new file mode 100644
index 0000000..2f05142
--- /dev/null
+++ b/db/upgradelib.php
@@ -0,0 +1,71 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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.
+//
+// Moodle 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 Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Upgrade library code for the algebra question type.
+ *
+ * @package qtype
+ * @subpackage algebra
+ * @copyright 2010 The Open University
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+
+defined('MOODLE_INTERNAL') || die();
+
+
+/**
+ * Class for converting attempt data for algebra questions when upgrading
+ * attempts to the new question engine.
+ *
+ * This class is used by the code in question/engine/upgrade/upgradelib.php.
+ *
+ * @copyright 2010 The Open University
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class qtype_algebra_qe2_attempt_updater extends question_qtype_attempt_updater {
+ public function right_answer() {
+ foreach ($this->question->options->answers as $ans) {
+ if ($ans->fraction > 0.999) {
+ return $ans->answer;
+ }
+ }
+ }
+
+ public function was_answered($state) {
+ return !empty($state->answer);
+ }
+
+ public function response_summary($state) {
+ if (!empty($state->answer)) {
+ return $state->answer;
+ } else {
+ return null;
+ }
+ }
+
+ public function set_first_step_data_elements($state, &$data) {
+ }
+
+ public function supply_missing_first_step_data(&$data) {
+ }
+
+ public function set_data_elements_for_step($state, &$data) {
+ if (!empty($state->answer)) {
+ $data['answer'] = $state->answer;
+ }
+ }
+}