19 declare(strict_types=1);
52 'title_ASC' =>
'cert_sortable_by_title_asc',
53 'title_DESC' =>
'cert_sortable_by_title_desc',
54 'date_ASC' =>
'cert_sortable_by_issue_date_asc',
55 'date_DESC' =>
'cert_sortable_by_issue_date_desc',
79 $this->
template = $template ?? $DIC->ui()->mainTemplate();
80 $this->
ctrl = $ctrl ?? $DIC->ctrl();
81 $this->
user = $user ?? $DIC->user();
82 $this->
language = $language ?? $DIC->language();
83 $this->request = $request ?? $DIC->http()->request();
84 $this->certificateLogger = $certificateLogger ?? $DIC->logger()->cert();
85 $this->uiFactory = $uiFactory ?? $DIC->ui()->factory();
86 $this->uiRenderer = $uiRenderer ?? $DIC->ui()->renderer();
87 $this->
access = $access ?? $DIC->access();
88 $this->
filesystem = $filesystem ?? $DIC->filesystem()->web();
90 $this->
help = $help ?? $DIC->help();
91 $this->db = $db ?? $DIC->database();
92 $this->irss = $irss ?? $DIC->resourceStorage();
94 $this->
language->loadLanguageModule(
'cert');
99 return 'listCertificates';
104 $cmd = $this->
ctrl->getCmd();
106 if (!$this->certificateSettings->get(
'active',
'0')) {
107 $this->
ctrl->returnToParent($this);
110 $this->
template->setTitle($this->
language->txt(
'obj_cert'));
111 if (!method_exists($this, $cmd)) {
125 $this->
help->setScreenIdComponent(
'cert');
127 if (!$this->certificateSettings->get(
'active',
'0')) {
128 $this->
ctrl->redirect($this);
133 $this->certificateLogger,
134 $this->
language->txt(
'certificate_no_object_title')
139 $this->
user->getId(),
141 'order_field' => explode(
'_', $sorting)[0],
142 'order_direction' => explode(
'_', $sorting)[1],
143 'language' => $this->
user->getLanguage()
150 if (
$data[
'items'] !== []) {
151 $sortationOptions = [];
154 foreach ($this->sortationOptions as $fieldAndDirection => $lngVariable) {
155 $sortationOptions[$fieldAndDirection] = $this->
language->txt($lngVariable);
158 $sortViewControl = $this->uiFactory
160 ->sortation($sortationOptions, $sorting)
161 ->withTargetURL($this->
ctrl->getLinkTarget($this,
'applySortation'),
'sort_by');
163 $uiComponents[] = $sortViewControl;
165 foreach (
$data[
'items'] as $certificateData) {
166 $tile_image_identification = $certificateData[
'tile_image_ident'] ??
'';
168 if ($tile_image_identification ===
'' || $tile_image_identification ===
'-') {
169 $tile_image_identification = $certificateData[
'tile_image_path'] ??
'';
170 if ($tile_image_identification !==
'' && $this->
filesystem->has($tile_image_identification)) {
176 $tile_image_rid = $this->irss->manage()->find($tile_image_identification);
178 $imagePath = $this->irss->consume()->src($tile_image_rid)->getSrc(
true);
182 if ($imagePath ===
'') {
186 $cardImage = $this->uiFactory->image()->standard(
188 $certificateData[
'title']
193 if ($certificateData[
'description'] !==
'') {
194 $sections[] = $this->uiFactory->listing()->descriptive([
195 $this->
language->txt(
'cert_description_label') => $certificateData[
'description']
201 $sections[] = $this->uiFactory->listing()->descriptive([
208 $objectTypeIcon = $this->uiFactory
211 ->standard($certificateData[
'obj_type'], $certificateData[
'obj_type'])
214 $objectTitle = $certificateData[
'title'];
216 foreach ($refIds as
$refId) {
217 if ($this->
access->checkAccess(
'read',
'', $refId)) {
218 $objectTitle = $this->uiRenderer->render(
219 $this->uiFactory->link()->standard($objectTitle, ilLink::_getLink($refId))
226 $sections[] = $this->uiFactory->listing()->descriptive([$this->
language->txt(
'cert_object_label') => implode(
229 $this->uiRenderer->render($objectTypeIcon),
235 $this->
ctrl->setParameter($this,
'certificate_id', $certificateData[
'id']);
236 $downloadHref = $this->
ctrl->getLinkTarget($this,
'download');
237 $this->
ctrl->clearParameters($this);
238 $sections[] = $this->uiFactory->button()->standard(
'Download', $downloadHref);
240 $card = $this->uiFactory
242 ->standard($certificateData[
'title'], $cardImage)
243 ->withSections($sections)
249 $deck = $this->uiFactory->deck($cards)->withSmallCardsSize();
251 $uiComponents[] = $this->uiFactory->divider()->horizontal();
253 $uiComponents[] = $deck;
255 $this->
template->setOnScreenMessage(
'info', $this->
language->txt(
'cert_currently_no_certs'));
258 $this->
template->setContent($this->uiRenderer->render($uiComponents));
264 if (!array_key_exists($sorting, $this->sortationOptions)) {
278 if (!array_key_exists($sorting, $this->sortationOptions)) {
291 $pdfGenerator =
new ilPdfGenerator($this->userCertificateRepository);
293 $userCertificateId = (
int) $this->request->getQueryParams()[
'certificate_id'];
296 $userCertificate = $this->userCertificateRepository->fetchCertificate($userCertificateId);
297 if ($userCertificate->getUserId() !== $this->
user->getId()) {
298 throw new ilException(sprintf(
'User "%s" tried to access certificate: "%s"', $this->
user->getLogin(), $userCertificateId));
301 $this->certificateLogger->warning($exception->getMessage());
302 $this->
template->setOnScreenMessage(
'failure', $this->
language->txt(
'cert_error_no_access'));
311 $this->
language->txt(
'error_creating_certificate_pdf')
314 $pdfAction->
downloadPdf($userCertificate->getUserId(), $userCertificate->getObjId());
static getWebspaceDir(string $mode="filesystem")
get webspace directory
static get(string $a_var)
static array static setUseRelativeDates(bool $a_status)
set use relative dates
ilUserCertificateGUI: ilAchievementsGUI
readonly ilAccessHandler $access
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getAllReferences(int $id)
get all reference ids for object ID
readonly Factory $uiFactory
readonly ilLogger $certificateLogger
final const SORTATION_SESSION_KEY
readonly Filesystem $filesystem
static useRelativeDates()
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
readonly ilCtrlInterface $ctrl
readonly ilDBInterface $db
array string $defaultSorting
__construct(?ilGlobalTemplateInterface $template=null, ?ilCtrlInterface $ctrl=null, ?ilLanguage $language=null, ?ilObjUser $user=null, ?ilUserCertificateRepository $userCertificateRepository=null, ?ServerRequestInterface $request=null, ?ilLogger $certificateLogger=null, private readonly ilSetting $certificateSettings=new ilSetting('certificate'), ?Factory $uiFactory=null, ?Renderer $uiRenderer=null, ?ilAccessHandler $access=null, ?Filesystem $filesystem=null, ?ilHelpGUI $help=null, ?ilDBInterface $db=null, private ?IRSS $irss=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This is how the factory for UI elements looks.
Class ResourceIdentification.
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
readonly ServerRequestInterface $request
readonly ilLanguage $language
readonly ilGlobalTemplateInterface $template
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static signFile(string $path_to_file)
language()
description: > Example for rendring a language glyph.
readonly Renderer $uiRenderer
static set(string $a_var, $a_val)
Set a value.
readonly ilUserCertificateRepository $userCertificateRepository
downloadPdf(int $userId, int $objectId)