/** * @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; }