$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 />";
             die;
         }
         $listid = required_param('listid', PARAM_INT);
         if (!$listid) {
             $listnumber = $scannedpage->listnumber;
         } else {
Exemplo n.º 2
0
/**
 * 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;
    }
}