ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
SettingsDBRepository.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Exercise\Settings;
22 
23 use ilDBInterface;
25 
27 {
28  public function __construct(
29  protected ilDBInterface $db,
30  protected InternalDataService $data
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 }
__construct(protected ilDBInterface $db, protected InternalDataService $data)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Internal factory for data objects.