19 declare(strict_types=1);
34 $map = self::getRendererMapForPurpose($service, $purpose);
35 $renderer = self::getRendererInstance($map[
'selected']);
36 $renderer->prepareGenerationRequest($service, $purpose);
44 $iliasPDFTestPath =
'data/' .
CLIENT_ID .
'/pdf_service/';
45 if (!is_dir($iliasPDFTestPath) && !mkdir($iliasPDFTestPath) && !is_dir($iliasPDFTestPath)) {
46 throw new RuntimeException(sprintf(
'Directory "%s" was not created', $iliasPDFTestPath));
49 return $iliasPDFTestPath;
54 foreach (glob($path .
'*.css') as
$filename) {
55 $content = file_get_contents($filename);
56 $content = preg_replace(
'/@media[\s]* print/',
'@media nothing', $content);
57 file_put_contents($filename, $content);
63 foreach (glob($path .
'*.css') as
$filename) {
64 $content = file_get_contents($filename);
65 $content = preg_replace(
'/src:\surl\([\',\"](..\/)*(\S)/',
"src: url(./$2", $content);
66 file_put_contents($filename, $content);
76 $ilDB = $DIC->database();
80 $result =
$ilDB->query(
'SELECT service, purpose FROM pdfgen_purposes ORDER BY service, purpose');
82 while ($row =
$ilDB->fetchAssoc($result)) {
83 $purposes[$row[
'service']][] = $row[
'purpose'];
95 $ilDB = $DIC->database();
98 $result =
$ilDB->query(
'SELECT service, purpose, preferred, selected FROM pdfgen_map');
100 while ($row =
$ilDB->fetchAssoc($result)) {
101 $mappings[$row[
'service']][$row[
'purpose']][
'selected'] = $row[
'selected'];
102 $mappings[$row[
'service']][$row[
'purpose']][
'preferred'] = $row[
'preferred'];
114 $ilDB = $DIC->database();
117 $result =
$ilDB->query(
'SELECT renderer, service, purpose FROM pdfgen_renderer_avail');
119 while ($row =
$ilDB->fetchAssoc($result)) {
120 $renderers[$row[
'service']][$row[
'purpose']][] = $row[
'renderer'];
129 $ilDB = $DIC->database();
133 [
'selected' => [
'text', $renderer]],
135 'service' => [
'text', $service],
136 'purpose' => [
'text', $purpose]
144 $ilDB = $DIC->database();
146 $query =
'SELECT config FROM pdfgen_conf WHERE renderer = ' .
$ilDB->quote($renderer,
'text') .
147 ' AND service = ' .
$ilDB->quote($service,
'text') .
' AND purpose = ' .
$ilDB->quote($purpose,
'text');
150 if (
$ilDB->numRows($result) === 0) {
151 return self::getRendererDefaultConfig($service, $purpose, $renderer);
154 $row =
$ilDB->fetchAssoc($result);
155 return json_decode($row[
'config'],
true, 512, JSON_THROW_ON_ERROR);
163 $class_instance = self::getRendererInstance($renderer);
165 return $class_instance->getDefaultConfig($service, $purpose);
171 $ilDB = $DIC->database();
173 $query =
'DELETE FROM pdfgen_conf WHERE renderer = ' .
$ilDB->quote($renderer,
'text') .
174 ' AND service = ' .
$ilDB->quote($service,
'text') .
' AND purpose = ' .
$ilDB->quote($purpose,
'text');
187 $ilDB = $DIC->database();
189 $result =
$ilDB->query(
'SELECT path FROM pdfgen_renderer WHERE renderer = ' .
$ilDB->quote($renderer,
'text'));
191 if (
$ilDB->numRows($result) === 0) {
192 throw new Exception(
'No such renderer - given: ' . $renderer);
194 $row =
$ilDB->fetchAssoc($result);
196 $classname =
'il' . $renderer .
'Renderer';
197 if (self::isRendererPlugin($row[
'path'])) {
198 $classname =
'il' . $renderer .
'RendererPlugin';
201 return new $classname();
206 $needle =
'Plugin.php';
207 $length = strlen($needle);
208 return (substr($path, -$length) === $needle);
214 $ilDB = $DIC->database();
216 $query =
'DELETE FROM pdfgen_conf WHERE renderer = ' .
$ilDB->quote($renderer,
'text') .
217 ' AND service = ' .
$ilDB->quote($service,
'text') .
' AND purpose = ' .
$ilDB->quote($purpose,
'text');
224 'conf_id' => [
'integer',
$ilDB->nextId(
'pdfgen_conf')],
225 'renderer' => [
'text', $renderer],
227 'purpose' => [
'text', $purpose],
228 'config' => [
'clob', json_encode($config, JSON_THROW_ON_ERROR)]
241 $ilDB = $DIC->database();
243 $result =
$ilDB->query(
244 'SELECT preferred, selected FROM pdfgen_map WHERE service = ' .
$ilDB->quote($service,
'text') .
' ' .
245 'AND purpose=' .
$ilDB->quote($purpose,
'text')
248 if (
$ilDB->numRows($result) === 0) {
249 return [
'selected' =>
'TCPDF',
'preferred' =>
'TCPDF'];
252 return $ilDB->fetchAssoc($result);
static saveRendererPurposeConfig(string $service, string $purpose, string $renderer, array $config)
static getRendererConfig(string $service, string $purpose, string $renderer)
static getRendererInstance(string $renderer)
static removeWrongPathFromStyleFiles(string $path)
static getRendererDefaultConfig(string $service, string $purpose, string $renderer)
static removeRendererConfig(string $service, string $purpose, string $renderer)
static getRendererMapForPurpose(string $service, string $purpose)
static isRendererPlugin(string $path)
static removePrintMediaDefinitionsFromStyleFile(string $path)
static updateRendererSelection(string $service, string $purpose, string $renderer)
static prepareGenerationRequest(string $service, string $purpose)
Prepare the content processing for a PDF generation request This function should be called as in a re...