/** * Loads a log chunk from the database. * */ function fetchLogChunk($jobId, $fileId, $startOffset, $endOffset) { log::doLog($endOffset); // include_once INIT::$MODEL_ROOT . "/LogEvent.class.php"; $db = Database::obtain(); $queryId = $db->query("SELECT * FROM log_event_header h WHERE h.job_id = '{$jobId}' AND h.file_id = '{$fileId}'" . " AND h.type != 'gaze'" . " ORDER BY h.time, h.id ASC LIMIT {$startOffset}, {$endOffset}"); $err = $db->get_error(); $errno = $err["error_code"]; if ($errno != 0) { log::doLog("CASMACAT: fetchLogChunk(): " . print_r($err, true)); throw new Exception("CASMACAT: fetchLogChunk(): " . print_r($err, true)); // return $errno * -1; } // log::doLog("CASMACAT: fetchLogChunk(): Event headers found: '$db->affected_rows'"); $logListChunk = array(); $headerRow = null; while (($headerRow = $db->fetch($queryId)) != false) { $headerRowAsObject = snakeToCamel($headerRow); // log::doLog("CASMACAT: fetchLogChunk(): Next headerRow: " . print_r($headerRowAsObject, true)); $logEvent = new LogEvent($jobId, $fileId, $headerRowAsObject); // log::doLog("CASMACAT: fetchLogChunk(): Processing header id: '$logEvent->id'"); switch ($logEvent->type) { case LogEvent::START_SESSION: break; case LogEvent::STOP_SESSION: break; case LogEvent::RESIZE: $eventRow = fetchEventRow($logEvent->id, "resize_event"); $logEvent->resizeData($eventRow); break; case LogEvent::TEXT: $eventRow = fetchEventRow($logEvent->id, "text_event"); $logEvent->textData($eventRow); break; case LogEvent::SELECTION: $eventRow = fetchEventRow($logEvent->id, "selection_event"); $logEvent->selectionData($eventRow); break; case LogEvent::SCROLL: $eventRow = fetchEventRow($logEvent->id, "scroll_event"); $logEvent->scrollData($eventRow); break; // case LogEvent::GAZE: // $eventRow = fetchEventRow($logEvent->id, "gaze_event"); // $logEvent->gazeData($eventRow); // break; // case LogEvent::GAZE: // $eventRow = fetchEventRow($logEvent->id, "gaze_event"); // $logEvent->gazeData($eventRow); // break; case LogEvent::FIXATION: $eventRow = fetchEventRow($logEvent->id, "fixation_event"); $logEvent->fixationData($eventRow); break; case LogEvent::DRAFTED: case LogEvent::TRANSLATED: case LogEvent::APPROVED: case LogEvent::REJECTED: break; case LogEvent::VIEWPORT_TO_SEGMENT: break; case LogEvent::SOURCE_COPIED: break; case LogEvent::SEGMENT_OPENED: break; case LogEvent::SEGMENT_CLOSED: break; case LogEvent::LOADING_SUGGESTIONS: break; case LogEvent::SUGGESTIONS_LOADED: $eventRow = fetchEventRow($logEvent->id, "suggestions_loaded_event"); $logEvent->suggestionsLoadedData($eventRow); break; case LogEvent::SUGGESTION_CHOSEN: $eventRow = fetchEventRow($logEvent->id, "suggestion_chosen_event"); $logEvent->suggestionChosenData($eventRow); break; case LogEvent::DELETING_SUGGESTION: $eventRow = fetchEventRow($logEvent->id, "deleting_suggestion_event"); $logEvent->deletingSuggestionData($eventRow); break; case LogEvent::SUGGESTION_DELETED: break; case LogEvent::STATS_UPDATED: $eventRow = fetchEventRow($logEvent->id, "stats_event"); $logEvent->statsUpdatedData($eventRow); break; case LogEvent::DECODE: case LogEvent::ALIGNMENTS: case LogEvent::SUFFIX_CHANGE: case LogEvent::CONFIDENCES: case LogEvent::TOKENS: case LogEvent::SHOW_ALIGNMENT_BY_KEY: case LogEvent::HIDE_ALIGNMENT_BY_KEY: $eventRow = fetchEventRow($logEvent->id, "itp_event"); $logEvent->itpData($eventRow); break; case LogEvent::SHOW_ALIGNMENT_BY_MOUSE: case LogEvent::HIDE_ALIGNMENT_BY_MOUSE: break; case LogEvent::KEY_DOWN: case LogEvent::KEY_UP: $eventRow = fetchEventRow($logEvent->id, "key_event"); $logEvent->keyData($eventRow); break; case LogEvent::MOUSE_DOWN: case LogEvent::MOUSE_UP: case LogEvent::MOUSE_CLICK: case LogEvent::MOUSE_MOVE: $eventRow = fetchEventRow($logEvent->id, "mouse_event"); $logEvent->mouseData($eventRow); break; case LogEvent::BEFORE_CUT: case LogEvent::BEFORE_COPY: case LogEvent::BEFORE_PASTE: break; case LogEvent::VIS_MENU_DISPLAYED: case LogEvent::VIS_MENU_HIDDEN: break; case LogEvent::INITIAL_CONFIG: case LogEvent::CONFIG_CHANGED: $eventRow = fetchEventRow($logEvent->id, "config_event"); $logEvent->configData($eventRow); break; case LogEvent::MOUSE_WHEEL_DOWN: case LogEvent::MOUSE_WHEEL_UP: case LogEvent::MOUSE_WHEEL_INVALIDATE: break; case LogEvent::MEMENTO_UNDO: case LogEvent::MEMENTO_REDO: case LogEvent::MEMENTO_INVALIDATE: break; case LogEvent::SR_MENU_DISPLAYED: case LogEvent::SR_MENU_HIDDEN: case LogEvent::SR_MATCH_CASE_ON: case LogEvent::SR_MATCH_CASE_OFF: case LogEvent::SR_REG_EXP_ON: case LogEvent::SR_REG_EXP_OFF: case LogEvent::SR_RULES_SETTING: break; case LogEvent::SR_RULES_SET: $eventRow = fetchEventRow($logEvent->id, "sr_event"); $logEvent->srRulesSetData($eventRow); break; case LogEvent::SR_RULES_APPLIED: case LogEvent::SR_RULE_DELETED: break; // merc - adding floatPrediction, biconcordancer and translationOption // merc - adding floatPrediction, biconcordancer and translationOption case LogEvent::FLOAT_PREDICTION: break; case LogEvent::BICONCOR: $eventRow = fetchEventRow($logEvent->id, "biconcor_event"); $logEvent->biconcorData($eventRow); break; case LogEvent::BICONCOR_CLOSED: break; case LogEvent::TRANSLATION_OPTION: break; // merc - adding epen // merc - adding epen case LogEvent::EPEN_OPENED: break; case LogEvent::EPEN_CLOSED: break; case LogEvent::HTR_RESULT: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_UPDATE: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_NBEST_CLICK: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_TEXT_CHANGE: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_START: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_ADD_STROKE: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_END: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; case LogEvent::HTR_GESTURE: $eventRow = fetchEventRow($logEvent->id, "epen_event"); $logEvent->epenData($eventRow); break; // merc - blur/focus // merc - blur/focus case LogEvent::BLUR: break; case LogEvent::FOCUS: break; default: log::doLog("CASMACAT: fetchLogChunk(): Unknown log event type: '{$logEvent->type}', header id: '{$logEvent->id}'"); throw new Exception("CASMACAT: fetchLogChunk(): Unknown log event type: '{$logEvent->type}', header id: '{$logEvent->id}'"); // return -1; } $logListChunk[] = $logEvent; // log::doLog("CASMACAT: fetchLogChunk(): Loaded: '" . $logEvent->toString() . "'"); } if (empty($logListChunk)) { return false; } else { return $logListChunk; } }
//------------------------------------------------------------------------------------------- //mouse_event $queryId = $db->query("SELECT h.id as id, h.job_id, h.file_id, h.element_id, h.x_path, h.time, h.type" . ", m.which, m.x, m.y, m.shift, m.ctrl, m.alt, m.cursor_position" . " FROM log_event_header h, mouse_event m WHERE h.job_id = '{$jobId}' AND h.file_id = '{$fileId}' AND h.id = m.header_id ORDER BY h.time, h.id ASC"); $err = $db->get_error(); $errno = $err["error_code"]; if ($errno != 0) { log::doLog("CASMACAT: fetchLogChunk(): " . print_r($err, true)); throw new Exception("CASMACAT: fetchLogChunk(): " . print_r($err, true)); } $mouseRow = null; $mouseEvents = array(); while (($mouseRow = $db->fetch($queryId)) != false) { $mouseRowAsObject = snakeToCamel($mouseRow); //log::doLog("CASMACAT: fetchLogChunk(): Next headerRow: " . print_r($mouseRowAsObject, true)); $mouseEvent = new LogEvent($jobId, $fileId, $mouseRowAsObject); $mouseEvent->mouseData($mouseRowAsObject); array_push($mouseEvents, $mouseEvent); } if (!empty($mouseEvents)) { //log::doLog("CASMACAT: mouseEvents: " . print_r($mouseEvents, true)); $count_mouses = 0; $len_mouses = count($mouseEvents); //print $len_mouses."\n"; } else { $len_mouses = 0; } //------------------------------------------------------------------------------------------- //resize_event $queryId = $db->query("SELECT h.id as id, h.job_id, h.file_id, h.element_id, h.x_path, h.time, h.type" . ", r.width, r.height" . " FROM log_event_header h, resize_event r WHERE h.job_id = '{$jobId}' AND h.file_id = '{$fileId}' AND h.id = r.header_id ORDER BY h.time, h.id ASC"); $err = $db->get_error(); $errno = $err["error_code"];