/**
  * @Route("/portfolio/{id}", name="icap_portfolio_internal_portfolio_put")
  * @Method({"PUT"})
  *
  * @ParamConverter("loggedUser", options={"authenticatedUser" = true})
  */
 public function putAction(Request $request, User $loggedUser, Portfolio $portfolio)
 {
     $this->checkPortfolioToolAccess();
     if ($portfolio->getUser() === $loggedUser) {
         $data = $this->getPortfolioManager()->handle($portfolio, $request->request->all(), $this->get('kernel')->getEnvironment());
     } else {
         $portfolioGuide = $this->getPortfolioGuideManager()->getByPortfolioAndGuide($portfolio, $loggedUser);
         if (null !== $portfolioGuide) {
             $this->getPortfolioGuideManager()->updateCommentsViewDate($portfolioGuide);
             $data = $this->getPortfolioManager()->getPortfolioData($portfolio);
             $data['unreadComments'] = $portfolio->getCountUnreadComments($portfolioGuide->getCommentsViewAt());
             $data['commentsViewAt'] = $portfolioGuide->getCommentsViewAt();
         } else {
             throw new NotFoundHttpException();
         }
     }
     $response = new JsonResponse();
     $response->setData($data);
     return $response;
 }
 /**
  * @param Portfolio $portfolio
  * @param User      $user
  *
  * @return bool
  */
 public function visibleToUser(Portfolio $portfolio, User $user)
 {
     $visibility = $portfolio->getVisibility();
     $isVisible = false;
     if ($portfolio->getUser() === $user) {
         $isVisible = true;
     } else {
         if (Portfolio::VISIBILITY_EVERYBODY === $visibility || Portfolio::VISIBILITY_PLATFORM_USER === $visibility) {
             $isVisible = true;
         } elseif (Portfolio::VISIBILITY_USER === $visibility) {
             $portfolioUsers = $portfolio->getPortfolioUsers();
             foreach ($portfolioUsers as $portfolioUser) {
                 if ($user === $portfolioUser->getUser()) {
                     $isVisible = true;
                     break;
                 }
             }
             if (!$isVisible) {
                 $portfolioGroups = $portfolio->getPortfolioGroups();
                 $userGroups = $user->getGroups();
                 foreach ($portfolioGroups as $portfolioGroup) {
                     foreach ($userGroups as $userGroup) {
                         if ($userGroup === $portfolioGroup->getGroup()) {
                             $isVisible = true;
                             break;
                         }
                     }
                 }
             }
             if (!$isVisible) {
                 $portfolioTeams = $portfolio->getPortfolioTeams();
                 /** @var \Claroline\TeamBundle\Entity\Team[] $userTeams */
                 $userTeams = $this->teamManager->getTeamsByUser($user);
                 foreach ($portfolioTeams as $portfolioTeam) {
                     foreach ($userTeams as $userTeam) {
                         if ($userTeam === $portfolioTeam->getTeam()) {
                             $isVisible = true;
                             break;
                         }
                     }
                 }
             }
         }
     }
     return $isVisible;
 }
 /**
  * @param Portfolio      $portfolio
  * @param PortfolioGuide $portfolioGuide
  */
 public function __construct(Portfolio $portfolio, PortfolioGuide $portfolioGuide)
 {
     $this->portfolio = $portfolio;
     $user = $portfolio->getUser();
     parent::__construct(self::ACTION, array('owner' => array('lastName' => $user->getLastName(), 'firstName' => $user->getFirstName()), 'portfolio' => array('id' => $this->portfolio->getId(), 'title' => $this->portfolio->getTitle(), 'slug' => $this->portfolio->getSlug())), $portfolioGuide->getUser(), null, null, null, null, $user);
 }
 /**
  * @Route("/delete/{id}", name="icap_portfolio_delete", requirements={"id" = "\d+"})
  *
  * @ParamConverter("loggedUser", options={"authenticatedUser" = true})
  * @Template()
  */
 public function deleteAction(Request $request, User $loggedUser, Portfolio $portfolio)
 {
     $this->checkPortfolioToolAccess();
     if ($loggedUser !== $portfolio->getUser()) {
         throw $this->createNotFoundException('Unkown user for this portfolio.');
     }
     try {
         $this->getPortfolioFormHandler()->handleDelete($portfolio);
         if ($request->isXmlHttpRequest()) {
             return new Response($this->refreshPortfolioList($loggedUser));
         } else {
             $this->getSessionFlashbag()->add('success', $this->getTranslator()->trans('portfolio_delete_success_message', [], 'icap_portfolio'));
         }
     } catch (\Exception $exception) {
         if ($request->isXmlHttpRequest()) {
             return new JsonResponse('Error while deleting the portfolio', 500);
         } else {
             $this->getSessionFlashbag()->add('error', $this->getTranslator()->trans('portfolio_delete_error_message', [], 'icap_portfolio'));
         }
     }
     return $this->redirect($this->generateUrl('icap_portfolio_index'));
 }
Beispiel #5
0
 /**
  * @param null|User      $user
  * @param null|Portfolio $portfolio
  *
  * @throws NotFoundHttpException
  */
 public function checkPortfolioToolAccess(User $user = null, Portfolio $portfolio = null)
 {
     if (!$this->getPortfolioToolAccess()) {
         throw $this->createNotFoundException();
     }
     if (null !== $user && null !== $portfolio && $portfolio->getUser() !== $user) {
         $portfolioGuide = $this->getPortfolioGuideManager()->getByPortfolioAndGuide($portfolio, $user);
         if (null === $portfolioGuide) {
             throw $this->createNotFoundException();
         }
     }
 }