} // Maybe old errors have been fixed. $scannedpage->status = 'ok'; $DB->set_field('offlinequiz_scanned_pages', 'status', 'ok', array('id' => $scannedpage->id)); $scannedpage->error = ''; $DB->set_field('offlinequiz_scanned_pages', 'error', '', array('id' => $scannedpage->id)); $groupnumber = required_param('groupnumber', PARAM_TEXT); $groupnumber = intval($groupnumber); // Old code if (!property_exists($scannedpage, 'groupnumber') || $scannedpage->groupnumber == 0) {. $scanner->set_group($groupnumber); $scannedpage->groupnumber = $groupnumber; // O=======================================================. // O Adjust the maxanswers of the scanner according to the offlinequiz group // O=======================================================. if ($newgroup = $DB->get_record('offlinequiz_groups', array('offlinequizid' => $offlinequiz->id, 'number' => $groupnumber))) { $maxanswers = offlinequiz_get_maxanswers($offlinequiz, array($newgroup)); $scannedpage = $scanner->set_maxanswers($maxanswers, $scannedpage); } $usernumber = required_param('usernumber', PARAM_TEXT); $xes = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // If we have only X's then we ignore the input. $userkey = $offlinequizconfig->ID_prefix . $usernumber . $offlinequizconfig->ID_postfix; if ($usernumber == substr($xes, 0, $offlinequizconfig->ID_digits)) { $scannedpage->userkey = null; $DB->set_field('offlinequiz_scanned_pages', 'userkey', null, array('id' => $scannedpage->id)); } else { $scannedpage->userkey = $userkey; } // Now we check the scanned page with potentially updated information. // Removed $scannedpage = offlinequiz_check_for_changed_groupnumber($offlinequiz, $scanner, $scannedpage, // $coursecontext, $questionsperpage, $offlinequizconfig);.
} } echo $OUTPUT->box_end(); // O============================================================. // O Show/create the answer forms for all offline groups. // O============================================================. echo $OUTPUT->box_start('generalbox linkbox docsbox'); echo $OUTPUT->notification(get_string('marginwarning', 'offlinequiz')); echo '<br/>'; foreach ($groups as $group) { $groupletter = $letterstr[$group->number - 1]; if (!($templateusage = offlinequiz_get_group_template_usage($offlinequiz, $group, $context))) { print_error("Missing data for group " . $groupletter, "createquiz.php?q={$offlinequiz->id}&mode=preview&sesskey=" . sesskey()); } if (!$offlinequiz->docscreated) { $answerpdffile = offlinequiz_create_pdf_answer(offlinequiz_get_maxanswers($offlinequiz, array($group)), $templateusage, $offlinequiz, $group, $course->id, $context); } else { $sqllike = $DB->sql_like('filename', ':filename'); $sql = "SELECT filename\n FROM {files}\n WHERE contextid = :contextid\n AND component = 'mod_offlinequiz'\n AND filearea = 'pdfs'\n AND itemid = 0\n AND filepath = '/'\n AND " . $sqllike; $params = array('contextid' => $context->id, 'filename' => 'answer-' . strtolower($groupletter) . '%.pdf'); $filename = $DB->get_field_sql($sql, $params); $answerpdffile = $fs->get_file($context->id, 'mod_offlinequiz', 'pdfs', 0, '/', $filename); } if ($answerpdffile) { $url = "{$CFG->wwwroot}/pluginfile.php/" . $answerpdffile->get_contextid() . '/' . $answerpdffile->get_component() . '/' . $answerpdffile->get_filearea() . '/' . $answerpdffile->get_itemid() . '/' . $answerpdffile->get_filename() . '?forcedownload=1'; echo $OUTPUT->action_link($url, get_string('answerformforgroup', 'offlinequiz', $groupletter)); echo '<br /> <br />'; @flush(); @ob_flush(); } else { echo $OUTPUT->notification(get_string('createpdferror', 'offlinequiz', $groupletter));
/** * Calculate the characteristic numbers for an offlinequiz, i.e. maximum number of questions, maximum number of answers, * number of columns on the answer form and the maximum number of questions on each page. * * @param unknown_type $offlinequiz * @param unknown_type $groups */ function offlinequiz_get_question_numbers($offlinequiz, $groups) { $maxquestions = offlinequiz_get_maxquestions($offlinequiz, $groups); $maxanswers = offlinequiz_get_maxanswers($offlinequiz, $groups); // Determine the form type (number of columns). $formtype = 4; if ($maxanswers > 5) { $formtype = 3; } if ($maxanswers > 7) { $formtype = 2; } if ($maxanswers > 12) { $formtype = 1; } // Determine how many questions are on a full page. $questionsperpage = 96; if ($maxanswers > 5) { $questionsperpage = 72; } if ($maxanswers > 7) { $questionsperpage = 48; } if ($maxanswers > 12) { $questionsperpage = 24; } return array($maxquestions, $maxanswers, $formtype, $questionsperpage); }