public function listAction(Request $request, $sort)
{
$format = $request->getRequestFormat();
if (!array_key_exists($sort, $this->sortFields)) {
$msg = sprintf('%s is not a valid sorting field', $sort);
if ('json' === $format) {
return new JsonResponse(array('status' => 'error', 'message' => $msg), 406);
}
throw new HttpException($msg, 406);
}
$sortField = $this->sortFields[$sort];
$query = $this->getRepository('Developer')->queryAllWithBundlesSortedBy($sortField);
$paginator = $this->getPaginator($query, $request->query->get('page', 1), $request->query->get('limit', 18));
if ('json' === $format) {
$result = array('results' => array(), 'total' => $paginator->getNbResults());
/* @var $developer Developer */
foreach ($paginator as $developer) {
$result['results'][] = array('name' => $developer->getName(), 'email' => $developer->getEmail(), 'avatarUrl' => $developer->getAvatarUrl(), 'fullName' => $developer->getFullName(), 'company' => $developer->getCompany(), 'location' => $developer->getLocation(), 'blog' => $developer->getUrl(), 'lastCommitAt' => $developer->getLastCommitAt() ? $developer->getLastCommitAt()->getTimestamp() : null, 'score' => $developer->getScore(), 'url' => $this->generateUrl('developer_show', array('name' => $developer->getName()), true));
}
if ($paginator->hasPreviousPage()) {
$result['prev'] = $this->generateUrl('developer_list', array('sort' => $sort, 'page' => $paginator->getPreviousPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
}
if ($paginator->hasNextPage()) {
$result['next'] = $this->generateUrl('developer_list', array('sort' => $sort, 'page' => $paginator->getNextPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
}
return new JsonResponse($result);
}
$this->highlightMenu('developers');
return $this->render('KnpBundlesBundle:Developer:list.html.twig', array('developers' => $paginator, 'sort' => $sort, 'sortLegends' => $this->sortLegends));
}