protected function run() { $siteRepoBuilder = new SiteRepositoryBuilder(); $siteRepoBuilder->setIsOpenBySysAdminsOnly(true); $countCheck = 0; $countSend = 0; foreach ($siteRepoBuilder->fetchAll() as $site) { $this->logVerbose("Site " . $site->getSlug()); $userRepoBuilder = new UserAccountRepositoryBuilder(); $userRepoBuilder->setIsOpenBySysAdminsOnly(true); foreach ($userRepoBuilder->fetchAll() as $userAccount) { $this->logVerbose("User " . $userAccount->getId()); ++$countCheck; $checkTime = \TimeSource::getDateTime(); $contentsToSend = array(); foreach ($this->app['extensions']->getExtensionsIncludingCore() as $extension) { $contentsToSend = array_merge($contentsToSend, $extension->getUserNotifyContents($site, $userAccount)); } if ($contentsToSend) { $this->logVerbose("Found contents!"); ++$countSend; $this->makeSureHistoriesAreCorrect($contentsToSend); $this->sendFor($site, $userAccount, $contentsToSend); foreach ($contentsToSend as $contentToSend) { $contentToSend->markNotificationSent($checkTime); } } else { $this->logVerbose("found nothing"); } } } return array('result' => 'ok', 'countCheck' => $countCheck, 'countSend' => $countSend); }
protected function run() { global $CONFIG; $userRepoBuilder = new UserAccountRepositoryBuilder(); $userAccountGeneralSecurityKeyRepository = new UserAccountGeneralSecurityKeyRepository(); $userNotificationRepo = new UserNotificationRepository(); /** @var usernotifications/UpcomingEventsUserNotificationType **/ $userNotificationType = $this->app['extensions']->getCoreExtension()->getUserNotificationType('UpcomingEvents'); configureAppForThemeVariables(null); foreach ($userRepoBuilder->fetchAll() as $user) { $this->logVerbose(" User " . $user->getEmail()); $this->logVerbose(" ... searching"); list($upcomingEvents, $allEvents, $userAtEvent, $flag) = $user->getDataForUpcomingEventsEmail(); if ($flag) { $this->logVerbose(" ... found data"); /** Notification Class * @var usernotifications/UpcomingEventsUserNotificationModel **/ $userNotification = $userNotificationType->getNewNotification($user, null); $userNotification->setUpcomingEvents($upcomingEvents); $userNotification->setAllEvents($allEvents); ////// Save Notification Class $userNotificationRepo->create($userNotification); ////// Send Email if ($userNotification->getIsEmail()) { configureAppForUser($user); $userAccountGeneralSecurityKey = $userAccountGeneralSecurityKeyRepository->getForUser($user); $unsubscribeURL = $CONFIG->getWebIndexDomainSecure() . '/you/emails/' . $user->getId() . '/' . $userAccountGeneralSecurityKey->getAccessKey(); $message = \Swift_Message::newInstance(); $message->setSubject("Events coming up"); $message->setFrom(array($CONFIG->emailFrom => $CONFIG->emailFromName)); $message->setTo($user->getEmail()); $messageText = $this->app['twig']->render('email/upcomingEventsForUser.txt.twig', array('user' => $user, 'upcomingEvents' => $upcomingEvents, 'allEvents' => $allEvents, 'userAtEvent' => $userAtEvent, 'generalSecurityCode' => $userAccountGeneralSecurityKey->getAccessKey(), 'currentTimeZone' => 'Europe/London', 'unsubscribeURL' => $unsubscribeURL)); if ($CONFIG->isDebug) { file_put_contents('/tmp/upcomingEventsForUser.txt', $messageText); } $message->setBody($messageText); $messageHTML = $this->app['twig']->render('email/upcomingEventsForUser.html.twig', array('user' => $user, 'upcomingEvents' => $upcomingEvents, 'allEvents' => $allEvents, 'userAtEvent' => $userAtEvent, 'generalSecurityCode' => $userAccountGeneralSecurityKey->getAccessKey(), 'currentTimeZone' => 'Europe/London', 'unsubscribeURL' => $unsubscribeURL)); if ($CONFIG->isDebug) { file_put_contents('/tmp/upcomingEventsForUser.html', $messageHTML); } $message->addPart($messageHTML, 'text/html'); $headers = $message->getHeaders(); $headers->addTextHeader('List-Unsubscribe', $unsubscribeURL); $this->logVerbose(" ... sending"); if (!$CONFIG->isDebug) { $this->app['mailer']->send($message); } $userNotificationRepo->markEmailed($userNotification); } } } return array('result' => 'ok'); }
function curators($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "curatedlist does not exist."); } $userAccountRepository = new \org\openacalendar\curatedlists\repositories\UserAccountRepository(); $this->parameters['curatedlistOwner'] = $userAccountRepository->loadByOwnerOfCuratedList($this->parameters['curatedlist']); if ($this->parameters['actionCuratedListEditCurators'] && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { if ($request->request->get('submitted') == 'add') { $newUser = $userAccountRepository->loadByUserName($request->request->get('userdetails')); if ($newUser) { $curatedListRepo = new CuratedListRepository(); $curatedListRepo->addEditorToCuratedList($newUser, $this->parameters['curatedlist'], $app['currentUser']); $app['flashmessages']->addMessage("Added"); } else { $app['flashmessages']->addError("Could not find that user"); // TODO put error in form instead, in usual field error place } } else { if ($request->request->get('submitted') == 'remove') { $oldUser = $userAccountRepository->loadByUserName($request->request->get('username')); if ($oldUser) { $curatedListRepo = new CuratedListRepository(); $curatedListRepo->removeEditorFromCuratedList($oldUser, $this->parameters['curatedlist'], $app['currentUser']); $app['flashmessages']->addMessage("Removed"); } } } } $userRepoBuilder = new UserAccountRepositoryBuilder(); $userRepoBuilder->canEditNotOwnCuratedList($this->parameters['curatedlist']); $this->parameters['curatedlistEditors'] = $userRepoBuilder->fetchAll(); return $app['twig']->render('site/curatedlist/curators.html.twig', $this->parameters); }
function listUsersNotEditors(Application $app, Request $request) { $repo = new UserHasNoEditorPermissionsInSiteRepository(); if ($request->request->get('action') == "add" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $ur = new UserAccountRepository(); $user = $ur->loadByUserName($request->request->get('username')); if ($user) { $repo->addUserToSite($user, $app['currentSite'], $app['currentUser']); return $app->redirect('/admin/usernoteditor/'); } } else { if ($request->request->get('action') == "remove" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $ur = new UserAccountRepository(); $user = $ur->loadByID($request->request->get('id')); if ($user) { $repo->removeUserFromSite($user, $app['currentSite'], $app['currentUser']); return $app->redirect('/admin/usernoteditor/'); } } } $userAccountRepoBuilder = new UserAccountRepositoryBuilder(); $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($app['currentSite']); return $app['twig']->render('site/admin/listUsersNotEditors.html.twig', array('users' => $userAccountRepoBuilder->fetchAll())); }
function listUsersNotEditors($siteid, Request $request, Application $app) { global $CONFIG; $this->build($siteid, $request, $app); $userAccountRepoBuilder = new UserAccountRepositoryBuilder(); $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($this->parameters['site']); $this->parameters['users'] = $userAccountRepoBuilder->fetchAll(); $this->parameters['featureActive'] = $CONFIG->isSingleSiteMode ? false : true; return $app['twig']->render('sysadmin/site/usersnoteditors.html.twig', $this->parameters); }
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 watchers($siteid, $slug, Request $request, Application $app) { $this->build($siteid, $slug, $request, $app); $uarb = new UserAccountRepositoryBuilder(); $uarb->setWatchesGroup($this->parameters['group']); $this->parameters['watchers'] = $uarb->fetchAll(); return $app['twig']->render('sysadmin/group/watchers.html.twig', $this->parameters); }
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); }
function index(Request $request, Application $app) { $erb = new UserAccountRepositoryBuilder(); $users = $erb->fetchAll(); return $app['twig']->render('sysadmin/userlist/index.html.twig', array('users' => $users)); }
public function markDuplicateWithMetaData(GroupModel $duplicateGroup, GroupModel $originalGroup, GroupEditMetaDataModel $groupEditMetaDataModel) { global $DB; if ($duplicateGroup->getId() == $originalGroup->getId()) { return; } try { $DB->beginTransaction(); $duplicateGroup->setIsDeleted(true); $duplicateGroup->setIsDuplicateOfId($originalGroup->getId()); $this->groupDBAccess->update($duplicateGroup, array('is_deleted', 'is_duplicate_of_id'), $groupEditMetaDataModel); // Users Watching Group $ufgr = new UserWatchesGroupRepository(); $usersRepo = new UserAccountRepositoryBuilder(); $usersRepo->setWatchesGroup($duplicateGroup); foreach ($usersRepo->fetchAll() as $user) { $ufgr->startUserWatchingGroupIfNotWatchedBefore($user, $originalGroup); } // Events in Group $statCheck = $DB->prepare("SELECT * FROM event_in_group WHERE group_id=:group_id AND " . " event_id=:event_id AND removed_at IS NULL "); $statAdd = $DB->prepare("INSERT INTO event_in_group (group_id,event_id,added_by_user_account_id,added_at,addition_approved_at,is_main_group) " . "VALUES (:group_id,:event_id,:added_by_user_account_id,:added_at,:addition_approved_at,:is_main_group)"); $erb = new EventRepositoryBuilder(); $erb->setGroup($duplicateGroup); foreach ($erb->fetchAll() as $event) { // check event not already in list $statCheck->execute(array('group_id' => $originalGroup->getId(), 'event_id' => $event->getId())); if ($statCheck->rowCount() == 0) { // TODO is_main_group ?????????????????? $statAdd->execute(array('group_id' => $originalGroup->getId(), 'event_id' => $event->getId(), 'is_main_group' => 0, 'added_by_user_account_id' => $user ? $user->getId() : null, 'added_at' => \TimeSource::getFormattedForDataBase(), 'addition_approved_at' => \TimeSource::getFormattedForDataBase())); } } $DB->commit(); } catch (Exception $e) { $DB->rollBack(); } }