Bug #91285
openPageRouter takes always first possible MPvar
0%
Description
If a multi-domain installation has the same page mounted to different domains, only one page will be able to display the mounted page tree.
I have the following setup (Page UID - type - slug):
Root [11] - Domain.at - "/" [12] - MP - "/glass" [31] - Domain.hr - "/" [32] - MP - "/glass" [16] - Domain.cz - "/" [17] - MP - "/glass" [36] - Domain.it - "/" [37] - MP - "/glass" [21] - Domain.sk - "/" [22] - MP - "/glass" [6] - Domain.ch - "/" [7] - Page - "/glass" [814] - MP - "/glass/properties" [26] - Domain.ua - "/" [27] - MP - "/glass" [1] - Domain.ch - "/" [2] - Page - "/glass" [242] - Page - "/glass/properties"
- Domain.com has the page tree without MountPoints
- Domain.ch has the page mounted with "show page of mounted page"
- The rest of the domains has the Mount Point one level up and mounts the whole page tree under "glass"
I always call the same URL. on each Domain "/en/glass/properties"
https://www.domain.at/en/glass/properties - OK
https://www.domain.hr/en/glass/properties - “ID was outside the domain”
https://www.domain.cz/en/glass/properties - “ID was outside the domain”
https://www.domain.it/en/glass/properties - “ID was outside the domain”
https://www.domain.sk/en/glass/properties - “ID was outside the domain”
https://www.domain.ch/en/glass/properties - “ID was outside the domain”
https://www.domain.ua/en/glass/properties - “ID was outside the domain”
https://www.domain.com/en/glass/properties - OK
The result of getPagesFromDatabaseForCandidates looks always the but with the correct root page UID.
Result for AT:
[0] => Array ( [uid] => 2 [pid] => 1 ... [doktype] => 1 ... [mount_pid] => 0 [mount_pid_ol] => 0 ... [slug] => /glass ... [MPvar] => 2-12 ) [1] => Array ( [uid] => 242 [l10n_parent] => 0 [pid] => 2 [slug] => /glass/properties [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 [MPvar] => 2-12 ) [2] => Array ( [uid] => 11 [l10n_parent] => 0 [pid] => 0 [slug] => / [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 )
Exact same result for HR, CZ, IT, SK. Only the UID of the root page is different:
[0] => Array ( [uid] => 2 [pid] => 1 ... [doktype] => 1 ... [mount_pid] => 0 [mount_pid_ol] => 0 ... [slug] => /glass ... [MPvar] => 2-12 ) [1] => Array ( [uid] => 242 [l10n_parent] => 0 [pid] => 2 [slug] => /glass/properties [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 [MPvar] => 2-12 ) [2] => Array ( [uid] => 31 [l10n_parent] => 0 [pid] => 0 [slug] => / [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 )
Since the first mount point fills up the MPvar and the MountPage record in the array during the first run, all the other pages are skipped in line 441++
if ($mountedPage && PageRepository::DOKTYPE_MOUNTPOINT === (int)$row['doktype'] && $row['mount_pid_ol']) {
// If the mounted page was already added from above, this should not be added again (to include
// the mount point parameter).
if (in_array((int)$mountedPage['uid'], $excludeUids, true)) {
continue;
}
And I think this is causing the "ID was outside the domain" error.
As addition the result of the Domain.com main page:
[0] => Array ( [uid] => 242 [l10n_parent] => 0 [pid] => 2 [slug] => /glass/properties [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 ) [1] => Array ( [uid] => 2 [l10n_parent] => 0 [pid] => 1 [slug] => /glass [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 ) [2] => Array ( [uid] => 1 [l10n_parent] => 0 [pid] => 0 [slug] => / [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 )
And the result of the site with the mounted page:
[0] => Array ( [uid] => 7 [l10n_parent] => 0 [pid] => 6 [slug] => /glass [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 ) [1] => Array ( [uid] => 2 [pid] => 1 ... [title] => Glass [doktype] => 1 ... [mount_pid] => 0 [mount_pid_ol] => 0 ... [slug] => /glass ... [MPvar] => 2-12 ) [2] => Array ( [uid] => 242 [l10n_parent] => 0 [pid] => 2 [slug] => /glass/properties [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 [MPvar] => 2-12 ) [3] => Array ( [uid] => 6 [l10n_parent] => 0 [pid] => 42 [slug] => / [mount_pid] => 0 [mount_pid_ol] => 0 [t3ver_state] => 0 [doktype] => 1 )