ILIAS  release_8 Revision v8.24
class.ilDidacticTemplateIconHandler.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
5/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
6
14
21{
22 protected const WEBDIR_PREFIX = 'ilDidacticTemplateIcons';
23
25 protected ilLogger $logger;
27
28 public function __construct(ilDidacticTemplateSetting $setting)
29 {
30 global $DIC;
31
32 $this->settings = $setting;
33 $this->webDirectory = $DIC->filesystem()->web();
34 $this->logger = $DIC->logger()->otpl();
35 }
36
37 public function handleUpload(FileUpload $upload, string $tmpname): void
38 {
39 if ($upload->hasUploads() && !$upload->hasBeenProcessed()) {
40 try {
41 $upload->process();
42 } catch (IllegalStateException $e) {
43 $this->logger->warning('File upload already processed: ' . $e->getMessage());
44 }
45 }
46 $this->initWebDir();
47 $result = $upload->getResults()[$tmpname] ?? false;
48 if ($result instanceof UploadResult && $result->isOK() && $result->getSize()) {
49 $this->delete();
50 $upload->moveOneFileTo(
51 $result,
52 self::WEBDIR_PREFIX,
53 Location::WEB,
54 $this->settings->getId() . '.svg'
55 );
56
57 $this->settings->setIconIdentifier((string) $this->settings->getId());
58 $this->settings->update();
59 }
60 }
61
62 public function writeSvg(string $svg): void
63 {
64 try {
65 $this->webDirectory->write(
66 self::WEBDIR_PREFIX . '/' . $this->settings->getId() . '.svg',
67 trim($svg)
68 );
69 $this->settings->setIconIdentifier((string) $this->settings->getId());
70 $this->settings->update();
71 } catch (Exception $e) {
72 $this->logger->warning('Error writing svg image from xml: ' . $e->getMessage());
73 }
74 }
75
76 public function getAbsolutePath(): string
77 {
78 if ($this->webDirectory->has(self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg')) {
79 return ilFileUtils::getWebspaceDir() . '/' . self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg';
80 }
81
82 return '';
83 }
84
85 public function copy(ilDidacticTemplateSetting $original): void
86 {
87 if ($original->getIconHandler()->getAbsolutePath()) {
88 try {
89 $this->webDirectory->copy(
90 self::WEBDIR_PREFIX . '/' . $original->getIconIdentifier() . '.svg',
91 self::WEBDIR_PREFIX . '/' . $this->settings->getId() . '.svg'
92 );
93 } catch (Exception $e) {
94 $this->logger->warning('Copying icon failed with message: ' . $e->getMessage());
95 }
96 $this->settings->setIconIdentifier((string) $this->settings->getId());
97 } else {
98 $this->settings->setIconIdentifier("0");
99 }
100 $this->settings->update();
101 }
102
103 public function delete(): void
104 {
105 if ($this->webDirectory->has(self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg')) {
106 try {
107 $this->webDirectory->delete(self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg');
108 $this->settings->setIconIdentifier('');
109 $this->settings->update();
110 } catch (Exception $e) {
111 $this->logger->warning('Deleting icon dfailed with message: ' . $e->getMessage());
112 }
113 }
114 }
115
116 private function initWebDir(): void
117 {
118 if (!$this->webDirectory->has(self::WEBDIR_PREFIX)) {
119 try {
120 $this->webDirectory->createDir(self::WEBDIR_PREFIX);
121 } catch (IOException $e) {
122 $this->logger->error('Creating icon directory failed with message: ' . $e->getMessage());
123 } catch (IllegalStateException $e) {
124 $this->logger->warning('Creating icon directory failed with message: ' . $e->getMessage());
125 }
126 }
127 }
128
129 public function toXml(ilXmlWriter $writer): ilXmlWriter
130 {
131 if ($this->settings->getIconIdentifier()) {
132 try {
133 if ($this->webDirectory->has(self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg')) {
134 $writer->xmlElement('icon', [], $this->webDirectory->read(
135 self::WEBDIR_PREFIX . '/' . $this->settings->getIconIdentifier() . '.svg'
136 ));
137 }
138 } catch (Exception $e) {
139 $this->logger->warning('Export xml failed with message: ' . $e->getMessage());
140 }
141 }
142 return $writer;
143 }
144}
Icon handler for didactic template custom icons.
handleUpload(FileUpload $upload, string $tmpname)
__construct(ilDidacticTemplateSetting $setting)
copy(ilDidacticTemplateSetting $original)
static getWebspaceDir(string $mode="filesystem")
get webspace directory
Component logger with individual log levels by component id.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
global $DIC
Definition: feed.php:28
getResults()
Returns the results of the processing and moving operation of the uploaded files.
hasUploads()
Return (bool)true if one ore more file-uploads are in the current request, (bool)false if not.
moveOneFileTo(UploadResult $uploadResult, string $destination, int $location=Location::STORAGE, string $file_name='', bool $override_existing=false)
Moves a single File (the attributes, metadata and upload-status of which are contained in UploadResul...
process()
Invokes all preprocessors for each uploaded file in the sequence they got registered.
hasBeenProcessed()
Return (bool)true if the current upload has already been processed.
Interface Location.
Definition: Location.php:30
Interface Filesystem.
Definition: Filesystem.php:40
Class FlySystemFileAccessTest \Provider\FlySystem @runTestsInSeparateProcesses @preserveGlobalState d...