ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilTestArchiveService.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use ILIAS\Test\Results\Presentation\TitlesBuilder as ResultsTitlesBuilder;
22use ILIAS\UI\Factory as UIFactory;
23use ILIAS\UI\Renderer as UIRenderer;
24use Psr\Http\Message\ServerRequestInterface;
26
34{
36
37 public function __construct(
38 private readonly ilObjTest $test_obj,
39 private readonly ilLanguage $lng,
40 private readonly ilDBInterface $db,
41 private readonly ilObjUser $user,
42 private readonly UIFactory $ui_factory,
43 private readonly UIRenderer $ui_renderer,
44 private readonly IRSS $irss,
45 private readonly ServerRequestInterface $request,
46 private readonly ilObjectDataCache $obj_cache,
47 private readonly ilTestParticipantAccessFilterFactory $participant_access_filter_factory,
48 private readonly ilTestHTMLGenerator $html_generator
49 ) {
50 $this->participantData = null;
51 }
52
54 {
56 }
57
59 {
60 $this->participantData = $participantData;
61 }
62
63 public function archivePassesByActives($passesByActives): void
64 {
65 foreach ($passesByActives as $activeId => $passes) {
66 foreach ($passes as $pass) {
67 $this->archiveActivesPass($activeId, $pass);
68 }
69 }
70 }
71
72 public function archiveActivesPass(int $active_id, int $pass): void
73 {
74 $content = $this->renderOverviewContent($active_id, $pass);
75 $filename = $this->buildOverviewFilename($active_id, $pass);
76 $this->html_generator->generateHTML($content, $filename);
77 $archiver = new ilTestArchiver(
78 $this->lng,
79 $this->db,
80 $this->user,
81 $this->ui_factory,
82 $this->ui_renderer,
83 $this->irss,
84 $this->request,
85 $this->obj_cache,
86 $this->participant_access_filter_factory,
87 $this->test_obj->getTestLogViewer(),
88 $this->test_obj->getId()
89 );
90 $archiver->setParticipantData($this->getParticipantData());
91 $archiver->handInTestResult($active_id, $pass, $filename);
92 $archiver->handInParticipantUploadedResults($active_id, $pass, $this->test_obj);
93 unlink($filename);
94 }
95
101 private function renderOverviewContent($activeId, $pass): string
102 {
103 $results = $this->test_obj->getTestResult(
104 $activeId,
105 $pass,
106 false
107 );
108
109 $gui = new ilTestServiceGUI($this->test_obj);
110 $testResultHeaderLabelBuilder = new ResultsTitlesBuilder($this->lng, $this->obj_cache);
111
112 return $gui->getPassListOfAnswers(
113 $results,
114 $activeId,
115 $pass,
116 true,
117 false,
118 false,
119 true,
120 false,
121 null,
122 $testResultHeaderLabelBuilder
123 );
124 }
125
131 private function buildOverviewFilename($activeId, $pass): string
132 {
133 $tmpFileName = ilFileUtils::ilTempnam();
134 return dirname($tmpFileName) . '/scores-' . $this->test_obj->getId() . '-' . $activeId . '-' . $pass . '.html';
135 }
136}
$filename
Definition: buildRTE.php:78
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
static ilTempnam(?string $a_temp_path=null)
Returns a unique and non existing Path for e temporary file or directory.
language handling
User class.
class ilObjectDataCache
archiveActivesPass(int $active_id, int $pass)
archivePassesByActives($passesByActives)
renderOverviewContent($activeId, $pass)
ilTestParticipantData $participantData
buildOverviewFilename($activeId, $pass)
__construct(private readonly ilObjTest $test_obj, private readonly ilLanguage $lng, private readonly ilDBInterface $db, private readonly ilObjUser $user, private readonly UIFactory $ui_factory, private readonly UIRenderer $ui_renderer, private readonly IRSS $irss, private readonly ServerRequestInterface $request, private readonly ilObjectDataCache $obj_cache, private readonly ilTestParticipantAccessFilterFactory $participant_access_filter_factory, private readonly ilTestHTMLGenerator $html_generator)
setParticipantData(ilTestParticipantData $participantData)
Class that handles PDF generation for test and assessment.
Service GUI class for tests.
An entity that renders components to a string output.
Definition: Renderer.php:31
Interface ilDBInterface.
global $lng
Definition: privfeed.php:31
$results