RatingController::saveAction PHP Méthode

saveAction() public méthode

public saveAction ( )
    public function saveAction()
    {
        $this->_helper->layout->disableLayout();
        $params = $this->getRequest()->getParams();
        $translator = Zend_Registry::get('container')->getService('translator');
        $errors = array();
        $auth = Zend_Auth::getInstance();
        if ($auth->getIdentity()) {
            $userRepository = $this->em->getRepository('Newscoop\\Entity\\User');
            $ratingRepository = $this->em->getRepository('Newscoop\\Entity\\Rating');
            $user = $userRepository->find($auth->getIdentity());
            if ($ratingRepository->countBy(array('articleId' => $params['f_article_number'], 'userId' => $user->getId())) > 0) {
                // update the existing rating
                $rating = $ratingRepository->findOneBy(array('articleId' => $params['f_article_number'], 'userId' => $user->getId()));
                $ratingRepository->update($rating, array('ratingScore' => $params['f_rating_score']));
                $ratingRepository->flush();
                $errors[] = $translator->trans('Your rating has been updated');
            }
        } else {
            $errors[] = $translator->trans('You are not logged in.');
        }
        if (empty($errors)) {
            $rating = new Rating();
            $values = array('userId' => $user->getId(), 'articleId' => $params['f_article_number'], 'ratingScore' => $params['f_rating_score'], 'timeCreated' => new DateTime());
            $ratingRepository->save($rating, $values);
            $ratingRepository->flush();
            $this->view->response = $this->getArticleRating($params['f_article_number']);
        } else {
            $errors = implode('<br>', $errors);
            $this->view->response = array_merge($this->getArticleRating($params['f_article_number']), array('error' => $errors));
        }
        $this->_helper->json($this->view->response);
    }