Skip to content

v2.1.64

@petr6 petr6 tagged this 03 Sep 14:06
addSubPageContainer() got $shop === null whenever the caller passes an empty
shop list (a form that keeps its own shop select instead of per-shop containers).
getPageByTypeAndParams() then skipped the shop filter entirely — filterOnlySelectedShop
only applies when a shop is given — so the form was filled from the first page with
that type+params across all shops, and validateUrl() checked URL uniqueness globally.

On a multi-shop install this loaded a foreign shop's page into the form (saving it
then hit a duplicate key on type+params+fk_shop) and rejected URLs that only collided
in another shop.

New optional $contextShop tells the container which shop the page belongs to; when no
per-shop container is built, validateUrl() falls back to the shop selected in the form,
so newly created pages are checked against their target shop too.

Also adds stripInactiveMutations(): fields of mutations the mutation translator
disabled are not submitted by the browser, so getValues() returns null for them and
a plain sync would wipe existing content of that mutation.
Assets 2
Loading