ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilPdfGenerator.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
25 {
27  private ilLogger $logger;
30 
31  public function __construct(
32  ilUserCertificateRepository $userCertificateRepository,
33  ilLogger $logger,
34  ?ilCertificateRpcClientFactoryHelper $rpcHelper = null,
35  ?ilCertificatePdfFileNameFactory $pdfFileNameFactory = null,
36  ?ilLanguage $lng = null
37  ) {
38  global $DIC;
39 
40  $this->certificateRepository = $userCertificateRepository;
41  $this->logger = $logger;
42 
43  if (null === $rpcHelper) {
44  $rpcHelper = new ilCertificateRpcClientFactoryHelper();
45  }
46  $this->rpcHelper = $rpcHelper;
47 
48  if (null === $lng) {
49  $lng = $DIC->language();
50  }
51 
52  if (null === $pdfFileNameFactory) {
53  $pdfFileNameFactory = new ilCertificatePdfFileNameFactory($lng);
54  }
55  $this->pdfFilenameFactory = $pdfFileNameFactory;
56  }
57 
63  public function generate(int $userCertificateId): string
64  {
65  $certificate = $this->certificateRepository->fetchCertificate($userCertificateId);
66 
67  return $this->createPDFScalar($certificate);
68  }
69 
76  public function generateCurrentActiveCertificate(int $userId, int $objId): string
77  {
78  $certificate = $this->certificateRepository->fetchActiveCertificate($userId, $objId);
79 
80  return $this->createPDFScalar($certificate);
81  }
82 
91  public function generateFileName(int $userId, int $objId): string
92  {
93  $certificate = $this->certificateRepository->fetchActiveCertificateForPresentation($userId, $objId);
94 
95  $user = ilObjectFactory::getInstanceByObjId($userId);
96  if (!$user instanceof ilObjUser) {
97  throw new ilException(sprintf('The usr_id "%s" does NOT reference a user', $userId));
98  }
99 
100  return $this->pdfFilenameFactory->create($certificate);
101  }
102 
103  private function createPDFScalar(ilUserCertificate $certificate): string
104  {
105  $certificateContent = $certificate->getCertificateContent();
106 
107  $certificateContent = str_replace(
108  ['[BACKGROUND_IMAGE]', '[CLIENT_WEB_DIR]'],
109  ['[CLIENT_WEB_DIR]' . $certificate->getBackgroundImagePath(), 'file://' . CLIENT_WEB_DIR],
110  $certificateContent
111  );
112 
113  $pdf_base64 = $this->rpcHelper->ilFO2PDF('RPCTransformationHandler', $certificateContent);
114 
115  return $pdf_base64->scalar;
116  }
117 }
Class ilPdfGeneratorConstantsTest.
__construct(ilUserCertificateRepository $userCertificateRepository, ilLogger $logger, ?ilCertificateRpcClientFactoryHelper $rpcHelper=null, ?ilCertificatePdfFileNameFactory $pdfFileNameFactory=null, ?ilLanguage $lng=null)
$lng
$objId
Definition: xapitoken.php:57
ilCertificateRpcClientFactoryHelper $rpcHelper
global $DIC
Definition: feed.php:28
generateFileName(int $userId, int $objId)
generateCurrentActiveCertificate(int $userId, int $objId)
ilUserCertificateRepository $certificateRepository
const CLIENT_WEB_DIR
Definition: constants.php:47
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
ilCertificatePdfFileNameFactory $pdfFilenameFactory
generate(int $userCertificateId)
createPDFScalar(ilUserCertificate $certificate)