ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
MapDBRepository.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24{
25 protected \ilDBInterface $db;
26
27 public function __construct(
29 ) {
30 $this->db = $db;
31 }
32
33 public function saveScreenIdsForChapter(
34 int $a_chap,
35 array $a_ids
36 ): void {
37 $this->removeScreenIdsOfChapter($a_chap);
38 foreach ($a_ids as $id) {
39 $full_id = trim($id);
40 $id = trim($id);
41 $id = explode("/", $id);
42 if ($id[0] != "") {
43 if (($id[1] ?? "") == "") {
44 $id[1] = "-";
45 }
46 $pos2 = strpos($full_id, "/", strpos($full_id, "/") + 1);
47 if ($pos2 === false) {
48 $id2 = "";
49 } else {
50 $id2 = substr($full_id, $pos2 + 1);
51 }
52 $id2 = explode("#", ($id2 ?? ""));
53 if (($id2[0] ?? "") == "") {
54 $id2[0] = "-";
55 }
56 if (($id2[1] ?? "") == "") {
57 $id2[1] = "-";
58 }
59 // strip perm from full id
60 $pos = strpos($full_id, "#");
61 if ($pos !== false) {
62 $full_id = substr($full_id, 0, $pos);
63 }
64 $this->db->replace(
65 "help_map",
66 array("chap" => array("integer", $a_chap),
67 "component" => array("text", $id[0]),
68 "screen_id" => array("text", $id[1]),
69 "screen_sub_id" => array("text", $id2[0]),
70 "perm" => array("text", $id2[1]),
71 "full_id" => array("text", trim($full_id)),
72 "module_id" => array("integer", 0)
73 ),
74 array()
75 );
76 }
77 }
78 }
79
80 public function saveMappingEntry(
81 int $a_chap,
82 string $a_comp,
83 string $a_screen_id,
84 string $a_screen_sub_id,
85 string $a_perm,
86 int $a_module_id = 0,
87 string $full_id = ""
88 ): void {
89 $this->db->replace(
90 "help_map",
91 array("chap" => array("integer", $a_chap),
92 "component" => array("text", $a_comp),
93 "screen_id" => array("text", $a_screen_id),
94 "screen_sub_id" => array("text", $a_screen_sub_id),
95 "perm" => array("text", $a_perm),
96 "module_id" => array("integer", $a_module_id),
97 "full_id" => array("text", $full_id)
98 ),
99 array()
100 );
101 }
102
104 int $a_chap,
105 int $a_module_id = 0
106 ): void {
107 $this->db->manipulate(
108 "DELETE FROM help_map WHERE " .
109 " chap = " . $this->db->quote($a_chap, "integer") .
110 " AND module_id = " . $this->db->quote($a_module_id, "integer")
111 );
112 }
113
114 public function getScreenIdsOfChapter(
115 int $a_chap,
116 int $a_module_id = 0
117 ): array {
118 $set = $this->db->query(
119 "SELECT * FROM help_map " .
120 " WHERE chap = " . $this->db->quote($a_chap, "integer") .
121 " AND module_id = " . $this->db->quote($a_module_id, "integer") .
122 " ORDER BY component, screen_id, screen_sub_id"
123 );
124 $screen_ids = array();
125 while ($rec = $this->db->fetchAssoc($set)) {
126 if ($rec["screen_id"] == "-") {
127 $rec["screen_id"] = "";
128 }
129 if ($rec["screen_sub_id"] == "-") {
130 $rec["screen_sub_id"] = "";
131 }
132 $id = $rec["component"] . "/" . $rec["screen_id"] . "/" . $rec["screen_sub_id"];
133 if ($rec["perm"] != "" && $rec["perm"] != "-") {
134 $id .= "#" . $rec["perm"];
135 }
136 $screen_ids[] = $rec["full_id"];
137 }
138 return $screen_ids;
139 }
140
141 public function getChaptersForScreenId(
142 string $a_screen_id,
143 array $module_ids
144 ): \Generator {
145 $sc_id = explode("/", $a_screen_id);
146 $chaps = array();
147 foreach ($module_ids as $module_id) {
148 if (($sc_id[0] ?? "") != "") {
149 if (($sc_id[1] ?? "") == "") {
150 $sc_id[1] = "-";
151 }
152 if (($sc_id[2] ?? "") == "") {
153 $sc_id[2] = "-";
154 }
155 $set = $this->db->query(
156 $q =
157 "SELECT chap, perm FROM help_map JOIN lm_tree" .
158 " ON (help_map.chap = lm_tree.child) " .
159 " WHERE full_id = " . $this->db->quote($a_screen_id, "text") .
160 " AND module_id = " . $this->db->quote($module_id, "integer") .
161 " ORDER BY lm_tree.lft"
162 );
163 while ($rec = $this->db->fetchAssoc($set)) {
164 yield $rec;
165 }
166 }
167 }
168 }
169
170 public function deleteEntriesOfModule(
171 int $a_id
172 ): void {
173 $this->db->manipulate("DELETE FROM help_map WHERE " .
174 " module_id = " . $this->db->quote($a_id, "integer"));
175 }
176
177}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
getScreenIdsOfChapter(int $a_chap, int $a_module_id=0)
removeScreenIdsOfChapter(int $a_chap, int $a_module_id=0)
saveMappingEntry(int $a_chap, string $a_comp, string $a_screen_id, string $a_screen_sub_id, string $a_perm, int $a_module_id=0, string $full_id="")
getChaptersForScreenId(string $a_screen_id, array $module_ids)
saveScreenIdsForChapter(int $a_chap, array $a_ids)
__construct(\ilDBInterface $db)
Interface ilDBInterface.
$q
Definition: shib_logout.php:23