function getDataGridSelectedFields($handler)
{
    if (isset($_REQUEST['sf'])) {
        $selectedFields = explode(',', unescaped($_REQUEST, 'sf'));
    } else {
        $selectedFields = $handler->getAllFieldNames();
    }
    return $selectedFields;
}
        }
    } else {
        //unset order key, do not process further
        break;
    }
}
$filter = array();
$i = 0;
//Filter filter parameters to valid enties
while (isset($_GET["fk{$i}"]) && isset($_GET["fo{$i}"]) && isset($_GET["fv{$i}"])) {
    if ($handler->hasField(unescaped($_GET, "fk{$i}"))) {
        $filter[$i]['key'] = unescaped($_GET, "fk{$i}");
        if (isLegalOperator(unescaped($_GET, "fo{$i}"))) {
            $filter[$i]['op'] = unescaped($_GET, "fo{$i}");
            try {
                $filter[$i]['val'] = transferType($handler->getFieldType(unescaped($_GET, "fk{$i}")), unescaped($_GET, "fv{$i}"));
            } catch (TransferException $ex) {
                //Untransferable Data Type
                echo 'Illegal filter value: ' . $_GET["fv{$i}"];
                exit;
            }
        } else {
            //illegal filter operator
            echo 'Illegal filter operator: ' . $_GET["fo{$i}"];
            exit;
        }
    } else {
        //unknown filter key
        echo 'Unknown filter key: ' . $_GET["fk{$i}"];
        exit;
    }
function getGPC($array, $key, $type = 'string', $escaped = false)
{
    if ($type == 'checkbox') {
        return isset($array[$key]);
    }
    if ($escaped) {
        $val = escaped($array, $key);
    } else {
        $val = unescaped($array, $key);
    }
    switch ($type) {
        case 'int':
        case 'integer':
            settype($val, 'integer');
            break;
        case 'float':
        case 'double':
            settype($val, 'float');
            break;
        case 'bool':
        case 'boolean':
            settype($val, 'boolean');
            break;
        case 'Amount':
            $val = new Amount($val);
            break;
        case 'AmountFormatted':
            $val = new Amount($val, true);
            break;
        case 'Date':
            $val = new Date($val);
            break;
        case 'DateFormatted':
            $val = new Date($val, true);
            break;
        case 'intList':
        case 'integerList':
            $arr = explode(',', $val);
            $val = array();
            foreach ($arr as $elm) {
                settype($elm, 'integer');
                $val[] = $elm;
            }
            break;
        case 'floatList':
        case 'doubleList':
            $arr = explode(',', $val);
            $val = array();
            foreach ($arr as $elm) {
                settype($elm, 'float');
                $val[] = $elm;
            }
            break;
        case 'stringList':
            $val = explode(',', $val);
            break;
        case 'string':
        default:
    }
    return $val;
}
    echo 'Missing Parameter q';
    exit;
}
$dgr = new DataGridRepository($badgerDb);
//Unknown DataGridHandler if no result
try {
    $handlerData = $dgr->getHandler($_REQUEST['q']);
} catch (BadgerException $ex) {
    echo 'Unknown DataGridHandler';
    exit;
}
//Include file containing DataGridHandler
require_once BADGER_ROOT . $handlerData['path'];
//Pass query parameters, if available
if (isset($_REQUEST['qp'])) {
    $param = unescaped($_REQUEST, 'qp');
    $handler = new $handlerData['class']($badgerDb, $param);
} else {
    $handler = new $handlerData['class']($badgerDb);
}
$order = getDataGridOrder($handler);
$filter = getDataGridFilter($handler);
$selectedFields = getDataGridSelectedFields($handler);
//Prepare Handler
$handler->setOrder($order);
$handler->setFilter($filter);
$handler->setSelectedFields($selectedFields);
//Get data
$rows = $handler->getAll();
$columns = $handler->getFieldNames();
$dgx = new DataGridXML($columns, $rows);