ILIAS  trunk Revision v12.0_alpha-1221-g4e438232683
ILIAS\Certificate\API\UserCertificateAPI Class Reference
+ Inheritance diagram for ILIAS\Certificate\API\UserCertificateAPI:
+ Collaboration diagram for ILIAS\Certificate\API\UserCertificateAPI:

Public Member Functions

 __construct (?UserDataRepository $user_data_repository=null, ?ilCertificateTemplateRepository $template_repository=null, ?ilCertificateQueueRepository $queue_repository=null, private readonly ilCertificateTypeClassMap $type_class_map=new ilCertificateTypeClassMap(), ?ilLogger $logger=null, ?ilObjectDataCache $object_data_cache=null,)
 
 getUserCertificateData (UserDataFilter $filter, array $ilCtrlStack=[])
 
 getUserCertificateDataMaxCount (UserDataFilter $filter)
 
 certificateCriteriaMetForGivenTemplate (int $usr_id, ilCertificateTemplate $template)
 
 certificateCriteriaMet (int $usr_id, int $obj_id)
 
 isActiveCertificateTemplateAvailableFor (int $obj_id)
 
 getUserCertificateData (UserDataFilter $filter, array $ilCtrlStack=[])
 
 getUserCertificateDataMaxCount (UserDataFilter $filter)
 
 certificateCriteriaMetForGivenTemplate (int $usr_id, ilCertificateTemplate $template)
 
 certificateCriteriaMet (int $usr_id, int $obj_id)
 
 isActiveCertificateTemplateAvailableFor (int $obj_id)
 

Private Member Functions

 processEntry (int $userId, ilCertificateTemplate $template)
 

Private Attributes

readonly UserDataRepository $user_data_repository
 
readonly ilCertificateTemplateRepository $template_repository
 
readonly ilCertificateQueueRepository $queue_repository
 
readonly ilLogger $logger
 
readonly ilObjectDataCache $object_data_cache
 

Detailed Description

Definition at line 42 of file UserCertificateAPI.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Certificate\API\UserCertificateAPI::__construct ( ?UserDataRepository  $user_data_repository = null,
?ilCertificateTemplateRepository  $template_repository = null,
?ilCertificateQueueRepository  $queue_repository = null,
private readonly ilCertificateTypeClassMap  $type_class_map = new ilCertificateTypeClassMap(),
?ilLogger  $logger = null,
?ilObjectDataCache  $object_data_cache = null 
)

Definition at line 50 of file UserCertificateAPI.php.

57 {
58 global $DIC;
59
60 $this->logger = $logger ?? $DIC->logger()->cert();
61 $this->object_data_cache = $object_data_cache ?? $DIC['ilObjDataCache'];
62 $this->user_data_repository = $user_data_repository ?? new UserDataRepository(
63 $DIC->database(),
64 $DIC->ctrl()
65 );
66 $this->template_repository = $template_repository ?? new ilCertificateTemplateDatabaseRepository(
67 $DIC->database(),
68 $this->logger
69 );
70 $this->queue_repository = $queue_repository ?? new ilCertificateQueueRepository(
71 $DIC->database(),
72 $this->logger
73 );
74 }
readonly ilObjectDataCache $object_data_cache
readonly ilCertificateTemplateRepository $template_repository
readonly UserDataRepository $user_data_repository
readonly ilCertificateQueueRepository $queue_repository
global $DIC
Definition: shib_login.php:26

References $DIC, ILIAS\Certificate\API\UserCertificateAPI\$object_data_cache, ILIAS\Certificate\API\UserCertificateAPI\$queue_repository, ILIAS\Certificate\API\UserCertificateAPI\$template_repository, ILIAS\Certificate\API\UserCertificateAPI\$user_data_repository, and ILIAS\Repository\logger().

+ Here is the call graph for this function:

Member Function Documentation

◆ certificateCriteriaMet()

ILIAS\Certificate\API\UserCertificateAPI::certificateCriteriaMet ( int  $usr_id,
int  $obj_id 
)
Exceptions
ilCertificateConsumerNotSupported
ilCertificateIssuingObjectNotFound
ilCertificateOwnerNotFound
ilCouldNotFindCertificateTemplate
ilInvalidCertificateException

Implements ILIAS\Certificate\API\UserCertificateApiInterface.

Definition at line 107 of file UserCertificateAPI.php.

107 : void
108 {
109 $type = $this->object_data_cache->lookupType($obj_id);
110 if (!$this->type_class_map->typeExistsInMap($type)) {
112 \sprintf(
113 "Oject type '%s' is not supported by the certificate component!",
114 $type
115 )
116 );
117 }
118
119 $template = $this->template_repository->fetchCurrentlyActiveCertificate($obj_id);
120 if ($template->getObjType() !== $type) {
121 $this->logger->error(
122 'Object type mismatch between template and determined type for object with id {obj_id}: '
123 . 'Expected {type} but got {template_type}!',
124 [
125 'obj_id' => $obj_id,
126 'type' => $type,
127 'template_type' => $template->getObjType()
128 ]
129 );
130 }
131
132 $this->certificateCriteriaMetForGivenTemplate($usr_id, $template);
133 }
certificateCriteriaMetForGivenTemplate(int $usr_id, ilCertificateTemplate $template)

References ILIAS\Certificate\API\UserCertificateAPI\certificateCriteriaMetForGivenTemplate(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

◆ certificateCriteriaMetForGivenTemplate()

ILIAS\Certificate\API\UserCertificateAPI::certificateCriteriaMetForGivenTemplate ( int  $usr_id,
ilCertificateTemplate  $template 
)
Exceptions
ilCertificateIssuingObjectNotFound
ilCertificateOwnerNotFound
ilInvalidCertificateException

Implements ILIAS\Certificate\API\UserCertificateApiInterface.

Definition at line 86 of file UserCertificateAPI.php.

86 : void
87 {
88 if (!$template->isCurrentlyActive()) {
89 $this->logger->debug(
90 \sprintf(
91 'Did not trigger certificate achievement for inactive template: usr_id: %s/obj_id: %s/type: %s/template_id: %s',
92 $usr_id,
93 $template->getObjId(),
94 $template->getObjType(),
95 $template->getId()
96 )
97 );
98 return;
99 }
100
101 $this->processEntry(
102 $usr_id,
103 $template
104 );
105 }
processEntry(int $userId, ilCertificateTemplate $template)

References ilCertificateTemplate\getId(), ilCertificateTemplate\getObjId(), ilCertificateTemplate\getObjType(), ilCertificateTemplate\isCurrentlyActive(), ILIAS\Repository\logger(), and ILIAS\Certificate\API\UserCertificateAPI\processEntry().

Referenced by ILIAS\Certificate\API\UserCertificateAPI\certificateCriteriaMet().

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

◆ getUserCertificateData()

ILIAS\Certificate\API\UserCertificateAPI::getUserCertificateData ( UserDataFilter  $filter,
array  $ilCtrlStack = [] 
)
Parameters
list<class-string>$ilCtrlStack An array of ilCtrl-enabled GUI class names that are used to create the link, if this is an empty array (default) no link will be generated
Returns
array<int, UserCertificateDto>

Implements ILIAS\Certificate\API\UserCertificateApiInterface.

Definition at line 76 of file UserCertificateAPI.php.

76 : array
77 {
78 return $this->user_data_repository->getUserData($filter, $ilCtrlStack);
79 }

◆ getUserCertificateDataMaxCount()

ILIAS\Certificate\API\UserCertificateAPI::getUserCertificateDataMaxCount ( UserDataFilter  $filter)

Implements ILIAS\Certificate\API\UserCertificateApiInterface.

Definition at line 81 of file UserCertificateAPI.php.

81 : int
82 {
83 return $this->user_data_repository->getUserCertificateDataMaxCount($filter);
84 }

◆ isActiveCertificateTemplateAvailableFor()

ILIAS\Certificate\API\UserCertificateAPI::isActiveCertificateTemplateAvailableFor ( int  $obj_id)

Implements ILIAS\Certificate\API\UserCertificateApiInterface.

Definition at line 135 of file UserCertificateAPI.php.

135 : bool
136 {
137 try {
138 return $this->template_repository->fetchCurrentlyActiveCertificate($obj_id)->isCurrentlyActive();
140 return false;
141 }
142 }

◆ processEntry()

ILIAS\Certificate\API\UserCertificateAPI::processEntry ( int  $userId,
ilCertificateTemplate  $template 
)
private
Exceptions
ilCertificateIssuingObjectNotFound
ilCertificateOwnerNotFound
ilCouldNotFindCertificateTemplate
ilInvalidCertificateException

Definition at line 150 of file UserCertificateAPI.php.

153 : void {
154 $this->logger->debug(
155 \sprintf(
156 'Trigger persisting certificate achievement for: usr_id: %s/obj_id: %s/type: %s/template_id: %s',
157 $userId,
158 $template->getObjId(),
159 $template->getObjType(),
160 $template->getId()
161 )
162 );
163
164 $entry = new ilCertificateQueueEntry(
165 $template->getObjId(),
166 $userId,
167 $this->type_class_map->getPlaceHolderClassNameByType($template->getObjType()),
169 $template->getId(),
170 time()
171 );
172
173 $mode = (new ilSetting('certificate'))->get(
174 'persistent_certificate_mode',
175 'persistent_certificate_mode_cron'
176 );
177 if ($mode === 'persistent_certificate_mode_instant') {
178 $cronjob = new ilCertificateCron();
179 $cronjob->init();
180 $cronjob->processEntry(0, $entry, []);
181 return;
182 }
183
184 $this->queue_repository->addToQueue($entry);
185 }
ILIAS Setting Class.

Referenced by ILIAS\Certificate\API\UserCertificateAPI\certificateCriteriaMetForGivenTemplate().

+ Here is the caller graph for this function:

Field Documentation

◆ $logger

readonly ilLogger ILIAS\Certificate\API\UserCertificateAPI::$logger
private

Definition at line 47 of file UserCertificateAPI.php.

◆ $object_data_cache

readonly ilObjectDataCache ILIAS\Certificate\API\UserCertificateAPI::$object_data_cache
private

◆ $queue_repository

readonly ilCertificateQueueRepository ILIAS\Certificate\API\UserCertificateAPI::$queue_repository
private

◆ $template_repository

readonly ilCertificateTemplateRepository ILIAS\Certificate\API\UserCertificateAPI::$template_repository
private

◆ $user_data_repository

readonly UserDataRepository ILIAS\Certificate\API\UserCertificateAPI::$user_data_repository
private

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