Fix database and file system getting out of sync for pageLogo in style
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 14 Dec 2021 09:10:20 +0000 (10:10 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 14 Dec 2021 09:10:20 +0000 (10:10 +0100)
This can happen if the style editor is opened in two tabs and no logo is
configured yet. In Tab (A) an logo is uploaded and then Tab (B) is submitted.
Tab (B) will not provided the `pageLogo` key in the `uploads` parameter,
because nothing in this field was changed. Thus the processing for the logo
does not run. However all style variables are cleared upon an edit, thus
clearing the database reference.

Closes #4606

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

index a801ec94392b580499e762ff80344a480a6f4312..7e55cbdda282b416f7dac7805546b8a238a51029 100644 (file)
@@ -188,6 +188,10 @@ class StyleAction extends AbstractDatabaseObjectAction implements IToggleAction
                 } else {
                     $this->parameters['variables'][$type] = '';
                 }
+            } else {
+                // If the key was not provided then no change is desired. We must re-use
+                // the current value, because all variables will be cleared.
+                $this->parameters['variables'][$type] = $style->getVariable($type);
             }
         }