PermissionModel::_MergeDisabledPermissions PHP Method

_MergeDisabledPermissions() protected method

Merge junction permissions with global permissions if they are disabled.
protected _MergeDisabledPermissions ( array &$GlobalPermissions ) : void
$GlobalPermissions array
return void
    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);
                }
            }
        }
    }