/**
 * Process Job's results logged in a text file.
 * 
 * @param array $scan from table blended_scans
 */
function register_scannedjob($scan)
{
    global $CFG;
    global $scansfoldername;
    $jobid = $scan->id;
    $fieldspath = blended_getOMRFieldsetDir($scan);
    $logfile = blended_getOMRInputLogFilePath($scan);
    try {
        if ($logfile != 'null') {
            $logelements = read_log_file($logfile);
        }
        if (!isset($logelements) || count($logelements) == 0) {
            throw new OMRError("Log file is empty", OMRError::LOG_FILE_IS_EMPTY);
        }
    } catch (OMRError $e) {
        throw $e;
    }
    // open a transaction
    begin_sql();
    foreach ($logelements as $logelement) {
        try {
            //cada elemento es un registro de blended_images.
            $image_result = parse_log_elements($logelement);
            $image_result->jobid = $jobid;
            register_image($image_result);
            $acode = $image_result->activitycode;
            if ($acode != null) {
                if ($acode == 'Undetected') {
                    mtrace("Undetected activity code for result:" . $logelement);
                } else {
                    mtrace('<br>REGISTERING FIELDS...');
                    register_template_fields($image_result, $fieldspath);
                    mtrace('<br>REGISTERING RESULTS...');
                    register_result_files($image_result, $fieldspath);
                    mtrace('<br>CHECKING VALIDITY...');
                    check_invalid_results($image_result);
                }
            }
        } catch (Exception $e) {
            mtrace('OMRError: ' . $e->getMessage());
            register_exception($e, $jobid);
            $errorcode = $e->getCode();
            if ($errorcode == 5 or $errorcode == 6) {
                //print_object($e);
                //throw $e;
                continue;
                // process next result
            }
        }
    }
    mtrace('<br>UPDATING SCANJOB QUEUE...');
    update_record('blended_scans', $scan);
    // End the transaction
    commit_sql();
    return;
}
Esempio n. 2
0
/**
 *
 * @param $blended_quiz
 * @param $job array with timestamp, userid
 * TODO allow more flexible configuration of folders
 * @return $pdfileobject with paths for the process
 */
function blended_prepare_and_get_paths($job, $blended_quiz)
{
    global $scansfoldername;
    $timestamp = $job->timestamp;
    $formattedtimestamp = date("Y-m-d-H-i-s", $timestamp);
    $pdfFile->wdir = "moddata/blended";
    $jobDescription = "{$blended_quiz->name}-" . $formattedtimestamp . "-{$job->userid}";
    $courseid = $blended_quiz->course;
    $descriptiondir = "meta";
    if (!($coursebasedir = make_upload_directory("{$courseid}"))) {
        error("The site administrator needs to fix the file permissions. (Course files folder.)");
    }
    if (!($blendeddir = make_upload_directory("{$courseid}/{$pdfFile->wdir}"))) {
        error("Requested directory does not exist.(moddata/blended folder).", "{$CFG->wwwroot}/files/index.php?id={$id}");
    }
    $jobFolder = clean_filename($jobDescription);
    //job's part of the directory (relative)
    if (!($descriptionsdir = make_upload_directory("{$courseid}/{$pdfFile->wdir}/{$jobFolder}"))) {
        error("Requested directory does not exist.({$jobFolder})", "{$CFG->wwwroot}/files/index.php?id={$id}");
    }
    if (!($resultados = make_upload_directory("{$courseid}/{$pdfFile->wdir}/{$jobFolder}/{$scansfoldername}"))) {
        error("Requested directory does not exist.", "{$CFG->wwwroot}/files/index.php?id={$id}");
    }
    //$pdfFile->wdir ="moddata/blended";
    $pdfFile->Name = clean_filename("{$blended_quiz->name}-" . $formattedtimestamp . "-{$job->userid}.pdf");
    $pdfFile->inCourseFolderRelativePath = "{$pdfFile->wdir}/{$jobFolder}";
    $pdfFile->RelativePath = "{$courseid}/{$pdfFile->inCourseFolderRelativePath}/{$pdfFile->Name}";
    $pdfFile->Path = "{$coursebasedir}/{$pdfFile->inCourseFolderRelativePath}/{$pdfFile->Name}";
    $pdfFile->BasePath = "{$blendeddir}/{$jobFolder}";
    $scan = new stdClass();
    $scan->course = $courseid;
    $pdfFile->FieldsetsPath = blended_getOMRFieldsetDir($scan);
    //$pdfFile->RelativePath="$courseid/$pdfFile->wdir/$pdfFile->Name";
    //$pdfFile->Path="$blendeddir/$pdfFile->Name";
    //$pdfFile->PathOMR="$blendeddir";
    return $pdfFile;
}