public function checkAccessAnswer(User $user, Question $question) { if ($question instanceof Petition && $question->getIsOutsidersSign()) { return true; } $questionOwner = $question->getUser(); if ($questionOwner instanceof Superuser) { return true; } if ($questionOwner instanceof Group) { $userGroup = $this->entityManager->getRepository('CivixCoreBundle:UserGroup')->isJoinedUser($questionOwner, $user); if ($userGroup instanceof UserGroup && $userGroup->getStatus() == UserGroup::STATUS_ACTIVE) { return true; } return false; } if ($questionOwner instanceof Representative) { $userDistricts = $user->getDistrictsIds(); if (array_search($questionOwner->getDistrictId(), $userDistricts) !== false) { return true; } return false; } return false; }
/** * @Route("/{id}/answers/") * @Method("GET") */ public function answersListAction(Question $question) { if ($question->getUser() !== $this->getUser()) { return $this->createJSONResponse('', 403); } $answers = $this->getDoctrine()->getRepository(Answer::class)->findByQuestion($question); return $this->createJSONResponse($this->jmsSerialization($answers, ['api-leader-answers'])); }
/** * @Route("/delete/{id}", requirements={"id"="\d+"}) * @ParamConverter("question", class="CivixCoreBundle:Poll\Question") */ public function deleteAction(Request $request, Question $question) { $entityManager = $this->getDoctrine()->getManager(); if ($question->getUser() !== $this->getUser()) { throw new AccessDeniedHttpException(); } if ($this->getToken() === $request->get('token') && $question->getPublishedAt() === null) { $entityManager->remove($question); $entityManager->flush(); $this->get('session')->getFlashBag()->add('notice', 'Question has been successfully removed'); } else { $this->get('session')->getFlashBag()->add('error', 'Something went wrong'); } return $this->redirect($this->generateUrl('civix_front_' . $this->getUser()->getType() . '_question_index')); }
public function setQuestion(Question $question) { $this->question = $question; $this->questionOwner = $this->getClassName($question->getUser()); }