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