public function readData($source_definition, $rest_parameters = [])
{
list($limit, $offset) = Pager::calculateLimitAndOffset();
$collection = $this->getCollection($source_definition);
// Parse the parameters from the query string (prefixed by q.)
$all_parameters = \Input::get();
$query = [];
foreach ($all_parameters as $key => $val) {
if (substr($key, 0, 2) == 'q_') {
$key = str_replace('q_', '', $key);
$query[$key] = $val;
}
}
$total_objects = $collection->count($query);
$cursor = $collection->find($query)->skip($offset)->limit($limit);
$results = [];
foreach ($cursor as $result) {
unset($result['_id']);
$results[] = $result;
}
$paging = Pager::calculatePagingHeaders($limit, $offset, $total_objects);
$data_result = new Data();
$data_result->data = $results;
$data_result->paging = $paging;
$data_result->preferred_formats = $this->getPreferredFormats();
return $data_result;
}