if ($data = $mform->get_data()) {
    if (!empty($data->existingcategory)) {
        list($categoryid) = explode(',', $data->category);
        $includesubcategories = !empty($data->includesubcategories);
        $returnurl->param('cat', $data->category);
    } else {
        if (!empty($data->newcategory)) {
            list($parentid, $contextid) = explode(',', $data->parent);
            $categoryid = $qcobject->add_category($data->parent, $data->name, '', true);
            $includesubcategories = 0;
            $returnurl->param('cat', $categoryid . ',' . $contextid);
        } else {
            throw new coding_exception('It seems a form was submitted without any button being pressed???');
        }
    }
    offlinequiz_add_random_questions($offlinequiz, $offlinequizgroup, $categoryid, $data->numbertoadd, $includesubcategories);
    offlinequiz_delete_template_usages($offlinequiz);
    offlinequiz_update_sumgrades($offlinequiz);
    redirect($returnurl);
}
$mform->set_data(array('addonpage' => $addonpage, 'returnurl' => $returnurl, 'cmid' => $cm->id, 'category' => $category));
// Setup $PAGE.
$streditingofflinequiz = get_string('editinga', 'moodle', get_string('modulename', 'offlinequiz'));
$PAGE->navbar->add($streditingofflinequiz);
$PAGE->set_title($streditingofflinequiz);
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
if (!($offlinequizname = $DB->get_field($cm->modname, 'name', array('id' => $cm->instance)))) {
    print_error('invalidcoursemodule');
}
$groupletters = 'ABCDEFGHIJKL';
                offlinequiz_add_offlinequiz_question($key, $offlinequiz, $addonpage);
            }
        }
    }
    offlinequiz_delete_template_usages($offlinequiz);
    offlinequiz_update_sumgrades($offlinequiz);
    redirect($afteractionurl);
}
if (optional_param('addrandom', false, PARAM_BOOL) && confirm_sesskey()) {
    // Add random questions to the offlinequiz.
    $structure->check_can_be_edited();
    $recurse = optional_param('recurse', 0, PARAM_BOOL);
    $addonpage = optional_param('addonpage', 0, PARAM_INT);
    $categoryid = required_param('categoryid', PARAM_INT);
    $randomcount = required_param('randomcount', PARAM_INT);
    offlinequiz_add_random_questions($offlinequiz, $addonpage, $categoryid, $randomcount, $recurse);
    offlinequiz_delete_template_usages($offlinequiz);
    offlinequiz_update_sumgrades($offlinequiz);
    redirect($afteractionurl);
}
if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
    // Parameter to copy selected questions to another group.
    $copyselectedtogroup = optional_param('copyselectedtogrouptop', 0, PARAM_INT);
    if ($copyselectedtogroup) {
        if ($selectedquestionids && ($newgroup = offlinequiz_get_group($offlinequiz, $copyselectedtogroup))) {
            $fromofflinegroup = optional_param('fromofflinegroup', 0, PARAM_INT);
            offlinequiz_add_questionlist_to_group($selectedquestionids, $offlinequiz, $newgroup, $fromofflinegroup);
            offlinequiz_update_sumgrades($offlinequiz, $newgroup->id);
            // Delete the templates, just to be sure.
            offlinequiz_delete_template_usages($offlinequiz);
        }