function index($username, Request $request, Application $app) { if (!$this->build($username, $request, $app)) { $app->abort(404, "User does not exist."); } $userPermissionRepo = new UserPermissionsRepository($app['extensions']); $this->parameters['userpermissions'] = $userPermissionRepo->getPermissionsForUserInSite($this->parameters['user'], $app['currentSite'], false, false)->getPermissions(); return $app['twig']->render('site/adminuser/index.html.twig', $this->parameters); }
public static function run(Application $app, $verbose = false) { global $CONFIG; if ($verbose) { print "Starting " . date("c") . "\n"; } $userRepo = new UserAccountRepository(); $siteRepo = new SiteRepository(); $groupRepo = new GroupRepository(); $eventRepo = new EventRepository(); $userWatchesGroupRepository = new UserWatchesGroupRepository(); $userWatchesGroupStopRepository = new UserWatchesGroupStopRepository(); $userAccountGeneralSecurityKeyRepository = new UserAccountGeneralSecurityKeyRepository(); $userNotificationRepo = new UserNotificationRepository(); $userHasNoEditorPermissionsInSiteRepo = new UserHasNoEditorPermissionsInSiteRepository(); $userPermissionsRepo = new UserPermissionsRepository($app['extensions']); /** @var usernotifications/UserWatchesGroupPromptNotificationType **/ $userNotificationType = $app['extensions']->getCoreExtension()->getUserNotificationType('UserWatchesGroupPrompt'); $b = new UserWatchesGroupRepositoryBuilder(); foreach ($b->fetchAll() as $userWatchesGroup) { $user = $userRepo->loadByID($userWatchesGroup->getUserAccountId()); $group = $groupRepo->loadById($userWatchesGroup->getGroupId()); $site = $siteRepo->loadById($group->getSiteID()); // This is not the most efficient as it involves DB access and the results might not be used. But it'll do for now. $userPermissions = $userPermissionsRepo->getPermissionsForUserInSite($user, $site, false, true); if ($verbose) { print date("c") . " User " . $user->getEmail() . " Site " . $site->getTitle() . " Group " . $group->getTitle() . "\n"; } // UserWatchesGroupRepositoryBuilder() should only return instances where site is not also watched if ($site->getIsClosedBySysAdmin()) { if ($verbose) { print " ... site is closed\n"; } } else { if ($group->getIsDeleted()) { if ($verbose) { print " ... group is deleted\n"; } } else { if ($userHasNoEditorPermissionsInSiteRepo->isUserInSite($user, $site)) { if ($verbose) { print " ... user does not have edit permissions allowed in site\n"; } } else { if (!$userPermissions->hasPermission("org.openacalendar", "CALENDAR_CHANGE")) { if ($verbose) { print " ... user does not have org.openacalendar/CALENDAR_CHANGE permission in site\n"; } // Technically UserWatchesSiteRepositoryBuilder() should only return getIsWatching() == true but lets double check } else { if ($userWatchesGroup->getIsWatching()) { if ($verbose) { print " ... searching for data\n"; } $lastEvent = $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId()); $data = $userWatchesGroup->getPromptEmailData($site, $lastEvent); if ($data['moreEventsNeeded']) { if ($verbose) { print " ... found data\n"; } ///// Notification Class $userNotification = $userNotificationType->getNewNotification($user, $site); $userNotification->setGroup($group); ////// Save Notification Class $userNotificationRepo->create($userNotification); ////// Send Email if ($userNotification->getIsEmail()) { $userWatchesGroupStop = $userWatchesGroupStopRepository->getForUserAndGroup($user, $group); configureAppForSite($site); configureAppForUser($user); $userAccountGeneralSecurityKey = $userAccountGeneralSecurityKeyRepository->getForUser($user); $unsubscribeURL = $CONFIG->getWebIndexDomainSecure() . '/you/emails/' . $user->getId() . '/' . $userAccountGeneralSecurityKey->getAccessKey(); $lastEventsBuilder = new EventRepositoryBuilder(); $lastEventsBuilder->setSite($site); $lastEventsBuilder->setGroup($group); $lastEventsBuilder->setOrderByStartAt(true); $lastEventsBuilder->setIncludeDeleted(false); $lastEventsBuilder->setIncludeImported(false); $lastEventsBuilder->setLimit($CONFIG->userWatchesGroupPromptEmailShowEvents); $lastEvents = $lastEventsBuilder->fetchAll(); $message = \Swift_Message::newInstance(); $message->setSubject("Any news about " . $group->getTitle() . "?"); $message->setFrom(array($CONFIG->emailFrom => $CONFIG->emailFromName)); $message->setTo($user->getEmail()); $messageText = $app['twig']->render('email/userWatchesGroupPromptEmail.txt.twig', array('group' => $group, 'user' => $user, 'lastEvents' => $lastEvents, 'stopCode' => $userWatchesGroupStop->getAccessKey(), 'generalSecurityCode' => $userAccountGeneralSecurityKey->getAccessKey(), 'unsubscribeURL' => $unsubscribeURL)); if ($CONFIG->isDebug) { file_put_contents('/tmp/userWatchesGroupPromptEmail.txt', $messageText); } $message->setBody($messageText); $messageHTML = $app['twig']->render('email/userWatchesGroupPromptEmail.html.twig', array('group' => $group, 'user' => $user, 'lastEvents' => $lastEvents, 'stopCode' => $userWatchesGroupStop->getAccessKey(), 'generalSecurityCode' => $userAccountGeneralSecurityKey->getAccessKey(), 'unsubscribeURL' => $unsubscribeURL)); if ($CONFIG->isDebug) { file_put_contents('/tmp/userWatchesGroupPromptEmail.html', $messageHTML); } $message->addPart($messageHTML, 'text/html'); $headers = $message->getHeaders(); $headers->addTextHeader('List-Unsubscribe', $unsubscribeURL); if ($verbose) { print " ... sending\n"; } if (!$CONFIG->isDebug) { $app['mailer']->send($message); } $userNotificationRepo->markEmailed($userNotification); } $userWatchesGroupRepository->markPromptEmailSent($userWatchesGroup, $data['checkTime']); } } } } } } } if ($verbose) { print "Finished " . date("c") . "\n"; } }
function index($id, Request $request, Application $app) { $this->build($id, $request, $app); if ($request->request->get('action') == "addpermission" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $extension = $app['extensions']->getExtensionById($request->request->get("extension")); if ($extension) { $permission = $extension->getUserPermission($request->request->get("permission")); if ($permission) { $ugr = new UserGroupRepository(); $ugr->addPermissionToGroup($permission, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } } } else { if ($request->request->get('action') == "removepermission" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $extension = $app['extensions']->getExtensionById($request->request->get("extension")); if ($extension) { $permission = $extension->getUserPermission($request->request->get("permission")); if ($permission) { $ugr = new UserGroupRepository(); $ugr->removePermissionFromGroup($permission, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } } } } $form = $app['form.factory']->create(new ActionForm()); if ('POST' == $request->getMethod()) { $form->bind($request); if ($form->isValid()) { $data = $form->getData(); $action = new ActionParser($data['action']); if ($action->getCommand() == 'addusername') { $uar = new UserAccountRepository(); $user = $uar->loadByUserName($action->getParam(0)); if ($user) { $ugr = new UserGroupRepository(); $ugr->addUserToGroup($user, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } } else { if ($action->getCommand() == 'removeusername') { $uar = new UserAccountRepository(); $user = $uar->loadByUserName($action->getParam(0)); if ($user) { $ugr = new UserGroupRepository(); $ugr->removeUserFromGroup($user, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } } else { if ($action->getCommand() == 'includesanonymous') { $ugr = new UserGroupRepository(); $this->parameters['usergroup']->setIsIncludesAnonymous($action->getParamBoolean(0)); $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } else { if ($action->getCommand() == 'includesusers') { $ugr = new UserGroupRepository(); $this->parameters['usergroup']->setIsIncludesUsers($action->getParamBoolean(0)); $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } else { if ($action->getCommand() == 'includesverifiedusers') { $ugr = new UserGroupRepository(); $this->parameters['usergroup']->setIsIncludesVerifiedUsers($action->getParamBoolean(0)); $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId()); } } } } } } } $this->parameters['form'] = $form->createView(); $urb = new UserAccountRepositoryBuilder(); $urb->setInUserGroup($this->parameters['usergroup']); $this->parameters['users'] = $urb->fetchAll(); $r = new UserPermissionsRepository($app['extensions']); $this->parameters['userpermissions'] = $r->getPermissionsForUserGroup($this->parameters['usergroup'], false); $this->parameters['userpermissionstoadd'] = array(); foreach ($app['extensions']->getExtensionsIncludingCore() as $ext) { foreach ($ext->getUserPermissions() as $key) { $per = $ext->getUserPermission($key); if ($per->isForIndex() && !in_array($per, $this->parameters['userpermissions'])) { $this->parameters['userpermissionstoadd'][] = $per; } } } return $app['twig']->render('sysadmin/usergroup/index.html.twig', $this->parameters); }
function listUsers(Application $app) { $upr = new UserPermissionsRepository($app['extensions']); return $app['twig']->render('site/admin/listUsers.html.twig', array('userPermissionForAnonymous' => $upr->getPermissionsForAnonymousInSite($app['currentSite'], false, true)->getPermissions(), 'userPermissionForAnyUser' => $upr->getPermissionsForAnyUserInSite($app['currentSite'], false, true)->getPermissions(), 'userPermissionForAnyVerifiedUser' => $upr->getPermissionsForAnyVerifiedUserInSite($app['currentSite'], false, true)->getPermissions())); }
function users($id, Request $request, Application $app) { if (!$this->build($id, $request, $app)) { $app->abort(404, "User Group does not exist."); } if ($request->request->get('action') == "removeuser" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $ur = new UserAccountRepository(); $user = $ur->loadById($request->request->get('id')); if ($user) { $ugr = new UserGroupRepository(); $ugr->removeUserFromGroup($user, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } } else { if ($request->request->get('action') == "adduser" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $ur = new UserAccountRepository(); $user = $ur->loadByUserName($request->request->get('username')); if ($user) { $ugr = new UserGroupRepository(); $ugr->addUserToGroup($user, $this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { $app['flashmessages']->addError("Could not find user"); } } else { if ($request->request->get('action') == "removeanonymous" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesAnonymous(false); $ugr = new UserGroupRepository(); $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { if ($request->request->get('action') == "addanonymous" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesAnonymous(true); $ugr = new UserGroupRepository(); $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { if ($request->request->get('action') == "removeusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesUsers(false); $ugr = new UserGroupRepository(); $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { if ($request->request->get('action') == "addusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesUsers(true); $ugr = new UserGroupRepository(); $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { if ($request->request->get('action') == "removeverifiedusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesVerifiedUsers(false); $ugr = new UserGroupRepository(); $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } else { if ($request->request->get('action') == "addverifiedusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $this->parameters['usergroup']->setIsIncludesVerifiedUsers(true); $ugr = new UserGroupRepository(); $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']); return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users'); } } } } } } } } $urb = new UserAccountRepositoryBuilder(); $urb->setInUserGroup($this->parameters['usergroup']); $this->parameters['users'] = $urb->fetchAll(); $r = new UserPermissionsRepository($app['extensions']); $this->parameters['userpermissions'] = $r->getPermissionsForUserGroup($this->parameters['usergroup'], false); return $app['twig']->render('site/adminusergroup/users.html.twig', $this->parameters); }