Skip to content

Commit 63f8811

Browse files
committed
Fix of #42300
1 parent 3aa5452 commit 63f8811

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

Services/Style/System/classes/Style/class.ilSkinFactory.php

+12-5
Original file line numberDiff line numberDiff line change
@@ -125,26 +125,33 @@ public function skinStyleContainerFromZip(
125125
string $name,
126126
ilSystemStyleMessageStack $message_stack
127127
): ilSkinStyleContainer {
128-
$skin_id = preg_replace('/[^A-Za-z0-9\-_]/', '', rtrim($name, '.zip'));
128+
$original_skin_id = preg_replace('/[^A-Za-z0-9\-_]/', '', rtrim($name, '.zip'));
129+
$skin_id = $original_skin_id;
129130

130131
while (ilStyleDefinition::skinExists($skin_id, $this->config)) {
131132
$skin_id .= 'Copy';
132133
}
133134

134135
$skin_path = $this->config->getCustomizingSkinPath() . $skin_id;
135-
$zip_path = $skin_path . ".zip";
136+
$temp_skin_path = $skin_path."temp";
137+
$zip_path = $temp_skin_path . ".zip";
136138
rename($import_zip_path, $zip_path);
137139

138140
$this->archives->unzip(
139141
Streams::ofResource(fopen($zip_path, 'rb')),
140142
$this->archives->unzipOptions()
141-
->withZipOutputPath($skin_path)
143+
->withZipOutputPath($temp_skin_path)
142144
->withOverwrite(false)
143145
->withDirectoryHandling(ZipDirectoryHandling::KEEP_STRUCTURE)
144146
)->extract();
145-
146147
unlink($zip_path);
147-
return $this->skinStyleContainerFromId($skin_id, $message_stack);
148+
rename($temp_skin_path."/".$original_skin_id, $skin_path);
149+
rmdir($temp_skin_path);
150+
$container = $this->skinStyleContainerFromId($skin_id, $message_stack);
151+
$container->getSkin()->setId($skin_id);
152+
$container->setSkin($container->getSkin());
153+
$container->updateSkin();
154+
return $container;
148155
}
149156

150157
/**

0 commit comments

Comments
 (0)