public static function getSelectColumns(xPDO & $xpdo, $className, $tableAlias= '', $columnPrefix= '', $columns= array (), $exclude= false) {
        $columnarray= array ();
        $aColumns= $xpdo->getFields($className);
        if ($aColumns) {
            if (!empty ($tableAlias)) {
                $tableAlias= $xpdo->escape($tableAlias);
                $tableAlias.= '.';
            }
            if (!$exclude && !empty($columns)) {
                foreach ($columns as $column) {
                    if (!in_array($column, array_keys($aColumns))) {
                        continue;
                    }
                    $columnarray[$column]= "{$tableAlias}" . $xpdo->escape($column);
                    if (!empty ($columnPrefix)) {
                        $columnarray[$column]= $columnarray[$column] . " AS " . $xpdo->escape("{$columnPrefix}{$column}");
                    }
                }
            } else {
                foreach (array_keys($aColumns) as $k) {
                    if ($exclude && in_array($k, $columns)) {
                        continue;
                    }
                    elseif (empty ($columns)) {
                        $columnarray[$k]= "{$tableAlias}" . $xpdo->escape($k);
                    }
                    elseif ($exclude || in_array($k, $columns)) {
                        $columnarray[$k]= "{$tableAlias}" . $xpdo->escape($k);
                    } else {
                        continue;
                    }
                    if (!empty ($columnPrefix)) {
                        $columnarray[$k]= $columnarray[$k] . " AS " . $xpdo->escape("{$columnPrefix}{$k}");
                    }
                }
            }
        }
        return implode(', ', $columnarray);
    }