/** * Get job's error information from the database. * NB: It must be explicitly invoked after class initialization. * @throws Exception Throws exception on DB fail */ public function retrieveJobErrorTotals() { $errorCountDao = new ErrorCount_ErrorCountDAO(Database::obtain()); $searchErrorCountStruct = new ErrorCount_Struct(); $searchErrorCountStruct->setIdJob($this->job_id); $searchErrorCountStruct->setJobPassword($this->job_password); $jobErrorTotals = $errorCountDao->read($searchErrorCountStruct); /** * @var $jobErrorTotals ErrorCount_Struct */ $jobErrorTotals = $jobErrorTotals[0]; $this->job_error_totals = $jobErrorTotals; }
/** * When Called it perform the controller action to retrieve/manipulate data * * @throws Exception */ public function doAction() { if (!empty($this->result['errors'])) { return; } $job_data = getJobData((int) $this->id_job, $this->password_job); if (empty($job_data)) { $msg = "Error : empty job data \n\n " . var_export($_POST, true) . "\n"; Log::doLog($msg); Utils::sendErrMailReport($msg); } //add check for job status archived. if (strtolower($job_data['status']) == Constants_JobStatus::STATUS_ARCHIVED) { $this->result['errors'][] = array("code" => -6, "message" => "job archived"); } $this->parseIDSegment(); $pCheck = new AjaxPasswordCheck(); //check for Password correctness if (empty($job_data) || !$pCheck->grantJobAccessByJobData($job_data, $this->password_job, $this->id_segment)) { $this->result['errors'][] = array("code" => -7, "message" => "wrong password"); } $wStruct = new WordCount_Struct(); $wStruct->setIdJob($this->id_job); $wStruct->setJobPassword($this->password_job); $wStruct->setNewWords($job_data['new_words']); $wStruct->setDraftWords($job_data['draft_words']); $wStruct->setTranslatedWords($job_data['translated_words']); $wStruct->setApprovedWords($job_data['approved_words']); $wStruct->setRejectedWords($job_data['rejected_words']); $reviseDAO = new Revise_ReviseDAO(Database::obtain()); //store segment revision in DB $revisionStruct = Revise_ReviseStruct::getStruct(); $revisionStruct->id_job = $this->id_job; $revisionStruct->id_segment = $this->id_segment; //check if an old revision exists. If it does, retrieve it and save it. $oldRevision = $reviseDAO->read($revisionStruct); $oldRevision = isset($oldRevision[0]) ? $oldRevision[0] : Revise_ReviseStruct::setDefaultValues(Revise_ReviseStruct::getStruct()); $revisionStruct->err_typing = $this->err_typing; $revisionStruct->err_translation = $this->err_translation; $revisionStruct->err_terminology = $this->err_terminology; $revisionStruct->err_language = $this->err_language; $revisionStruct->err_style = $this->err_style; $revisionStruct->original_translation = $this->original_translation; //save the new revision in the database. try { $reviseDAO->create($revisionStruct); } catch (Exception $e) { Log::doLog(__METHOD__ . " -> " . $e->getMessage()); $this->result['errors'][] = array('code' => -4, 'message' => "Insert failed"); return; } /** * Refresh error counters in the job table */ $errorCountStruct = new ErrorCount_DiffStruct($oldRevision, $revisionStruct); $errorCountStruct->setIdJob($this->id_job); $errorCountStruct->setJobPassword($this->password_job); $errorCountDao = new ErrorCount_ErrorCountDAO(Database::obtain()); try { $errorCountDao->update($errorCountStruct); } catch (Exception $e) { Log::doLog(__METHOD__ . " -> " . $e->getMessage()); $this->result['errors'][] = array('code' => -5, 'message' => "Did not update job error counters."); return; } /** * Retrieve information about job errors * ( Note: these information are fed by the revision process ) * @see setRevisionController */ $jobQA = new Revise_JobQA($this->id_job, $this->password_job, $wStruct->getTotal()); $jobQA->retrieveJobErrorTotals(); $jobVote = $jobQA->evalJobVote(); $this->result['data']['message'] = 'OK'; $this->result['data']['stat_quality'] = $jobQA->getQaData(); $this->result['data']['overall_quality'] = $jobVote['minText']; $this->result['data']['overall_quality_class'] = strtolower(str_replace(' ', '', $jobVote['minText'])); }