MDL-31100 unit tests: don't mangle UTF-8 in failure messages.
[moodle.git] / mod / workshop / form / numerrors / backup / moodle1 / lib.php
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Provides support for the conversion of moodle1 backup to the moodle2 format
20  *
21  * @package    workshopform
22  * @subpackage numerrors
23  * @copyright  2011 David Mudrak <david@moodle.com>
24  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
27 defined('MOODLE_INTERNAL') || die();
29 require_once($CFG->dirroot.'/mod/workshop/form/numerrors/db/upgradelib.php');
30 require_once($CFG->libdir.'/gradelib.php'); // grade_floatval() called here
32 /**
33  * Conversion handler for the numerrors grading strategy data
34  */
35 class moodle1_workshopform_numerrors_handler extends moodle1_workshopform_handler {
37     /** @var array */
38     protected $mappings = array();
40     /** @var array */
41     protected $dimensions = array();
43     /**
44      * New workshop instance is being processed
45      */
46     public function on_elements_start() {
47         $this->mappings = array();
48         $this->dimensions = array();
49     }
51     /**
52      * Converts <ELEMENT> into <workshopform_numerrors_dimension> and stores it for later writing
53      *
54      * @return array to be written to workshop.xml
55      */
56     public function process_legacy_element($data, $raw) {
58         $workshop = $this->parenthandler->get_current_workshop();
60         $mapping = array();
61         $mapping['id'] = $data['id'];
62         $mapping['nonegative'] = $data['elementno'];
63         if ($workshop['grade'] == 0 or $data['maxscore'] == 0) {
64             $mapping['grade'] = 0;
65         } else {
66             $mapping['grade'] = grade_floatval($data['maxscore'] / $workshop['grade'] * 100);
67         }
68         $this->mappings[] = $mapping;
70         $converted = null;
72         if (trim($data['description']) and $data['description'] <> '@@ GRADE_MAPPING_ELEMENT @@') {
73             // prepare a fake record and re-use the upgrade logic
74             $fakerecord = (object)$data;
75             $converted = (array)workshopform_numerrors_upgrade_element($fakerecord, 12345678);
76             unset($converted['workshopid']);
78             $converted['id'] = $data['id'];
79             $this->dimensions[] = $converted;
80         }
82         return $converted;
83     }
85     /**
86      * Writes gathered mappings and dimensions
87      */
88     public function on_elements_end() {
90         foreach ($this->mappings as $mapping) {
91             $this->write_xml('workshopform_numerrors_map', $mapping, array('/workshopform_numerrors_map/id'));
92         }
94         foreach ($this->dimensions as $dimension) {
95             $this->write_xml('workshopform_numerrors_dimension', $dimension, array('/workshopform_numerrors_dimension/id'));
96         }
97     }
98 }