/** * @param int $page * @param Request $request * @param Application $app * * @return Response */ public function search($page, Request $request, Application $app) { $keyword = $request->query->get('search'); if ($request->query->has('search') && empty($keyword)) { return $app->redirect($app->path('search')); } $response = new Response(); $resultsPerPage = 10; $first = ($page - 1) * $resultsPerPage; /** @var Members $membersRepository */ $membersRepository = $app['repository.members']; if (empty($keyword)) { $members = $membersRepository->findAll($first, $resultsPerPage); $membersCount = $membersRepository->getCount(); $response->headers->clearCookie('keyword'); } else { $membersCount = $membersRepository->getSearchCount($keyword); $members = $membersRepository->search($keyword, $first, $resultsPerPage); $response->headers->setCookie(new Cookie('keyword', $keyword)); } $pages = ceil($membersCount / $resultsPerPage); if ($page > $pages && $page != 1) { $app->abort(404, 'Page does not exist.'); } return $app->render('search.html.twig', ['members' => $members, 'results' => $membersCount, 'results_per_page' => $resultsPerPage, 'pages' => $pages, 'current_page' => $page, 'keyword' => $keyword], $response); }
/** * @param Application $app * @param Request $request * * @return Response */ public function add(Application $app, Request $request) { $form = $app->createForm(new MemberType()); if ($request->isMethod('post')) { $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $member = new Member($data['username'], $data['password'], new Address('Canada', 'Ontario', $data['city'], $data['postal_code']), $data['date_of_birth'], Limits::all()[$data['limits']], new Height($data['height']), new Weight($data['weight']), BodyType::all()[$data['body_type']], Ethnicity::all()[$data['ethnicity']], new Email($data['email'])); $app['repository.members']->add($member); $app->flashSuccess(sprintf('Member "%s" was successfully added', $member->getUsername())); return $app->redirect($app->path('manage.members')); } } return $app->render('manage/members.add.twig', ['form' => $form->createView()]); }