Exemplo n.º 1
0
 /**
  * @Route("/subject", requirements={}, defaults={}, name="api_v1_add_subject")
  * @Method({"POST"})
  * @param Request $request
  * @return Response
  */
 public function addSubjectAction(Request $request)
 {
     $r = array('error' => 'Unknown', 'data' => array());
     $response = new JsonResponse();
     $translator = $this->get('translator');
     do {
         if (!$this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
             $r['error'] = $translator->trans('improv.error.not_logged_in');
             break;
         }
         if (mb_strlen($title = trim($request->request->get('title')), 'UTF-8') > 140) {
             $r['error'] = $translator->trans('improv.error.title_too_long');
             break;
         } elseif (mb_strlen($title, 'UTF-8') < 3) {
             $r['error'] = $translator->trans('improv.error.title_too_short');
             break;
         }
         if (mb_strlen($image = trim($request->request->get('image')), 'UTF-8') > 140) {
             $r['error'] = $translator->trans('improv.error.image_url_too_long');
             break;
         } elseif ($image) {
             if ($this->get('validator')->validate($image, new Assert\Url())->count()) {
                 $r['error'] = $translator->trans('improv.error.image_url_invalid');
                 break;
             } elseif (!preg_match('/\\.(jpg|jpeg|png|gif)$/', $image)) {
                 $r['error'] = $translator->trans('improv.error.image_url_invalid');
                 break;
             }
         }
         $subject = new Subject();
         $subject->setLocale($request->getLocale());
         $subject->setTitle($title);
         $subject->setImage($image);
         $repository = $this->getDoctrine()->getRepository('MmdImprovBundle:Subject');
         if (!$repository->findOneBy(array('hash' => $subject->getHash()))) {
             $this->getDoctrine()->getManager()->persist($subject);
             $this->getDoctrine()->getManager()->flush();
         }
         $r['error'] = null;
         $r['data']['message'] = $translator->trans('improv.success.subject_added');
     } while (false);
     $response->setData($r);
     return $response;
 }
Exemplo n.º 2
0
 private function getSubjectArray(Subject $subject)
 {
     return array('id' => $subject->getId(), 'title' => $subject->getTitle(), 'image' => $subject->getImage(), 'vote_avg' => $subject->getVoteAvg(), 'vote_minus' => $subject->getVoteMinus(), 'vote_plus' => $subject->getVotePlus());
 }