ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilCertificateTemplateDatabaseRepository Class Reference
+ Inheritance diagram for ilCertificateTemplateDatabaseRepository:
+ Collaboration diagram for ilCertificateTemplateDatabaseRepository:

Public Member Functions

 __construct (private readonly ilDBInterface $database, ?ilLogger $logger=null, ?ilObjectDataCache $objectDataCache=null)
 
 save (ilCertificateTemplate $certificateTemplate)
 
 updateActivity (ilCertificateTemplate $certificateTemplate, bool $currentlyActive)
 
 fetchTemplate (int $templateId)
 
 fetchCertificateTemplatesByObjId (int $objId)
 
 fetchCurrentlyUsedCertificate (int $objId)
 
 fetchCurrentlyActiveCertificate (int $objId)
 
 fetchPreviousCertificate (int $objId)
 
 deleteTemplate (int $templateId, int $objectId)
 
 fetchActiveCertificateTemplatesForCoursesWithDisabledLearningProgress (bool $isGlobalLpEnabled, ?int $forRefId=null)
 
 fetchFirstCreatedTemplate (int $objId)
 
 isResourceUsed (string $relative_image_identification)
 
- Public Member Functions inherited from ilCertificateTemplateRepository
 save (ilCertificateTemplate $certificateTemplate)
 
 updateActivity (ilCertificateTemplate $certificateTemplate, bool $currentlyActive)
 
 fetchTemplate (int $templateId)
 
 fetchCertificateTemplatesByObjId (int $objId)
 
 fetchCurrentlyUsedCertificate (int $objId)
 
 fetchCurrentlyActiveCertificate (int $objId)
 
 fetchPreviousCertificate (int $objId)
 
 deleteTemplate (int $templateId, int $objectId)
 
 activatePreviousCertificate (int $objId)
 
 fetchActiveCertificateTemplatesForCoursesWithDisabledLearningProgress (bool $isGlobalLpEnabled, ?int $forRefId=null)
 
 fetchFirstCreatedTemplate (int $objId)
 

Data Fields

const TABLE_NAME = 'il_cert_template'
 

Private Member Functions

 deactivatePreviousTemplates (int $objId)
 
 createCertificateTemplate (array $row)
 

Private Attributes

readonly ilLogger $logger
 
readonly ilObjectDataCache $objectDataCache
 

Detailed Description

Author
Niels Theen nthee.nosp@m.n@da.nosp@m.tabay.nosp@m..de Repository that allows interaction with the database in the context of certificate templates.

Definition at line 26 of file class.ilCertificateTemplateDatabaseRepository.php.

Constructor & Destructor Documentation

◆ __construct()

ilCertificateTemplateDatabaseRepository::__construct ( private readonly ilDBInterface  $database,
?ilLogger  $logger = null,
?ilObjectDataCache  $objectDataCache = null 
)

Definition at line 32 of file class.ilCertificateTemplateDatabaseRepository.php.

36 {
37 if (null === $logger) {
38 global $DIC;
39 $logger = $DIC->logger()->cert();
40 }
41 $this->logger = $logger;
42
43 if (null === $objectDataCache) {
44 global $DIC;
45 $objectDataCache = $DIC['ilObjDataCache'];
46 }
48 }
global $DIC
Definition: shib_login.php:26

References $DIC, $logger, $objectDataCache, ILIAS\Repository\logger(), and ILIAS\Repository\objectDataCache().

+ Here is the call graph for this function:

Member Function Documentation

◆ createCertificateTemplate()

ilCertificateTemplateDatabaseRepository::createCertificateTemplate ( array  $row)
private
Parameters
array<string,mixed>$row

Definition at line 432 of file class.ilCertificateTemplateDatabaseRepository.php.

433 {
434 return new ilCertificateTemplate(
435 (int) $row['obj_id'],
436 $row['obj_type'],
437 $row['certificate_content'],
438 $row['certificate_hash'],
439 $row['template_values'],
440 (int) $row['version'],
441 $row['ilias_version'],
442 (int) $row['created_timestamp'],
443 (bool) $row['currently_active'],
444 (string) ($row['background_image_ident'] ?? ''),
445 (string) ($row['tile_image_ident'] ?? ''),
446 isset($row['id']) ? (int) $row['id'] : null
447 );
448 }

Referenced by fetchCertificateTemplatesByObjId(), fetchCurrentlyActiveCertificate(), fetchCurrentlyUsedCertificate(), and fetchTemplate().

+ Here is the caller graph for this function:

◆ deactivatePreviousTemplates()

ilCertificateTemplateDatabaseRepository::deactivatePreviousTemplates ( int  $objId)
private

Definition at line 386 of file class.ilCertificateTemplateDatabaseRepository.php.

386 : void
387 {
388 $this->logger->debug(sprintf('START - Deactivate previous certificate template for object: "%s"', $objId));
389
390 $sql = '
391 UPDATE ' . self::TABLE_NAME . '
392 SET currently_active = 0
393 WHERE obj_id = ' . $this->database->quote($objId, ilDBConstants::T_INTEGER);
394
395 $this->database->manipulate($sql);
396
397 $this->logger->debug(sprintf('END - Certificate template deactivated for object: "%s"', $objId));
398 }
$objId
Definition: xapitoken.php:55

References $objId, ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

Referenced by save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteTemplate()

ilCertificateTemplateDatabaseRepository::deleteTemplate ( int  $templateId,
int  $objectId 
)

Implements ilCertificateTemplateRepository.

Definition at line 247 of file class.ilCertificateTemplateDatabaseRepository.php.

247 : void
248 {
249 $this->logger->debug(
250 sprintf(
251 'START - Set deleted flag for certificate template("%s") for object: "%s"',
252 $templateId,
253 $objectId
254 )
255 );
256
257 $sql = '
258 UPDATE ' . self::TABLE_NAME . '
259 SET deleted = 1, currently_active = 0
260 WHERE id = ' . $this->database->quote($templateId, ilDBConstants::T_INTEGER) . '
261 AND obj_id = ' . $this->database->quote($objectId, ilDBConstants::T_INTEGER);
262
263 $this->database->manipulate($sql);
264
265 $this->logger->debug(
266 sprintf(
267 'END - Deleted flag set fo certificate template("%s") for object: "%s"',
268 $templateId,
269 $objectId
270 )
271 );
272 }

References ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

◆ fetchActiveCertificateTemplatesForCoursesWithDisabledLearningProgress()

ilCertificateTemplateDatabaseRepository::fetchActiveCertificateTemplatesForCoursesWithDisabledLearningProgress ( bool  $isGlobalLpEnabled,
?int  $forRefId = null 
)
Returns
ilCertificateTemplate[]

Implements ilCertificateTemplateRepository.

Definition at line 301 of file class.ilCertificateTemplateDatabaseRepository.php.

304 : array {
305 $this->logger->debug(
306 'START - Fetch all active course certificate templates with disabled learning progress: "%s"'
307 );
308
309 $joinLpSettings = '';
310 $whereLpSettings = '';
311 $onSettingsForRefId = '';
312
313 if ($isGlobalLpEnabled) {
314 $joinLpSettings = 'LEFT JOIN ut_lp_settings uls ON uls.obj_id = od.obj_id';
315 $whereLpSettings = sprintf(
316 'AND (uls.u_mode IS NULL OR uls.u_mode = %s)',
317 $this->database->quote(ilLPObjSettings::LP_MODE_DEACTIVATED, 'integer')
318 );
319 }
320
321 if (is_int($forRefId)) {
322 $onSettingsForRefId = " AND settings.value IS NOT NULL AND (JSON_CONTAINS(settings.value, '\"{$forRefId}\"', '$') = 1 OR JSON_CONTAINS(settings.value, '{$forRefId}', '$')) ";
323 }
324
325 $sql = '
326 SELECT ' . self::TABLE_NAME . '.*
327 FROM ' . self::TABLE_NAME . '
328 INNER JOIN object_data od ON od.obj_id = ' . self::TABLE_NAME . ".obj_id
329 INNER JOIN settings ON settings.module = %s AND settings.keyword = {$this->database->concat(
330 [
331 [$this->database->quote('cert_subitems_', 'text'), 'text'],
332 ['od.obj_id', 'text']
333 ],
334 false
335 )} $onSettingsForRefId $joinLpSettings
336 WHERE " . self::TABLE_NAME . '.obj_type = %s
337 AND ' . self::TABLE_NAME . '.currently_active = %s
338 ' . $whereLpSettings;
339 $query = $this->database->queryF(
340 $sql,
341 ['text', 'text', 'integer'],
342 ['crs', 'crs', 1]
343 );
344
345 $result = [];
346 while ($row = $this->database->fetchAssoc($query)) {
347 $result[] = $this->createCertificateTemplate($row);
348 }
349
350 $this->logger->debug(
351 sprintf(
352 'END - All active course certificate templates with disabled learning progress: "%s"',
353 json_encode($result, JSON_THROW_ON_ERROR)
354 )
355 );
356
357 return $result;
358 }

References ILIAS\Repository\database(), and ilLPObjSettings\LP_MODE_DEACTIVATED.

+ Here is the call graph for this function:

◆ fetchCertificateTemplatesByObjId()

ilCertificateTemplateDatabaseRepository::fetchCertificateTemplatesByObjId ( int  $objId)
Returns
ilCertificateTemplate[]

Implements ilCertificateTemplateRepository.

Definition at line 120 of file class.ilCertificateTemplateDatabaseRepository.php.

120 : array
121 {
122 $this->logger->debug(sprintf('START - Fetch multiple certificate templates for object: "%s"', $objId));
123
124 $result = [];
125
126 $sql = '
127 SELECT * FROM ' .
128 self::TABLE_NAME . ' ' .
129 'WHERE obj_id = ' . $this->database->quote($objId, ilDBConstants::T_INTEGER) . ' ' .
130 'AND deleted = 0 ' .
131 'ORDER BY version ASC'
132 ;
133
134 $query = $this->database->query($sql);
135
136 while ($row = $this->database->fetchAssoc($query)) {
137 $result[] = $this->createCertificateTemplate($row);
138 }
139
140 $this->logger->debug(
141 sprintf(
142 'END - Fetching of certificate templates for object: "%s" with "%s" results',
143 $objId,
144 count($result)
145 )
146 );
147
148 return $result;
149 }

References $objId, createCertificateTemplate(), ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

Referenced by fetchPreviousCertificate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchCurrentlyActiveCertificate()

ilCertificateTemplateDatabaseRepository::fetchCurrentlyActiveCertificate ( int  $objId)
Exceptions
ilCouldNotFindCertificateTemplate

Implements ilCertificateTemplateRepository.

Definition at line 192 of file class.ilCertificateTemplateDatabaseRepository.php.

193 {
194 $this->logger->debug(sprintf('START - Fetch currently active certificate template for object: "%s"', $objId));
195
196 $sql = '
197 SELECT * FROM ' . self::TABLE_NAME . '
198 WHERE obj_id = ' . $this->database->quote($objId, ilDBConstants::T_INTEGER) . '
199 AND deleted = 0
200 AND currently_active = 1
201 ';
202
203 $query = $this->database->query($sql);
204
205 while ($row = $this->database->fetchAssoc($query)) {
206 $this->logger->debug(sprintf('END - Found active certificate for: "%s"', $objId));
207
208 return $this->createCertificateTemplate($row);
209 }
210
211 throw new ilCouldNotFindCertificateTemplate(sprintf('NO active certificate template found for: "%s"', $objId));
212 }

References $objId, createCertificateTemplate(), ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

◆ fetchCurrentlyUsedCertificate()

ilCertificateTemplateDatabaseRepository::fetchCurrentlyUsedCertificate ( int  $objId)

Implements ilCertificateTemplateRepository.

Definition at line 151 of file class.ilCertificateTemplateDatabaseRepository.php.

152 {
153 $this->logger->debug(sprintf('START - Fetch currently active certificate template for object: "%s"', $objId));
154
155 $this->database->setLimit(1);
156
157 $sql = '
158 SELECT * FROM ' . self::TABLE_NAME . '
159 WHERE obj_id = ' . $this->database->quote($objId, ilDBConstants::T_INTEGER) . '
160 AND deleted = 0
161 ORDER BY id DESC
162 ';
163
164 $query = $this->database->query($sql);
165
166 while ($row = $this->database->fetchAssoc($query)) {
167 $this->logger->debug(sprintf('END - Found active certificate for: "%s"', $objId));
168
169 return $this->createCertificateTemplate($row);
170 }
171
172 $this->logger->debug(sprintf('END - Found NO active certificate for: "%s"', $objId));
173
174 return new ilCertificateTemplate(
175 $objId,
176 $this->objectDataCache->lookupType($objId),
177 '',
178 '',
179 '',
180 0,
181 '0',
182 0,
183 false,
184 '',
185 ''
186 );
187 }

References $objId, createCertificateTemplate(), ILIAS\Repository\database(), ILIAS\Repository\logger(), ILIAS\Repository\objectDataCache(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

◆ fetchFirstCreatedTemplate()

ilCertificateTemplateDatabaseRepository::fetchFirstCreatedTemplate ( int  $objId)
Exceptions
ilCouldNotFindCertificateTemplate

Implements ilCertificateTemplateRepository.

Definition at line 363 of file class.ilCertificateTemplateDatabaseRepository.php.

364 {
365 $this->logger->debug(sprintf('START - Fetch first create certificate template for object: "%s"', $objId));
366
367 $this->database->setLimit(1, 0);
368
369 $sql = '
370 SELECT * FROM ' . self::TABLE_NAME . '
371 WHERE obj_id = ' . $this->database->quote($objId, ilDBConstants::T_INTEGER) . '
372 ORDER BY id ASC
373 ';
374
375 $query = $this->database->query($sql);
376
377 while ($row = $this->database->fetchAssoc($query)) {
378 $this->logger->debug(sprintf('END - Found first create certificate template for object: "%s"', $objId));
379
380 return $this->createCertificateTemplate($row);
381 }
382
383 throw new ilCouldNotFindCertificateTemplate('No matching template found. MAY missing DBUpdate. Please check if the correct version is installed.');
384 }

References $objId, ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

◆ fetchPreviousCertificate()

ilCertificateTemplateDatabaseRepository::fetchPreviousCertificate ( int  $objId)

Implements ilCertificateTemplateRepository.

Definition at line 214 of file class.ilCertificateTemplateDatabaseRepository.php.

215 {
216 $this->logger->debug(sprintf('START - Fetch previous active certificate template for object: "%s"', $objId));
217
218 $templates = $this->fetchCertificateTemplatesByObjId($objId);
219
220 $resultTemplate = new ilCertificateTemplate(
221 $objId,
222 $this->objectDataCache->lookupType($objId),
223 '',
224 '',
225 '',
226 0,
227 '0',
228 0,
229 true,
230 '',
231 ''
232 );
233
234 $version = 0;
235 foreach ($templates as $template) {
236 if ($template->getVersion() > $version) {
237 $version = $template->getVersion();
238 $resultTemplate = $template;
239 }
240 }
241
242 $this->logger->debug(sprintf('Latest version active certificate template for object: "%s"', $objId));
243
244 return $resultTemplate;
245 }
$version
Definition: plugin.php:24

References $objId, $version, fetchCertificateTemplatesByObjId(), ILIAS\Repository\logger(), and ILIAS\Repository\objectDataCache().

+ Here is the call graph for this function:

◆ fetchTemplate()

ilCertificateTemplateDatabaseRepository::fetchTemplate ( int  $templateId)
Exceptions
ilCouldNotFindCertificateTemplate

Implements ilCertificateTemplateRepository.

Definition at line 97 of file class.ilCertificateTemplateDatabaseRepository.php.

98 {
99 $this->logger->debug(sprintf('START - Fetch certificate template with id: "%s"', $templateId));
100
101 $sql = '
102 SELECT * FROM
103 ' . self::TABLE_NAME . '
104 WHERE id = ' . $this->database->quote($templateId, ilDBConstants::T_INTEGER) . '
105 ORDER BY version ASC
106 ';
107
108 $query = $this->database->query($sql);
109
110 while ($row = $this->database->fetchAssoc($query)) {
111 return $this->createCertificateTemplate($row);
112 }
113
114 throw new ilCouldNotFindCertificateTemplate(sprintf('No template with id "%s" found', $templateId));
115 }

References createCertificateTemplate(), ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

◆ isResourceUsed()

ilCertificateTemplateDatabaseRepository::isResourceUsed ( string  $relative_image_identification)

Definition at line 400 of file class.ilCertificateTemplateDatabaseRepository.php.

400 : bool
401 {
402 $this->logger->debug(
403 sprintf(
404 'START - Checking if any certificate template uses resource id "%s"',
405 $relative_image_identification
406 )
407 );
408
409 $result = $this->database->queryF(
410 'SELECT EXISTS(SELECT 1 FROM ' . self::TABLE_NAME . ' WHERE
411 (background_image_ident = %s OR tile_image_ident = %s)
412 AND currently_active = 1) AS does_exist',
414 [$relative_image_identification, $relative_image_identification]
415 );
416
417 $exists = (bool) ($this->database->fetchAssoc($result)['does_exist'] ?? false);
418
419 $this->logger->debug(
420 sprintf(
421 'END - Image identification "%s" is ' . $exists ? 'in use' : 'unused',
422 $relative_image_identification
423 )
424 );
425
426 return $exists;
427 }

References ILIAS\Repository\database(), ILIAS\Repository\logger(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ save()

ilCertificateTemplateDatabaseRepository::save ( ilCertificateTemplate  $certificateTemplate)

Implements ilCertificateTemplateRepository.

Definition at line 50 of file class.ilCertificateTemplateDatabaseRepository.php.

50 : void
51 {
52 $this->logger->debug('START - Save new certificate template');
53
54 $objId = $certificateTemplate->getObjId();
55
56 $id = $this->database->nextId(self::TABLE_NAME);
57
59
60 $columns = [
61 'id' => ['integer', $id],
62 'obj_id' => ['integer', $objId],
63 'obj_type' => ['text', $certificateTemplate->getObjType()],
64 'certificate_content' => ['clob', $certificateTemplate->getCertificateContent()],
65 'certificate_hash' => ['text', $certificateTemplate->getCertificateHash()],
66 'template_values' => ['clob', $certificateTemplate->getTemplateValues()],
67 'version' => ['integer', $certificateTemplate->getVersion()],
68 'ilias_version' => ['text', $certificateTemplate->getIliasVersion()],
69 'created_timestamp' => ['integer', $certificateTemplate->getCreatedTimestamp()],
70 'currently_active' => ['integer', (int) $certificateTemplate->isCurrentlyActive()],
71 'deleted' => ['integer', (int) $certificateTemplate->isDeleted()],
72 'background_image_ident' => [ilDBConstants::T_TEXT, $certificateTemplate->getBackgroundImageIdentification()],
73 'tile_image_ident' => [ilDBConstants::T_TEXT, $certificateTemplate->getTileImageIdentification()]
74 ];
75
76 $this->database->insert(self::TABLE_NAME, $columns);
77
78 $this->logger->debug(
79 sprintf(
80 'END - certificate template saved with columns: %s',
81 json_encode($columns, JSON_THROW_ON_ERROR)
82 )
83 );
84 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

References $id, $objId, ILIAS\Repository\database(), deactivatePreviousTemplates(), ilCertificateTemplate\getBackgroundImageIdentification(), ilCertificateTemplate\getCertificateContent(), ilCertificateTemplate\getCertificateHash(), ilCertificateTemplate\getCreatedTimestamp(), ilCertificateTemplate\getIliasVersion(), ilCertificateTemplate\getObjId(), ilCertificateTemplate\getObjType(), ilCertificateTemplate\getTemplateValues(), ilCertificateTemplate\getTileImageIdentification(), ilCertificateTemplate\getVersion(), ILIAS\Repository\int(), ilCertificateTemplate\isCurrentlyActive(), ilCertificateTemplate\isDeleted(), ILIAS\Repository\logger(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ updateActivity()

ilCertificateTemplateDatabaseRepository::updateActivity ( ilCertificateTemplate  $certificateTemplate,
bool  $currentlyActive 
)

Implements ilCertificateTemplateRepository.

Definition at line 86 of file class.ilCertificateTemplateDatabaseRepository.php.

86 : int
87 {
88 $sql = 'UPDATE ' . self::TABLE_NAME . ' SET currently_active = ' . $this->database->quote(
89 $currentlyActive,
91 ) .
92 ' WHERE id = ' . $this->database->quote($certificateTemplate->getId(), ilDBConstants::T_INTEGER);
93
94 return $this->database->manipulate($sql);
95 }

References ILIAS\Repository\database(), ilCertificateTemplate\getId(), and ilDBConstants\T_INTEGER.

+ Here is the call graph for this function:

Field Documentation

◆ $logger

readonly ilLogger ilCertificateTemplateDatabaseRepository::$logger
private

Definition at line 29 of file class.ilCertificateTemplateDatabaseRepository.php.

Referenced by __construct().

◆ $objectDataCache

readonly ilObjectDataCache ilCertificateTemplateDatabaseRepository::$objectDataCache
private

Definition at line 30 of file class.ilCertificateTemplateDatabaseRepository.php.

Referenced by __construct().

◆ TABLE_NAME

const ilCertificateTemplateDatabaseRepository::TABLE_NAME = 'il_cert_template'

The documentation for this class was generated from the following file: