/** * 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; }
/** * * @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; }