60 $this->logger->info(
'START - saving of user certificate');
65 $id = (int) $this->database->nextId(
'il_cert_user_cert');
73 'id' => array(
'integer', $id),
75 'obj_id' => array(
'integer',
$objId),
76 'obj_type' => array(
'text', $userCertificate->
getObjType()),
77 'user_id' => array(
'integer', $userId),
78 'user_name' => array(
'text', $userCertificate->
getUserName()),
82 'valid_until' => array(
'integer', $userCertificate->
getValidUntil()),
83 'version' => array(
'integer', $version),
85 'currently_active' => array(
'integer', (integer) $userCertificate->
isCurrentlyActive()),
90 $this->logger->debug(sprintf(
'END - Save certificate with following values: %s', json_encode(
$columns, JSON_PRETTY_PRINT)));
92 $this->database->insert(
'il_cert_user_cert',
$columns);
94 return $userCertificate->
withId($id)->withVersion($version);
104 $this->logger->info(sprintf(
'START - Fetching all active certificates for user: "%s"', $userId));
108 il_cert_user_cert.pattern_certificate_id,
109 il_cert_user_cert.obj_id,
110 il_cert_user_cert.obj_type,
111 il_cert_user_cert.user_id,
112 il_cert_user_cert.user_name,
113 il_cert_user_cert.acquired_timestamp,
114 il_cert_user_cert.certificate_content,
115 il_cert_user_cert.template_values,
116 il_cert_user_cert.valid_until,
117 il_cert_user_cert.version,
118 il_cert_user_cert.ilias_version,
119 il_cert_user_cert.currently_active,
120 il_cert_user_cert.background_image_path,
121 il_cert_user_cert.id,
122 il_cert_user_cert.thumbnail_image_path,
123 (CASE WHEN (object_data.title IS NULL)
125 CASE WHEN (object_data_del.title IS NULL)
126 THEN ' . $this->database->quote($this->defaultTitle,
'text') .
'
127 ELSE object_data_del.title
129 ELSE object_data.title
132FROM il_cert_user_cert
133LEFT JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id
134LEFT JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id
135WHERE user_id = ' . $this->database->quote($userId,
'integer') .
'
136AND currently_active = 1';
138 $query = $this->database->query($sql);
141 while ($row = $this->database->fetchAssoc(
$query)) {
145 (
int) $row[
'obj_id'],
146 (
string) $row[
'obj_type'],
154 $this->logger->debug(sprintf(
'Actual results: "%s"', json_encode(
$result)));
155 $this->logger->info(sprintf(
'END - All active certificates for user: "%s" total: "%s"', $userId, count(
$result)));
167 $this->logger->info(sprintf(
'START - Fetching all active certificates for user: "%s"', $userId));
171 il_cert_user_cert.pattern_certificate_id,
172 il_cert_user_cert.obj_id,
173 il_cert_user_cert.obj_type,
174 il_cert_user_cert.user_id,
175 il_cert_user_cert.user_name,
176 il_cert_user_cert.acquired_timestamp,
177 il_cert_user_cert.certificate_content,
178 il_cert_user_cert.template_values,
179 il_cert_user_cert.valid_until,
180 il_cert_user_cert.version,
181 il_cert_user_cert.ilias_version,
182 il_cert_user_cert.currently_active,
183 il_cert_user_cert.background_image_path,
184 il_cert_user_cert.id,
185 il_cert_user_cert.thumbnail_image_path,
186 (CASE WHEN (object_data.title IS NULL)
188 CASE WHEN (object_data_del.title IS NULL)
189 THEN ' . $this->database->quote($this->defaultTitle,
'text') .
'
190 ELSE object_data_del.title
192 ELSE object_data.title
195FROM il_cert_user_cert
196LEFT JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id
197LEFT JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id
198WHERE user_id = ' . $this->database->quote($userId,
'integer') .
'
199AND currently_active = 1
200AND acquired_timestamp >= ' . $this->database->quote($startTimestamp,
'integer') .
'
201AND acquired_timestamp <= ' . $this->database->quote($endTimeStamp,
'integer');
203 $query = $this->database->query($sql);
206 while ($row = $this->database->fetchAssoc(
$query)) {
210 (
int) $row[
'obj_id'],
211 (
string) $row[
'obj_type'],
219 $this->logger->debug(sprintf(
'Actual results: "%s"', json_encode(
$result)));
220 $this->logger->info(sprintf(
'END - All active certificates for user: "%s" total: "%s"', $userId, count(
$result)));
227 $this->logger->info(sprintf(
'START - Fetching all active certificates for user: "%s" and object: "%s"', $userId, $objectId));
230FROM il_cert_user_cert
231WHERE user_id = ' . $this->database->quote($userId,
'integer') .
'
232AND obj_id = ' . $this->database->quote($objectId,
'integer') .
'
233AND currently_active = 1';
235 $query = $this->database->query($sql);
237 while ($row = $this->database->fetchAssoc(
$query)) {
238 $this->logger->debug(sprintf(
'Active certificate values: %s', json_encode($row)));
240 $this->logger->info(sprintf(
'END -Found active user certificate for user: "%s" and object: "%s"', $userId, $objectId));
245 throw new ilException(sprintf(
'There is no active entry for user id: "%s" and object id: "%s"', $userId, $objectId));
256 $this->logger->info(sprintf(
'START - Fetching all active certificates for user: "%s" and object: "%s"', $userId, $objectId));
259 il_cert_user_cert.pattern_certificate_id,
260 il_cert_user_cert.obj_id,
261 il_cert_user_cert.obj_type,
262 il_cert_user_cert.user_id,
263 il_cert_user_cert.user_name,
264 il_cert_user_cert.acquired_timestamp,
265 il_cert_user_cert.certificate_content,
266 il_cert_user_cert.template_values,
267 il_cert_user_cert.valid_until,
268 il_cert_user_cert.version,
269 il_cert_user_cert.ilias_version,
270 il_cert_user_cert.currently_active,
271 il_cert_user_cert.background_image_path,
272 il_cert_user_cert.id,
273 il_cert_user_cert.thumbnail_image_path,
275 (CASE WHEN (object_data.title IS NULL)
277 CASE WHEN (object_data_del.title IS NULL)
278 THEN ' . $this->database->quote($this->defaultTitle,
'text') .
'
279 ELSE object_data_del.title
281 ELSE object_data.title
284FROM il_cert_user_cert
285LEFT JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id
286LEFT JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id
287LEFT JOIN usr_data ON usr_data.usr_id = il_cert_user_cert.user_id
288WHERE il_cert_user_cert.user_id = ' . $this->database->quote($userId,
'integer') .
'
289AND il_cert_user_cert.obj_id = ' . $this->database->quote($objectId,
'integer') .
'
290AND il_cert_user_cert.currently_active = 1';
292 $query = $this->database->query($sql);
294 while ($row = $this->database->fetchAssoc(
$query)) {
295 $this->logger->debug(sprintf(
'Active certificate values: %s', json_encode($row)));
297 $this->logger->info(sprintf(
'END -Found active user certificate for user: "%s" and object: "%s"', $userId, $objectId));
301 (
int) $row[
'obj_id'],
302 (
string) $row[
'obj_type'],
310 throw new ilException(sprintf(
'There is no active entry for user id: "%s" and object id: "%s"', $userId, $objectId));
320 $this->logger->info(sprintf(
'START - Fetching all active certificates for user: "%s" and type: "%s"', $userId,
$type));
323 il_cert_user_cert.pattern_certificate_id,
324 il_cert_user_cert.obj_id,
325 il_cert_user_cert.obj_type,
326 il_cert_user_cert.user_id,
327 il_cert_user_cert.user_name,
328 il_cert_user_cert.acquired_timestamp,
329 il_cert_user_cert.certificate_content,
330 il_cert_user_cert.template_values,
331 il_cert_user_cert.valid_until,
332 il_cert_user_cert.version,
333 il_cert_user_cert.ilias_version,
334 il_cert_user_cert.currently_active,
335 il_cert_user_cert.background_image_path,
336 il_cert_user_cert.id,
337 il_cert_user_cert.thumbnail_image_path,
338 (CASE WHEN (object_data.title IS NULL)
340 CASE WHEN (object_data_del.title IS NULL)
341 THEN ' . $this->database->quote($this->defaultTitle,
'text') .
'
342 ELSE object_data_del.title
344 ELSE object_data.title
347FROM il_cert_user_cert
348LEFT JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id
349LEFT JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id
350WHERE user_id = ' . $this->database->quote($userId,
'integer') .
'
351 AND obj_type = ' . $this->database->quote(
$type,
'text') .
'
352 AND currently_active = 1';
354 $query = $this->database->query($sql);
357 while ($row = $this->database->fetchAssoc(
$query)) {
361 (
int) $row[
'obj_id'],
362 (
string) $row[
'obj_type'],
370 $this->logger->info(sprintf(
'END - Fetching all active certificates for user: "%s" and type: "%s"', $userId,
$type));
382 $this->logger->info(sprintf(
'START - Fetch certificate by id: "%s"', $id));
384 $sql =
'SELECT * FROM il_cert_user_cert WHERE id = ' . $this->database->quote($id,
'integer');
386 $query = $this->database->query($sql);
388 while ($row = $this->database->fetchAssoc(
$query)) {
389 $this->logger->debug(sprintf(
'Fetched certificate: "%s"', json_encode($row)));
391 $this->logger->info(sprintf(
'END - Fetch certificate by id: "%s"', $id));
396 throw new ilException(
'No certificate found for user certificate id: ' . $id);
401 $this->logger->info(sprintf(
'START - Fetch certificate for user("%s") and ids: "%s"', $userId, json_encode($objectIds)));
403 if (0 === count($objectIds)) {
407 $inStatementObjectIds = $this->database->in(
414 $sql =
'SELECT obj_id FROM il_cert_user_cert
415 WHERE user_id = ' . $this->database->quote($userId,
'integer') .
416' AND ' . $inStatementObjectIds .
417' AND currently_active = ' . $this->database->quote(1,
'integer');
419 $query = $this->database->query($sql);
423 while ($row = $this->database->fetchAssoc(
$query)) {
424 $this->logger->debug(sprintf(
'Fetched certificate: "%s"', json_encode($row)));
433 $this->logger->info(sprintf(
'START - Fetch certificate for object("%s")"', $objectId));
435 $sql =
'SELECT user_id FROM il_cert_user_cert
436WHERE obj_id = ' . $this->database->quote($objectId,
'integer') .
'
437 AND currently_active = ' . $this->database->quote(1,
'integer');
439 $query = $this->database->query($sql);
443 while ($row = $this->database->fetchAssoc(
$query)) {
444 $this->logger->debug(sprintf(
'Fetched certificate: "%s"', json_encode($row)));
453 $this->logger->info(sprintf(
'START - Delete certificate for user("%s")"', $userId));
455 $sql =
'DELETE FROM il_cert_user_cert WHERE user_id = ' . $this->database->quote($userId,
'integer');
457 $this->database->manipulate($sql);
459 $this->logger->info(sprintf(
'END - Successfully deleted certificate for user("%s")"', $userId));
469 $this->logger->info(sprintf(
470 'START - fetching all certificates of object(user id: "%s", object id: "%s")',
475 $sql =
'SELECT * FROM il_cert_user_cert
476WHERE user_id = ' . $this->database->quote($userId,
'integer') .
'
477AND obj_id = ' . $this->database->quote(
$objId,
'integer');
479 $query = $this->database->query($sql);
482 while ($row = $this->database->fetchAssoc(
$query)) {
483 $this->logger->debug(sprintf(
484 'Certificate found: "%s")',
485 json_encode($row, JSON_PRETTY_PRINT)
488 $this->logger->info(sprintf(
'Certificate: "%s"', json_encode($row)));
493 $this->logger->info(sprintf(
494 'END - fetching all certificates of object(user id: "%s", object id: "%s")',
509 $this->logger->info(sprintf(
510 'START - fetching of latest certificates of object(user id: "%s", object id: "%s")',
518 foreach ($templates as $template) {
519 if ($template->getVersion() > $version) {
520 $version = $template->getVersion();
524 $this->logger->info(sprintf(
525 'END - fetching of latest certificates of object(user id: "%s", object id: "%s") with version "%s"',
541 $this->logger->info(sprintf(
'START - deactivating previous certificates for user id: "%s" and object id: "%s"', $userId,
$objId));
544UPDATE il_cert_user_cert
545SET currently_active = 0
546WHERE obj_id = ' . $this->database->quote(
$objId,
'integer') .
'
547AND user_id = ' . $this->database->quote($userId,
'integer');
549 $this->database->manipulate($sql);
551 $this->logger->info(sprintf(
'END - deactivating previous certificates for user id: "%s" and object id: "%s"', $userId,
$objId));
556 $this->logger->debug(sprintf(
557 'START - Checking if any certificate template uses background image path "%s"',
561 $result = $this->database->queryF(
562 'SELECT EXISTS(SELECT 1 FROM il_cert_user_cert WHERE background_image_path = %s AND currently_active = 1) AS does_exist',
567 $exists = (bool) ($this->database->fetchAssoc(
$result)[
'does_exist'] ??
false);
569 $this->logger->debug(sprintf(
570 'END - Image path "%s" is ' . $exists ?
"in use" :
"unused",
584 $row[
'pattern_certificate_id'],
589 (
int) $row[
'acquired_timestamp'],
590 $row[
'certificate_content'],
591 $row[
'template_values'],
594 $row[
'ilias_version'],
595 $row[
'currently_active'],
596 $row[
'background_image_path'],
597 $row[
'thumbnail_image_path'],
An exception for terminatinating execution or to throw for unit testing.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Component logger with individual log levels by component id.
deleteUserCertificates(int $userId)
fetchCertificate(int $id)
fetchActiveCertificatesInIntervalForPresentation(int $userId, int $startTimestamp, int $endTimeStamp)
fetchCertificatesOfObject(int $objId, int $userId)
fetchActiveCertificateForPresentation(int $userId, int $objectId)
isBackgroundImageUsed(string $relativeImagePath)
deactivatePreviousCertificates(int $objId, int $userId)
fetchActiveCertificates(int $userId)
fetchObjectIdsWithCertificateForUser(int $userId, array $objectIds)
createUserCertificate($row)
fetchLatestVersion(int $objId, int $userId)
fetchActiveCertificatesByTypeForPresentation(int $userId, string $type)
fetchActiveCertificate(int $userId, int $objectId)
fetchUserIdsWithCertificateForObject(int $objectId)
save(ilUserCertificate $userCertificate)
__construct(\ilDBInterface $database=null, ilLogger $logger=null, string $defaultTitle=null)
getPatternCertificateId()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...