ILIAS  release_8 Revision v8.24
class.SkillProfileCompletionDBRepository.php
Go to the documentation of this file.
1<?php
2
20namespace ILIAS\Skill\Profile;
21
28{
29 protected \ilDBInterface $db;
30
31 public function __construct(\ilDBInterface $db = null)
32 {
33 global $DIC;
34
35 $this->db = ($db) ?: $DIC->database();
36 }
37
41 public function getEntries(int $user_id, int $profile_id): array
42 {
44
45 $set = $ilDB->query(
46 "SELECT * FROM skl_profile_completion " .
47 " WHERE profile_id = " . $ilDB->quote($profile_id, "integer") .
48 " AND user_id = " . $ilDB->quote($user_id, "integer")
49 );
50 $entries = [];
51 while ($rec = $ilDB->fetchAssoc($set)) {
52 $entries[] = array(
53 "profile_id" => $rec["profile_id"],
54 "user_id" => $rec["user_id"],
55 "date" => $rec["date"],
56 "fulfilled" => $rec["fulfilled"]
57 );
58 }
59
60 return $entries;
61 }
62
66 public function addFulfilmentEntry(int $user_id, int $profile_id): void
67 {
69
70 $set = $ilDB->query(
71 "SELECT * FROM skl_profile_completion " .
72 " WHERE profile_id = " . $ilDB->quote($profile_id, "integer") .
73 " AND user_id = " . $ilDB->quote($user_id, "integer") .
74 " ORDER BY date DESC" .
75 " LIMIT 1"
76 );
77
78 $entry = null;
79 while ($rec = $ilDB->fetchAssoc($set)) {
80 $entry = $rec["fulfilled"];
81 }
82
83 if ($entry == 0) {
84 $now = \ilUtil::now();
85 $ilDB->manipulate("INSERT INTO skl_profile_completion " .
86 "(profile_id, user_id, date, fulfilled) VALUES (" .
87 $ilDB->quote($profile_id, "integer") . "," .
88 $ilDB->quote($user_id, "integer") . "," .
89 $ilDB->quote($now, "timestamp") . "," .
90 $ilDB->quote(1, "integer") .
91 ")");
92 }
93 }
94
98 public function addNonFulfilmentEntry(int $user_id, int $profile_id): void
99 {
101
102 $set = $ilDB->query(
103 "SELECT * FROM skl_profile_completion " .
104 " WHERE profile_id = " . $ilDB->quote($profile_id, "integer") .
105 " AND user_id = " . $ilDB->quote($user_id, "integer") .
106 " ORDER BY date DESC" .
107 " LIMIT 1"
108 );
109
110 $entry = null;
111 while ($rec = $ilDB->fetchAssoc($set)) {
112 $entry = $rec["fulfilled"];
113 }
114
115 if (is_null($entry) || $entry == 1) {
116 $now = \ilUtil::now();
117 $ilDB->manipulate("INSERT INTO skl_profile_completion " .
118 "(profile_id, user_id, date, fulfilled) VALUES (" .
119 $ilDB->quote($profile_id, "integer") . "," .
120 $ilDB->quote($user_id, "integer") . "," .
121 $ilDB->quote($now, "timestamp") . "," .
122 $ilDB->quote(0, "integer") .
123 ")");
124 }
125 }
126
131 public function getFulfilledEntriesForUser(int $user_id): array
132 {
133 global $DIC;
134
135 $ilDB = $DIC->database();
136
137 $set = $ilDB->query(
138 "SELECT * FROM skl_profile_completion " .
139 " WHERE user_id = " . $ilDB->quote($user_id, "integer") .
140 " AND fulfilled = 1"
141 );
142 $entries = [];
143 while ($rec = $ilDB->fetchAssoc($set)) {
144 $entries[] = array(
145 "profile_id" => (int) $rec["profile_id"],
146 "user_id" => (int) $rec["user_id"],
147 "date" => $rec["date"],
148 "fulfilled" => (int) $rec["fulfilled"]
149 );
150 }
151
152 return $entries;
153 }
154
158 public function getAllEntriesForUser(int $user_id): array
159 {
160 global $DIC;
161
162 $ilDB = $DIC->database();
163
164 $set = $ilDB->query(
165 "SELECT * FROM skl_profile_completion " .
166 " WHERE user_id = " . $ilDB->quote($user_id, "integer")
167 );
168 $entries = [];
169 while ($rec = $ilDB->fetchAssoc($set)) {
170 $entries[] = array(
171 "profile_id" => $rec["profile_id"],
172 "user_id" => $rec["user_id"],
173 "date" => $rec["date"],
174 "fulfilled" => $rec["fulfilled"]
175 );
176 }
177
178 return $entries;
179 }
180
184 public function getAllEntriesForProfile(int $profile_id): array
185 {
186 global $DIC;
187
188 $ilDB = $DIC->database();
189
190 $set = $ilDB->query(
191 "SELECT * FROM skl_profile_completion " .
192 " WHERE profile_id = " . $ilDB->quote($profile_id, "integer")
193 );
194 $entries = [];
195 while ($rec = $ilDB->fetchAssoc($set)) {
196 $entries[] = array(
197 "profile_id" => $rec["profile_id"],
198 "user_id" => $rec["user_id"],
199 "date" => $rec["date"],
200 "fulfilled" => $rec["fulfilled"]
201 );
202 }
203
204 return $entries;
205 }
206
210 public function deleteEntriesForProfile(int $profile_id): void
211 {
213
214 $ilDB->manipulate(
215 "DELETE FROM skl_profile_completion WHERE "
216 . " profile_id = " . $ilDB->quote($profile_id, "integer")
217 );
218 }
219
223 public function deleteEntriesForUser(int $user_id): void
224 {
226
227 $ilDB->manipulate(
228 "DELETE FROM skl_profile_completion WHERE "
229 . " user_id = " . $ilDB->quote($user_id, "integer")
230 );
231 }
232}
getAllEntriesForProfile(int $profile_id)
Get all completion entries for a single profile.
getEntries(int $user_id, int $profile_id)
Get profile completion entries for given user-profile-combination.
deleteEntriesForUser(int $user_id)
Delete all profile completion entries for a user.
deleteEntriesForProfile(int $profile_id)
Delete all profile completion entries for a profile.
getFulfilledEntriesForUser(int $user_id)
Get all profile completion entries for a user.
getAllEntriesForUser(int $user_id)
Get all profile completion entries for a user.
addFulfilmentEntry(int $user_id, int $profile_id)
Add profile fulfilment entry to given user-profile-combination.
addNonFulfilmentEntry(int $user_id, int $profile_id)
Add profile non-fulfilment entry to given user-profile-combination.
static now()
Return current timestamp in Y-m-d H:i:s format.
global $DIC
Definition: feed.php:28
Interface ilDBInterface.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...