protected function _MergeDisabledPermissions(&$GlobalPermissions)
{
// Get the default permissions for junctions that are disabled.
$DisabledPermissions = c('Garden.Permissions.Disabled');
if (!$DisabledPermissions) {
return;
}
$DisabledIn = array();
foreach ($DisabledPermissions as $JunctionTable => $Disabled) {
if ($Disabled) {
$DisabledIn[] = $JunctionTable;
}
}
if (!$DisabledIn) {
return;
}
$DisabledData = $this->SQL->select('*')->from('Permission p')->where('p.RoleID', 0)->whereIn('p.JunctionTable', $DisabledIn)->get()->resultArray();
$DefaultRow =& $GlobalPermissions[0];
// Loop through each row and add it's default definition to the global permissions.
foreach ($DisabledData as $PermissionRow) {
foreach ($PermissionRow as $ColumnName => $Value) {
if (in_array($ColumnName, array('PermissionID', 'RoleID', 'JunctionTable', 'JunctionColumn', 'JunctionID'))) {
continue;
}
if ($Value & 2) {
$Setting = $Value | val($ColumnName, $DefaultRow, 0);
setValue($ColumnName, $DefaultRow, $Setting);
}
}
}
}