Beispiel #1
0
    if ($data = $mform->get_data()) {
        $scale = new grade_scale(array('id' => $id));
        $data->userid = $USER->id;
        if (empty($scale->id)) {
            $data->description = $data->description_editor['text'];
            $data->descriptionformat = $data->description_editor['format'];
            grade_scale::set_properties($scale, $data);
            if (!has_capability('moodle/grade:manage', $systemcontext)) {
                $data->standard = 0;
            }
            $scale->courseid = !empty($data->standard) ? 0 : $courseid;
            $scale->insert();
            $data = file_postupdate_standard_editor($data, 'description', $editoroptions, $systemcontext, 'grade', 'scale', $scale->id);
            $DB->set_field($scale->table, 'description', $data->description, array('id' => $scale->id));
        } else {
            $data = file_postupdate_standard_editor($data, 'description', $editoroptions, $systemcontext, 'grade', 'scale', $id);
            grade_scale::set_properties($scale, $data);
            if (isset($data->standard)) {
                $scale->courseid = !empty($data->standard) ? 0 : $courseid;
            } else {
                unset($scale->courseid);
                // keep previous
            }
            $scale->update();
        }
        redirect($returnurl);
    }
}
print_grade_page_head($COURSE->id, 'scale', null, $heading, false, false, false);
$mform->display();
echo $OUTPUT->footer();
/**
 * Creates new standard (global) scales to replace the legacy workshop ones
 *
 * In workshop 1.x, scale field in workshop_elements had the following meaning:
 *   0 | 2 point Yes/No scale
 *   1 | 2 point Present/Absent scale
 *   2 | 2 point Correct/Incorrect scale
 *   3 | 3 point Good/Poor scale
 *   4 | 4 point Excellent/Very Poor scale
 *   5 | 5 point Excellent/Very Poor scale
 *   6 | 7 point Excellent/Very Poor scale
 *   7 | Score out of 10
 *   8 | Score out of 20
 *   9 | Score out of 100
 *
 * @return array (int)oldscale => (int)newscaleid
 */
function workshopform_accumulative_upgrade_scales()
{
    global $DB, $CFG, $USER;
    require_once $CFG->libdir . '/gradelib.php';
    $sql = 'SELECT DISTINCT scale
              FROM {workshop_elements_old}
             WHERE newplugin IS NULL';
    $oldscales = $DB->get_records_sql($sql);
    $newscales = array();
    foreach ($oldscales as $oldscale => $whatever) {
        switch ($oldscale) {
            case 0:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename0', 'workshopform_accumulative');
                $data->scale = implode(',', array(get_string('no'), get_string('yes')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[0] = $scale->insert('mod/workshop');
                break;
            case 1:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename1', 'workshopform_accumulative');
                $data->scale = implode(',', array(get_string('absent', 'workshopform_accumulative'), get_string('present', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[1] = $scale->insert('mod/workshop');
                break;
            case 2:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename2', 'workshopform_accumulative');
                $data->scale = implode(',', array(get_string('incorrect', 'workshopform_accumulative'), get_string('correct', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[2] = $scale->insert('mod/workshop');
                break;
            case 3:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename3', 'workshopform_accumulative');
                $data->scale = implode(',', array('* ' . get_string('poor', 'workshopform_accumulative'), '**', '*** ' . get_string('good', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[3] = $scale->insert('mod/workshop');
                break;
            case 4:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename4', 'workshopform_accumulative');
                $data->scale = implode(',', array('* ' . get_string('verypoor', 'workshopform_accumulative'), '**', '***', '**** ' . get_string('excellent', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[4] = $scale->insert('mod/workshop');
                break;
            case 5:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename5', 'workshopform_accumulative');
                $data->scale = implode(',', array('* ' . get_string('verypoor', 'workshopform_accumulative'), '**', '***', '****', '***** ' . get_string('excellent', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[5] = $scale->insert('mod/workshop');
                break;
            case 6:
                $data = new stdclass();
                $data->courseid = 0;
                $data->userid = $USER->id;
                $data->name = get_string('scalename6', 'workshopform_accumulative');
                $data->scale = implode(',', array('* ' . get_string('verypoor', 'workshopform_accumulative'), '**', '***', '****', '*****', '******', '******* ' . get_string('excellent', 'workshopform_accumulative')));
                $data->description = '';
                $data->descriptionformat = FORMAT_HTML;
                $scale = new grade_scale();
                grade_scale::set_properties($scale, $data);
                $newscales[6] = $scale->insert('mod/workshop');
                break;
        }
    }
    return $newscales;
}