public function archiveActivesPass($activeId, $pass) { $content = $this->renderOverviewContent($activeId, $pass); $filename = $this->buildOverviewFilename($activeId, $pass); ilTestPDFGenerator::generatePDF($content, ilTestPDFGenerator::PDF_OUTPUT_FILE, $filename); $archiver = new ilTestArchiver($this->testOBJ->getId()); $archiver->handInTestResult($activeId, $pass, $filename); unlink($filename); }
/** * @param $userdata * @param $active_id */ public function recalculatePasses($userdata, $active_id) { require_once './Modules/Test/classes/class.ilTestEvaluationGUI.php'; // Below! require_once './Modules/Test/classes/class.ilTestPDFGenerator.php'; require_once './Modules/Test/classes/class.ilTestArchiver.php'; $passes = $userdata->getPasses(); foreach ($passes as $pass => $passdata) { if (is_object($passdata)) { $this->recalculatePass($passdata, $active_id, $pass); if ($this->test->getEnableArchiving()) { // requires out of the loop! $test_evaluation_gui = new ilTestEvaluationGUI($this->test); $overview = $test_evaluation_gui->getPassListOfAnswers($passdata, $active_id, $pass, true, false, false, true); $filename = ilUtil::getWebspaceDir() . '/assessment/scores-' . $this->test->getId() . '-' . $active_id . '-' . $pass . '.pdf'; ilTestPDFGenerator::generatePDF($overview, ilTestPDFGenerator::PDF_OUTPUT_FILE, $filename); $archiver = new ilTestArchiver($this->test->getId()); $archiver->handInTestResult($active_id, $pass, $filename); unlink($filename); } } } }
public function download() { /** * @var $lng ilLanguage * @var $ilCtrl ilCtrl */ global $lng, $ilCtrl; if (!isset($_POST['file'])) { ilUtil::sendInfo($lng->txt('no_checkbox'), true); $ilCtrl->redirect($this, 'listExportFiles'); } if (count($_POST['file']) > 1) { ilUtil::sendInfo($lng->txt('select_max_one_item'), true); $ilCtrl->redirect($this, 'listExportFiles'); } require_once 'class.ilTestArchiver.php'; $archiver = new ilTestArchiver($this->getParentGUI()->object->getId()); $archive_dir = $archiver->getZipExportDirectory(); $export_dir = $this->obj->getExportDirectory(); if (file_exists($export_dir . '/' . $_POST['file'][0])) { ilUtil::deliverFile($export_dir . '/' . $_POST['file'][0], $_POST['file'][0]); } if (file_exists($archive_dir . '/' . $_POST['file'][0])) { ilUtil::deliverFile($archive_dir . '/' . $_POST['file'][0], $_POST['file'][0]); } }
/** * Hands in a file from the signature process associated with a given user and pass for archiving. (See docs, pls.) * * Please note: This method checks if archiving is enabled. The test needs to be set to archive data in order * to do something meaningful with the signed files. Still, the plugin will work properly if the signed materials * are not used afterwards. Since the processing in an archive is in fact not the only option to deal with the * files, this possibility of a corrupt settings constellation will not be closed. If your plugin wants to post the * files away to a non-ILIAS-DMS, or the like, you still want to sign files, even if archiving in ILIAS is switched * off. * * @param $active_fi integer Active-Id of the user. * @param $pass integer Pass-number of the tests submission. * @param $filename string Filename that is going to be saved. * @param $filepath string Path with the current location of the file. * * @return void */ protected function handInFileForArchiving($active_fi, $pass, $filename, $filepath) { if ($this->getGUIObject()->getTest()->getEnableArchiving()) { require_once './Modules/Test/classes/class.ilTestArchiver.php'; $archiver = new ilTestArchiver($this->getGUIObject()->getTest()->getId()); $archiver->handInParticipantMisc($active_fi, $pass, $filename, $filepath); } }
/** * @param $active * * @return void */ protected function archiveParticipantSubmission($active, $pass) { global $ilObjDataCache; require_once 'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php'; $testResultHeaderLabelBuilder = new ilTestResultHeaderLabelBuilder($this->lng, $ilObjDataCache); $objectivesList = null; if ($this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) { $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($this->testSession->getActiveId(), $this->testSession->getPass()); $testSequence->loadFromDb(); $testSequence->loadQuestions(); require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php'; $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($this->testSession); $objectivesList = $this->buildQuestionRelatedObjectivesList($objectivesAdapter, $testSequence); $objectivesList->loadObjectivesTitles(); $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($this->testSession->getObjectiveOrientedContainerId()); $testResultHeaderLabelBuilder->setUserId($this->testSession->getUserId()); $testResultHeaderLabelBuilder->setTestObjId($this->object->getId()); $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId()); $testResultHeaderLabelBuilder->initObjectiveOrientedMode(); } $results = $this->object->getTestResult($active, $pass, false, !$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()); require_once 'class.ilTestEvaluationGUI.php'; $testevaluationgui = new ilTestEvaluationGUI($this->object); $results_output = $testevaluationgui->getPassListOfAnswers($results, $active, $pass, false, false, false, false, false, $objectivesList, $testResultHeaderLabelBuilder); require_once './Modules/Test/classes/class.ilTestArchiver.php'; global $ilSetting; $inst_id = $ilSetting->get('inst_id', null); $archiver = new ilTestArchiver($this->object->getId()); $path = ilUtil::getWebspaceDir() . '/assessment/' . $this->object->getId() . '/exam_pdf'; if (!is_dir($path)) { ilUtil::makeDirParents($path); } $filename = $path . '/exam_N' . $inst_id . '-' . $this->object->getId() . '-' . $active . '-' . $pass . '.pdf'; require_once 'class.ilTestPDFGenerator.php'; ilTestPDFGenerator::generatePDF($results_output, ilTestPDFGenerator::PDF_OUTPUT_FILE, $filename); //$template->setVariable("PDF_FILE_LOCATION", $filename); // Participant submission $archiver->handInParticipantSubmission($active, $pass, $filename, $results_output); //$archiver->handInParticipantMisc( $active, $pass, 'signature_gedoens.sig', $filename ); //$archiver->handInParticipantQuestionMaterial( $active, $pass, 123, 'file_upload.pdf', $filename ); global $ilias; $questions = $this->object->getQuestions(); foreach ($questions as $question_id) { $question_object = $this->object->getQuestionDataset($question_id); if ($question_object->type_tag == 'assFileUpload') { // Pfad: /data/default/assessment/tst_2/14/21/files/file_14_4_1370417414.png // /data/ - klar // /assessment/ - Konvention // /tst_2/ = /tst_<test_id> (ilObjTest) // /14/ = /<active_fi>/ // /21/ = /<question_id>/ (question_object) // /files/ - Konvention // file_14_4_1370417414.png = file_<active_fi>_<pass>_<some timestamp>.<ext> $candidate_path = $ilias->ini_ilias->readVariable('server', 'absolute_path') . ilTestArchiver::DIR_SEP . $ilias->ini_ilias->readVariable('clients', 'path') . ilTestArchiver::DIR_SEP . $ilias->client_id . ilTestArchiver::DIR_SEP . 'assessment' . ilTestArchiver::DIR_SEP . 'tst_' . $this->object->test_id . ilTestArchiver::DIR_SEP . $active . ilTestArchiver::DIR_SEP . $question_id . ilTestArchiver::DIR_SEP . 'files' . ilTestArchiver::DIR_SEP; $handle = opendir($candidate_path); while ($handle !== false && ($file = readdir($handle)) !== false) { if ($file != null) { $filename_start = 'file_' . $active . '_' . $pass . '_'; if (strpos($file, $filename_start) === 0) { $archiver->handInParticipantQuestionMaterial($active, $pass, $question_id, $file, $file); } } } } } $passdata = $this->object->getTestResult($active, $pass, false, !$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()); $overview = $testevaluationgui->getPassListOfAnswers($passdata, $active, $pass, true, false, false, true, false, $objectivesList, $testResultHeaderLabelBuilder); $filename = ilUtil::getWebspaceDir() . '/assessment/scores-' . $this->object->getId() . '-' . $active . '-' . $pass . '.pdf'; ilTestPDFGenerator::generatePDF($overview, ilTestPDFGenerator::PDF_OUTPUT_FILE, $filename); $archiver->handInTestResult($active, $pass, $filename); unlink($filename); return; }
/** * Delete files */ public function delete() { /** * @var $lng ilLanguage * @var $ilCtrl ilCtrl */ global $lng, $ilCtrl; require_once 'class.ilTestArchiver.php'; $archiver = new ilTestArchiver($this->getParentGUI()->object->getId()); $archiveDir = $archiver->getZipExportDirectory(); $export_dir = $this->obj->getExportDirectory(); foreach ($_POST['file'] as $file) { $file = basename($file); $dir = substr($file, 0, strlen($file) - 4); if (!strlen($file) || !strlen($dir)) { continue; } $exp_file = $export_dir . '/' . $file; $arc_file = $archiveDir . '/' . $file; $exp_dir = $export_dir . '/' . $dir; if (@is_file($exp_file)) { unlink($exp_file); } if (@is_file($arc_file)) { unlink($arc_file); } if (@is_dir($exp_dir)) { ilUtil::delDir($exp_dir); } } ilUtil::sendSuccess($lng->txt('msg_deleted_export_files'), true); $ilCtrl->redirect($this, 'listExportFiles'); }