/**
  * @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
  *
  * @return bool True on successfull processing, false otherwise
  */
 public function handleVisibility(Portfolio $portfolio)
 {
     $originalPortfolioUsers = $portfolio->getPortfolioUsers();
     $originalPortfolioGroups = $portfolio->getPortfolioGroups();
     $originalPortfolioTeams = $portfolio->getPortfolioTeams();
     $form = $this->getVisibilityForm($portfolio);
     $request = $this->requestStack->getCurrentRequest();
     if ($request->isMethod('POST')) {
         $form->submit($request);
         if ($form->isValid()) {
             $this->portfolioManager->updateVisibility($portfolio, $originalPortfolioUsers, $originalPortfolioGroups, $originalPortfolioTeams);
             return true;
         }
     }
     return false;
 }