From 67524d3af6f0ff97836313ea42926b77592704f3 Mon Sep 17 00:00:00 2001 From: iszmais Date: Tue, 22 Aug 2023 15:41:59 +0200 Subject: [PATCH] Only allow upload on unuploaded files and remove refresh upload --- classes/PlagScan/DocumentManagement.php | 63 +++++++++---------- classes/Table/AssignmentTableGUI.php | 8 +-- classes/class.ilPlagScanExerciseUIHookGUI.php | 7 --- 3 files changed, 31 insertions(+), 47 deletions(-) diff --git a/classes/PlagScan/DocumentManagement.php b/classes/PlagScan/DocumentManagement.php index 8dc0d96..0c557b4 100644 --- a/classes/PlagScan/DocumentManagement.php +++ b/classes/PlagScan/DocumentManagement.php @@ -56,20 +56,16 @@ class DocumentManagement $settings = new ilSetting('psx'); $documents = new Documents($settings->get('psx_server', 'https://api.plagscan.com/')); - if ($document->getId() !== 0) { - $documents->delete($document->getPlagscanId()); - $document->setPlagscanId(0); + if ($document->getPlagscanStatus() === '') { + $response = $documents->add($text, true); + $document->setPlagscanId((int) $response['docID']); + $document->setPlagscanStatus('not_checked'); + $document->setAssignmentExcObj(ilObject::_lookupObjectId((int) $DIC->http()->request()->getQueryParams()['ref_id'])); + $document->setUserNonConsent(false); + $document->setSubmissionIliasId(0); $document->setShareLink(''); + $document->store(); } - - $response = $documents->add($text, true); - $document->setPlagscanId((int) $response['docID']); - $document->setPlagscanStatus('not_checked'); - $document->setAssignmentExcObj(ilObject::_lookupObjectId((int) $DIC->http()->request()->getQueryParams()['ref_id'])); - $document->setUserNonConsent(false); - $document->setSubmissionIliasId(0); - $document->setShareLink(''); - $document->store(); } public static function handInDocumentAsFile(int $user_id, int $assignment_id): void @@ -81,22 +77,19 @@ class DocumentManagement $settings = new ilSetting('psx'); $documents = new Documents($settings->get('psx_server', 'https://api.plagscan.com/')); - if ($document->getId() !== 0) { - $documents->delete($document->getPlagscanId()); - $document->setPlagscanId(0); + if ($document->getPlagscanStatus() === '') { + $ex_submission = new ilExSubmission(new ilExAssignment($assignment_id), $user_id); + $files = $ex_submission->getFiles(); + $file_info = end($files); + $response = $documents->add($file_info['filename'], false); + $document->setPlagscanId((int) $response['docID']); + $document->setPlagscanStatus('not_checked'); + $document->setAssignmentExcObj(ilObject::_lookupObjectId((int) $DIC->http()->request()->getQueryParams()['ref_id'])); + $document->setUserNonConsent(false); + $document->setSubmissionIliasId(0); $document->setShareLink(''); + $document->store(); } - $ex_submission = new ilExSubmission(new ilExAssignment($assignment_id), $user_id); - $files = $ex_submission->getFiles(); - $file_info = end($files); - $response = $documents->add($file_info['filename'], false); - $document->setPlagscanId((int) $response['docID']); - $document->setPlagscanStatus('not_checked'); - $document->setAssignmentExcObj(ilObject::_lookupObjectId((int) $DIC->http()->request()->getQueryParams()['ref_id'])); - $document->setUserNonConsent(false); - $document->setSubmissionIliasId(0); - $document->setShareLink(''); - $document->store(); } public static function handInAllDocumentAsFile($assignment_id): void @@ -177,13 +170,17 @@ class DocumentManagement $logger->info('PSX: Manual checking requested for docID ' . $document_id); $document = new Document(); $document->getByPlagScanId($document_id); - $settings = new ilSetting('psx'); - $documents = new Documents($settings->get('psx_server', 'https://api.plagscan.com/')); - $documents->check($document_id); - $logger->info('PSX: Manual check-call complete, storing document status'); - $document->setPlagscanStatus('in_progress'); - $document->store(); - $logger->info('PSX: Document ' . $document_id . ' stored as in_progress'); + if ($document->getPlagscanStatus() === 'not_checked') { + $settings = new ilSetting('psx'); + $documents = new Documents($settings->get('psx_server', 'https://api.plagscan.com/')); + $documents->check($document_id); + $logger->info('PSX: Manual check-call complete, storing document status'); + $document->setPlagscanStatus('in_progress'); + $document->store(); + $logger->info('PSX: Document ' . $document_id . ' stored as in_progress'); + } else { + $logger->info('PSX: Document not uploaded, already in_progress or finished'); + } } public static function updateDocumentStatus(int $document_id): void diff --git a/classes/Table/AssignmentTableGUI.php b/classes/Table/AssignmentTableGUI.php index 21e000e..8dff7c1 100644 --- a/classes/Table/AssignmentTableGUI.php +++ b/classes/Table/AssignmentTableGUI.php @@ -481,13 +481,7 @@ class AssignmentTableGUI extends ilParticipantsPerAssignmentTableGUI $submission = $a_row['submission_obj']; $plugin = ilPlagScanExercisePlugin::getInstance(); - if ( - $plagscan_config->getActivation() && - !( - $document->getPlagscanStatus() === 'in_progress' || - $document->getPlagscanStatus() === '' - ) - ) { + if ($plagscan_config->getActivation() && $document->getPlagscanStatus() === 'not_checked') { $this->ctrl->clearParametersByClass('ilExerciseManagementGUI'); $this->ctrl->setParameterByClass('ilExerciseManagementGUI', 'chkdoc', $document->getPlagscanId()); $actions->addItem( diff --git a/classes/class.ilPlagScanExerciseUIHookGUI.php b/classes/class.ilPlagScanExerciseUIHookGUI.php index 7e30610..6a5d988 100644 --- a/classes/class.ilPlagScanExerciseUIHookGUI.php +++ b/classes/class.ilPlagScanExerciseUIHookGUI.php @@ -135,19 +135,12 @@ class ilPlagScanExerciseUIHookGUI extends ilUIHookPluginGUI ($DIC->ctrl()->getCmd() === 'members' || $DIC->ctrl()->getCmd() === 'selectAssignment') ) { $GLOBALS['PLX_IN_EXEC2'] = true; - if (isset($get['chkdoc'])) { DocumentManagement::checkDocument((int) $get['chkdoc']); } if (isset($get['subdoc_usr'])) { DocumentManagement::handInDocumentAsFile((int) $get['subdoc_usr'], (int) $get['subdoc_ass']); } - if (isset($get['subdoc_all'])) { - DocumentManagement::handInAllDocumentAsFile((int) $get['subdoc_all']); - } - if (isset($get['chkdoc_all'])) { - DocumentManagement::checkAllDocumentsForAssignment((int) $get['chkdoc_all']); - } if (isset($get['subchk_all'])) { DocumentManagement::handInAllDocumentAsFile((int) $get['subchk_all']); DocumentManagement::checkAllDocumentsForAssignment((int) $get['subchk_all']); -- GitLab