예제 #1
0
 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);
 }
예제 #2
0
 /**
  * @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;
 }
예제 #6
0
 /**
  * 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');
 }