// In Single Site mode sysadmins can remove this right. $app['currentUserPermissions'] = $userPermissionsRepo->getPermissionsForUserInSite($app['currentUser'], $app['currentSite'], false, true); # ////////////// User and their watch and perms $app['currentUserActions'] = new UserActionsSiteList($app['currentSite'], $app['currentUserPermissions']); $app['currentUserWatchesSite'] = false; if ($app['currentUser']) { $uwsr = new UserWatchesSiteRepository(); $uws = $uwsr->loadByUserAndSite($app['currentUser'], $app['currentSite']); $app['currentUserWatchesSite'] = $uws && $uws->getIsWatching(); } $app['twig']->addGlobal('currentUserActions', $app['currentUserActions']); $app['twig']->addGlobal('currentUserWatchesSite', $app['currentUserWatchesSite']); # ////////////// if not current user, let templates see what currentUser could do if (!$app['currentUser']) { // We don't pass $removeEditorPermissions here because that is about specific users being banned and this is potential users $app['anyVerifiedUserPermissions'] = $userPermissionsRepo->getPermissionsForAnyVerifiedUserInSite($app['currentSite'], false, true); $app['anyVerifiedUserActions'] = new UserActionsSiteList($app['currentSite'], $app['anyVerifiedUserPermissions']); $app['twig']->addGlobal('anyVerifiedUserActions', $app['anyVerifiedUserActions']); } # ////////////// Timezone $timezone = ""; if (isset($_GET['mytimezone']) && in_array($_GET['mytimezone'], $app['currentSite']->getCachedTimezonesAsList())) { setcookie("site" . $app['currentSite']->getId() . "timezone", $_GET['mytimezone'], time() + 60 * 60 * 24 * 365, '/', $CONFIG->webCommonSessionDomain, false, false); $timezone = $_GET['mytimezone']; } else { if (isset($_COOKIE["site" . $app['currentSite']->getId() . "timezone"]) && in_array($_COOKIE["site" . $app['currentSite']->getId() . "timezone"], $site->getCachedTimezonesAsList())) { $timezone = $_COOKIE["site" . $app['currentSite']->getId() . "timezone"]; } else { if (in_array('Europe/London', $site->getCachedTimezonesAsList())) { $timezone = 'Europe/London'; } else {
function testSiteOwnerSpecificEdit() { global $CONFIG; $CONFIG->newUsersAreEditors = true; $this->addCountriesToTestDB(); $userOwner = new UserAccountModel(); $userOwner->setEmail("*****@*****.**"); $userOwner->setUsername("test"); $userOwner->setPassword("password"); $userVerified = new UserAccountModel(); $userVerified->setEmail("*****@*****.**"); $userVerified->setUsername("verified"); $userVerified->setPassword("password"); $userUnverified = new UserAccountModel(); $userUnverified->setEmail("*****@*****.**"); $userUnverified->setUsername("unverified"); $userUnverified->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($userOwner); $userRepo->verifyEmail($userOwner); $userRepo->create($userVerified); $userRepo->verifyEmail($userVerified); $userRepo->create($userUnverified); // reload user object so all flags set correctly $userOwner = $userRepo->loadByUserName($userOwner->getUsername()); $userVerified = $userRepo->loadByUserName($userVerified->getUsername()); $userUnverified = $userRepo->loadByUserName($userUnverified->getUsername()); $extensionsManager = new ExtensionManager($this->app); $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager); $siteModel = new \models\SiteModel(); $siteModel->setTitle("Test"); $siteModel->setSlug("test"); $siteRepository = new \repositories\SiteRepository(); $countryRepository = new \repositories\CountryRepository(); $siteRepository->create($siteModel, $userOwner, array($countryRepository->loadByTwoCharCode("GB")), $this->getSiteQuotaUsedForTesting(), false); ## Check! $extensionsManager = new ExtensionManager($this->app); $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager); $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, false); $this->assertEquals(2, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnonymousInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnyUserInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnyVerifiedUserInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); }