ImportModel::insertPermissionTable PHP Method

insertPermissionTable() public method

public insertPermissionTable ( ) : boolean
return boolean
    public function insertPermissionTable()
    {
        //      $this->LoadState();
        // Clear the permission table in case the step was only half done before.
        $this->SQL->delete('Permission', array('RoleID <>' => 0));
        // Grab all of the permission columns.
        $PM = new PermissionModel();
        $GlobalColumns = array_filter($PM->permissionColumns());
        unset($GlobalColumns['PermissionID']);
        $JunctionColumns = array_filter($PM->permissionColumns('Category', 'PermissionCategoryID'));
        unset($JunctionColumns['PermissionID']);
        $JunctionColumns = array_merge(array('JunctionTable' => 'Category', 'JunctionColumn' => 'PermissionCategoryID', 'JunctionID' => -1), $JunctionColumns);
        if ($this->importExists('Permission', 'JunctionTable')) {
            $ColumnSets = array(array_merge($GlobalColumns, $JunctionColumns));
            $ColumnSets[0]['JunctionTable'] = null;
            $ColumnSets[0]['JunctionColumn'] = null;
            $ColumnSets[0]['JunctionID'] = null;
        } else {
            $ColumnSets = array($GlobalColumns, $JunctionColumns);
        }
        $Data = $this->SQL->get('zPermission')->resultArray();
        foreach ($Data as $Row) {
            $Presets = array_map('trim', explode(',', val('_Permissions', $Row)));
            foreach ($ColumnSets as $ColumnSet) {
                $Set = array();
                $Set['RoleID'] = $Row['RoleID'];
                foreach ($Presets as $Preset) {
                    if (strpos($Preset, '.') !== false) {
                        // This preset is a specific permission.
                        if (array_key_exists($Preset, $ColumnSet)) {
                            $Set["`{$Preset}`"] = 1;
                        }
                        continue;
                    }
                    $Preset = strtolower($Preset);
                    foreach ($ColumnSet as $ColumnName => $Default) {
                        if (isset($Row[$ColumnName])) {
                            $Value = $Row[$ColumnName];
                        } elseif (strpos($ColumnName, '.') === false) {
                            $Value = $Default;
                        } elseif ($Preset == 'all') {
                            $Value = 1;
                        } elseif ($Preset == 'view') {
                            $Value = StringEndsWith($ColumnName, 'View', true) && !in_array($ColumnName, array('Garden.Settings.View'));
                        } elseif ($Preset == $ColumnName) {
                            $Value = 1;
                        } else {
                            $Value = $Default & 1;
                        }
                        $Set["`{$ColumnName}`"] = $Value;
                    }
                }
                $this->SQL->insert('Permission', $Set);
                unset($Set);
            }
        }
        return true;
    }