$upperright = new oq_point(853 - required_param('c-2-x', PARAM_INT), 1208 - required_param('c-2-y', PARAM_INT)); $lowerleft = new oq_point(853 - required_param('c-1-x', PARAM_INT), 1208 - required_param('c-1-y', PARAM_INT)); $lowerright = new oq_point(853 - required_param('c-0-x', PARAM_INT), 1208 - required_param('c-0-y', PARAM_INT)); $ulx = $upperleft->x; $uly = $upperleft->y; $urx = $upperright->x; $ury = $upperright->y; $llx = $lowerleft->x; $lly = $lowerleft->y; $lrx = $lowerright->x; $lry = $lowerright->y; $scannedpage->status = 'ok'; $scannedpage->error = ''; $scannedpage->listnumber = 0; $offlinequizconfig->papergray = $offlinequiz->papergray; if ($newfile = $scanner->rotate_180()) { $scannedpage->filename = $newfile->get_filename(); $DB->update_record('offlinequiz_scanned_p_pages', $scannedpage); // Create a completely new scanner. $scanner = new offlinequiz_participants_scanner($offlinequiz, $context->id, 0, 0); // Load the stored picture file. $sheetloaded = $scanner->load_stored_image($scannedpage->filename, array($upperleft, $upperright, $lowerleft, $lowerright)); // The following calibrates the scanner. $scanner->get_list(); $participants = $scanner->get_participants(); } } else { if ($action == 'setpage') { if (!confirm_sesskey()) { print_error('invalidsesskey'); echo "<input class=\"imagebutton\" type=\"submit\" value=\"" . get_string('cancel') . "\" name=\"submitbutton4\"\nonClick=\"self.close(); return false;\"><br />";
/** * Checks groupnumber, userkey, and pagenumber of a scanned list of participants page * * @param unknown_type $offlinequiz * @param offlinequiz_page_scanner $scanner * @param unknown_type $scannedpage * @param unknown_type $teacherid * @param unknown_type $coursecontext */ function offlinequiz_check_scanned_participants_page($offlinequiz, offlinequiz_participants_scanner $scanner, $scannedpage, $teacherid, $coursecontext, $autorotate = false) { global $DB; // Check the list number. if (!property_exists($scannedpage, 'listnumber') || $scannedpage->listnumber == 0) { $listnumber = $scanner->get_list(); if (is_string($listnumber)) { $intln = intval($listnumber); if ($intln > 0) { $listnumber = $intln; $scannedpage->listnumber = $listnumber; } } } if ($scannedpage->status == 'ok') { $maxlistnumber = $DB->get_field_sql("\n SELECT MAX(number)\n FROM {offlinequiz_p_lists}\n WHERE offlinequizid = :offlinequizid", array('offlinequizid' => $offlinequiz->id)); if (!property_exists($scannedpage, 'listnumber') || !is_int($scannedpage->listnumber) || $scannedpage->listnumber < 1 || $scannedpage->listnumber > $maxlistnumber) { $scannedpage->status = 'error'; $scannedpage->error = 'invalidlistnumber'; } } if ($scannedpage->status == 'error' && $scanner->ontop && $autorotate) { print_string('rotatingsheet', 'offlinequiz'); $oldfilename = $scannedpage->filename; $corners = $scanner->get_corners(); if ($newfile = $scanner->rotate_180()) { $scannedpage->status = 'ok'; $scannedpage->error = ''; $scannedpage->userkey = null; $scannedpage->pagenumber = null; $scannedpage->groupnumber = null; $scannedpage->filename = $newfile->get_filename(); $corners = $scanner->get_corners(); $newcorners = array(); $newcorners[0] = new oq_point(853 - $corners[3]->x, 1208 - $corners[3]->y); $newcorners[1] = new oq_point(853 - $corners[2]->x, 1208 - $corners[2]->y); $newcorners[2] = new oq_point(853 - $corners[1]->x, 1208 - $corners[1]->y); $newcorners[3] = new oq_point(853 - $corners[0]->x, 1208 - $corners[0]->y); // Create a completely new scanner. $scanner = new offlinequiz_participants_scanner($offlinequiz, $scanner->contextid, 0, 0); $sheetloaded = $scanner->load_stored_image($scannedpage->filename, $newcorners); if (!$sheetloaded) { $scannedpage->status = 'error'; $scannedpage->error = 'fatalerror'; } else { $scannedpage->status = 'ok'; $scannedpage->error = ''; $listnumber = $scanner->get_list(); if (is_string($listnumber)) { $intln = intval($listnumber); if ($intln > 0) { $listnumber = $intln; } } $scannedpage->listnumber = $listnumber; $maxlistnumber = $DB->get_field_sql("SELECT MAX(number)\n FROM {offlinequiz_p_lists}\n WHERE offlinequizid = :offlinequizid", array('offlinequizid' => $offlinequiz->id)); if (!is_int($scannedpage->listnumber) || $scannedpage->listnumber < 1 || $scannedpage->listnumber > $maxlistnumber) { $scannedpage->status = 'error'; $scannedpage->error = 'invalidlistnumber'; } } } } $scannedpage->time = time(); if (property_exists($scannedpage, 'id') && !empty($scannedpage->id)) { $DB->update_record('offlinequiz_scanned_p_pages', $scannedpage); } else { $scannedpage->id = $DB->insert_record('offlinequiz_scanned_p_pages', $scannedpage); } if ($autorotate) { return array($scanner, $scannedpage); } else { return $scannedpage; } }