186 $settings =
new ilSetting(
'certificate');
189 $objectId = $this->parameters[
'obj_id'] ?? 0;
190 $userId = $this->parameters[
'usr_id'] ?? 0;
192 $type = $this->objectDataCache->lookupType($objectId);
194 $this->logger->info(sprintf(
195 "Certificate evaluation triggered, received 'completed' learning progress for: usr_id: %s/obj_id: %s/type: %s",
201 if ($this->certificateClassMap->typeExistsInMap(
$type)) {
203 $template = $this->templateRepository->fetchCurrentlyActiveCertificate($objectId);
205 if (
true === $template->isCurrentlyActive()) {
206 $this->logger->info(sprintf(
207 "Trigger persisting certificate achievement for: usr_id: %s/obj_id: %s/type: %s/template_id: %s",
215 $this->logger->info(sprintf(
216 "Did not trigger certificate achievement for inactive template: usr_id: %s/obj_id: %s/type: %s/template_id: %s",
224 $this->logger->info(sprintf(
225 "Did not find an active certificate template for case: usr_id: %s/obj_id: %s/type: %s",
232 $this->logger->info(sprintf(
233 "Object type is not of interest, skipping certificate evaluation for this object" 237 if (
$type ===
'crs') {
239 'Skipping handling for course, because courses cannot be certificate trigger ' .
240 '(with globally disabled learning progress) for other certificate enabled objects' 246 'Triggering certificate evaluation of possible depending course objects ...' 251 $progressEvaluation = new \ilCertificateCourseLearningProgressEvaluation(
$templateRepository);
253 $templatesOfCompletedCourses = $progressEvaluation->evaluate($refId, $userId);
254 if (0 === count($templatesOfCompletedCourses)) {
255 $this->logger->info(sprintf(
256 "No dependent course certificate template configuration found for child object: usr_id: %s/obj_id: %s/ref_id: %s/type: %s",
265 foreach ($templatesOfCompletedCourses as $courseTemplate) {
268 $courseObjectId = $courseTemplate->getObjId();
270 if (
true === $courseTemplate->isCurrentlyActive()) {
271 $type = $this->objectDataCache->lookupType($courseObjectId);
273 $this->logger->info(sprintf(
274 "Trigger persisting certificate achievement for: usr_id: %s/obj_id: %s/type: %s/template_id: %s",
278 $courseTemplate->getId()
280 $this->
processEntry(
$type, $courseObjectId, $userId, $courseTemplate, $settings);
282 $this->logger->info(sprintf(
283 "Did not trigger certificate achievement for inactive template: usr_id: %s/obj_id: %s/type: %s/template_id: %s",
287 $courseTemplate->getId()
291 $this->logger->warning($exception->getMessage());
298 'Finished certificate evaluation' const LP_STATUS_COMPLETED_NUM
static _getAllReferences($a_id)
get all reference ids of object
processEntry($type, $objectId, int $userId, ilCertificateTemplate $template, ilSetting $settings)
const LP_STATUS_NOT_ATTEMPTED_NUM