ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
SettingsDBRepository.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
25
27{
28 public function __construct(
29 protected ilDBInterface $db,
31 ) {
32 }
33
34 public function create(Settings $settings): void
35 {
36 $this->db->insert("exc_data", [
37 "obj_id" => ["integer", $settings->getObjId()],
38 "instruction" => ["clob", $settings->getInstruction()],
39 "time_stamp" => ["integer", $settings->getTimeStamp()],
40 "pass_mode" => ["text", $settings->getPassMode()],
41 "nr_mandatory_random" => ["integer", $settings->getNrMandatoryRandom()],
42 "pass_nr" => ["text", $settings->getPassNr()],
43 "show_submissions" => ["integer", (int) $settings->getShowSubmissions()],
44 'compl_by_submission' => ["integer", (int) $settings->getCompletionBySubmission()],
45 "certificate_visibility" => ["integer", $settings->getCertificateVisibility()],
46 "tfeedback" => ["integer", $settings->getTutorFeedback()]
47 ]);
48 }
49
50 public function update(Settings $settings): void
51 {
52 $this->db->update("exc_data", [
53 "instruction" => ["clob", $settings->getInstruction()],
54 "time_stamp" => ["integer", $settings->getTimeStamp()],
55 "pass_mode" => ["text", $settings->getPassMode()],
56 "nr_mandatory_random" => ["integer", $settings->getNrMandatoryRandom()],
57 "pass_nr" => ["text", $settings->getPassNr()],
58 "show_submissions" => ["integer", (int) $settings->getShowSubmissions()],
59 'compl_by_submission' => ["integer", (int) $settings->getCompletionBySubmission()],
60 "certificate_visibility" => ["integer", $settings->getCertificateVisibility()],
61 "tfeedback" => ["integer", $settings->getTutorFeedback()]
62 ], [
63 "obj_id" => ["integer", $settings->getObjId()]
64 ]);
65 }
66
67 public function getByObjId(int $obj_id): ?Settings
68 {
69 $set = $this->db->queryF(
70 "SELECT * FROM exc_data WHERE obj_id = %s",
71 ["integer"],
72 [$obj_id]
73 );
74
75 $rec = $this->db->fetchAssoc($set);
76 if ($rec !== false) {
77 return $this->getSettingsFromRecord($rec);
78 }
79
80 return null;
81 }
82
83 public function delete(int $obj_id): void
84 {
85 $this->db->manipulateF(
86 "DELETE FROM exc_data WHERE obj_id = %s",
87 ["integer"],
88 [$obj_id]
89 );
90 }
91
92 protected function getSettingsFromRecord(array $rec): Settings
93 {
94 return $this->data->settings(
95 (int) $rec['obj_id'],
96 $rec['instruction'],
97 (int) $rec['time_stamp'],
98 $rec['pass_mode'],
99 (int) $rec['nr_mandatory_random'],
100 (int) $rec['pass_nr'],
101 (bool) $rec['show_submissions'],
102 (bool) $rec['compl_by_submission'],
103 (int) $rec['certificate_visibility'],
104 (int) $rec['tfeedback']
105 );
106 }
107}
Internal factory for data objects.
__construct(protected ilDBInterface $db, protected InternalDataService $data)
Interface ilDBInterface.