N°1975 - Fix: Change Menu rights to "Admin only" leads in crash test

This commit is contained in:
Eric
2019-02-20 14:57:39 +01:00
parent 63a36fd0f6
commit a89bca4626
2 changed files with 12 additions and 8 deletions

View File

@@ -78,6 +78,7 @@ EOF;
}
EOF;
SetupUtils::builddir(dirname($sFilePath));
file_put_contents($sFilePath, $content);
}
}

View File

@@ -333,8 +333,9 @@ EOF;
$aMenusToLoad[] = $sMenuId;
}
$aMenusToLoad = array_unique($aMenusToLoad);
$aMenusForAll = array();
$aMenusForAdmins = array();
$aMenuLinesForAll = array();
$aMenuLinesForAdmins = array();
$aAdminMenus = array();
foreach($aMenusToLoad as $sMenuId)
{
$oMenuNode = $aMenuNodes[$sMenuId];
@@ -365,25 +366,27 @@ EOF;
{
throw new Exception("Failed to process menu '$sMenuId', from '$sModuleRootDir': ".$e->getMessage());
}
if ($oMenuNode->GetChildText('enable_admin_only') == '1')
$sParent = $oMenuNode->GetChildText('parent', null);
if (($oMenuNode->GetChildText('enable_admin_only') == '1') || isset($aAdminMenus[$sParent]))
{
$aMenusForAdmins = array_merge($aMenusForAdmins, $aMenuLines);
$aMenuLinesForAdmins = array_merge($aMenuLinesForAdmins, $aMenuLines);
$aAdminMenus[$oMenuNode->getAttribute("id")] = true;
}
else
{
$aMenusForAll = array_merge($aMenusForAll, $aMenuLines);
$aMenuLinesForAll = array_merge($aMenuLinesForAll, $aMenuLines);
}
}
$sIndent = "\t\t";
foreach ($aMenusForAll as $sPHPLine)
foreach ($aMenuLinesForAll as $sPHPLine)
{
$sCompiledCode .= $sIndent.$sPHPLine."\n";
}
if (count($aMenusForAdmins) > 0)
if (count($aMenuLinesForAdmins) > 0)
{
$sCompiledCode .= $sIndent."if (UserRights::IsAdministrator())\n";
$sCompiledCode .= $sIndent."{\n";
foreach ($aMenusForAdmins as $sPHPLine)
foreach ($aMenuLinesForAdmins as $sPHPLine)
{
$sCompiledCode .= $sIndent."\t".$sPHPLine."\n";
}