|
protected function initializeDbMountpointsInWorkspace()
|
|
{
|
|
$dbMountpoints = trim($this->workspaceRec['db_mountpoints'] ?? '');
|
|
if ($this->workspace > 0 && $dbMountpoints != '') {
|
|
$filteredDbMountpoints = [];
|
|
// Notice: We cannot call $this->getPagePermsClause(1);
|
|
// as usual because the group-list is not available at this point.
|
|
// But bypassing is fine because all we want here is check if the
|
|
// workspace mounts are inside the current webmounts rootline.
|
|
// The actual permission checking on page level is done elsewhere
|
|
// as usual anyway before the page tree is rendered.
|
|
$readPerms = '1=1';
|
|
// Traverse mount points of the
|
|
|
|
// PATCH begin
|
|
$wsWebmounts = implode(',', GeneralUtility::intExplode(',', $this->workspaceRec['db_mountpoints']));
|
|
|
|
$userMounts = $this->dataLists['webmount_list'];
|
|
|
|
$wsArr = GeneralUtility::intExplode(',', $wsWebmounts);
|
|
$userArrTemp = GeneralUtility::intExplode(',', $userMounts);
|
|
$userArr = array();
|
|
if (is_array($userArrTemp) && count($userArrTemp) > 0) {
|
|
foreach ($userArrTemp as $userPage) {
|
|
$rL = BackendUtility::BEgetRootLine($userPage);
|
|
if (is_array($rL) && count($rL)) {
|
|
$rPages = array();
|
|
foreach ($rL as $rPage)
|
|
$rPages[] = $rPage['uid'];
|
|
if (is_array($wsArr) && count($wsArr) > 0) {
|
|
|
|
$valore = array(
|
|
$wsArr[0]
|
|
);
|
|
if (is_array($rPages) && in_array($rPages, $valore)) {
|
|
$userArr[] = $userPage;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$resultArr = array_unique(array_merge($userArr, array_intersect($wsArr, $userArrTemp)));
|
|
$webmountUidList = implode(',', $resultArr);
|
|
}
|
|
|
|
$dbMountpoints = GeneralUtility::intExplode(',', $webmountUidList);
|
|
|
|
foreach ($dbMountpoints as $mpId) {
|
|
if ($mpId > 0 && $this->isInWebMount($mpId, $readPerms)) {
|
|
$filteredDbMountpoints[] = $mpId;
|
|
}
|
|
}
|
|
// PATCH end
|
|
|
|
// Re-insert webmounts:
|
|
$filteredDbMountpoints = array_unique($filteredDbMountpoints);
|
|
$this->groupData['webmounts'] = implode(',', $filteredDbMountpoints);
|
|
}
|
|
}
|