Do not write an updated style file in StyleEditor::setVariables()
authorTim Düsterhus <duesterhus@woltlab.com>
Fri, 31 Mar 2023 10:05:08 +0000 (12:05 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Fri, 31 Mar 2023 10:05:08 +0000 (12:05 +0200)
If the style variables have already been loaded, which happens during style
import where the existing and to-be-updated style is currently taken from the
cache, the style will be rewritten with the old variables, effectively
resulting in a noop, making it a useless operation.

However if the existing variables are broken, e.g. because they contain a
syntax error, updating a broken style with a fixed one during package
installation will be impossible (without manually clearing the cache), because
the package installation aborts during compilation of the old SCSS, despite the
new SCSS already been written.

Fixes #5333

wcfsetup/install/files/lib/data/style/StyleEditor.class.php

index 980416fa5bd28c9528cb09271c6c74e0f3506548..c1b3011a0bdf3b57669de05ee4a3299c168110ea 100644 (file)
@@ -1231,7 +1231,7 @@ class StyleEditor extends DatabaseObjectEditor implements IEditableCachedObject
             }
         }
 
-        $this->writeStyleFile();
+        StyleHandler::getInstance()->resetStylesheet($this->getDecoratedObject());
     }
 
     /**