@@ -125,26 +125,33 @@ public function skinStyleContainerFromZip(
125
125
string $ name ,
126
126
ilSystemStyleMessageStack $ message_stack
127
127
): 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 ;
129
130
130
131
while (ilStyleDefinition::skinExists ($ skin_id , $ this ->config )) {
131
132
$ skin_id .= 'Copy ' ;
132
133
}
133
134
134
135
$ 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 " ;
136
138
rename ($ import_zip_path , $ zip_path );
137
139
138
140
$ this ->archives ->unzip (
139
141
Streams::ofResource (fopen ($ zip_path , 'rb ' )),
140
142
$ this ->archives ->unzipOptions ()
141
- ->withZipOutputPath ($ skin_path )
143
+ ->withZipOutputPath ($ temp_skin_path )
142
144
->withOverwrite (false )
143
145
->withDirectoryHandling (ZipDirectoryHandling::KEEP_STRUCTURE )
144
146
)->extract ();
145
-
146
147
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 ;
148
155
}
149
156
150
157
/**
0 commit comments