/** * Trip details controller * * @param integer $id Trip id * @param Request $request Incoming request * @param Application $app Silex application * @return Application $app Silex application */ public function tripAction($id, Request $request, Application $app) { $trip = $app['dao.trip']->find($id); $reviewFormView = null; if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) { // A user is fully authenticated : he can add comments $review = new Review(); $review->setTrip($trip); $user = $app['user']; $review->setUser($user); $reviewForm = $app['form.factory']->create(new ReviewType(), $review); $reviewForm->handleRequest($request); if ($reviewForm->isSubmitted() && $reviewForm->isValid()) { $app['dao.review']->save($review); $app['session']->getFlashBag()->add('success', 'Your review was succesfully added.'); } $reviewFormView = $reviewForm->createView(); } $reviews = $app['dao.review']->findAllByTrip($id); return $app['twig']->render('trip.html.twig', array('trip' => $trip, 'reviews' => $reviews, 'reviewForm' => $reviewFormView)); }
/** * Creates a Review object based on a DB row. * * @param array $row The DB row containing Review data. * @return \VeryGoodTrip\Domain\Review */ protected function buildDomainObject($row) { $review = new Review(); $review->setId($row['review_id']); $review->setContent($row['review_content']); $review->setRating($row['review_rating']); if (array_key_exists('review_id', $row)) { //Find and set the associated trip $tripId = $row['trip_id']; $trip = $this->tripDAO->find($tripId); $review->setTrip($trip); } if (array_key_exists('user_id', $row)) { // Find and set the associated author $userId = $row['user_id']; $user = $this->userDAO->find($userId); $review->setUser($user); } return $review; }