Elgg  Version 6.2
MakeAdminUserEventHandler.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Notifications;
4 
6 
13 
21  protected function recipientIsChangedUser(\ElggUser $recipient): bool {
22  return $this->getEventEntity()?->guid === $recipient->guid;
23  }
24 
28  protected function getNotificationSubject(\ElggUser $recipient, string $method): string {
29  if ($this->recipientIsChangedUser($recipient)) {
30  return elgg_echo('admin:notification:make_admin:user:subject', [elgg_get_site_entity()->getDisplayName()]);
31  }
32 
33  return elgg_echo('admin:notification:make_admin:admin:subject', [elgg_get_site_entity()->getDisplayName()]);
34  }
35 
39  protected function getNotificationBody(\ElggUser $recipient, string $method): string {
40  $actor = $this->getEventActor();
41  if (!$actor instanceof \ElggUser) {
42  return parent::getNotificationBody($recipient, $method);
43  }
44 
46 
47  if ($this->recipientIsChangedUser($recipient)) {
48  return elgg_echo('admin:notification:make_admin:user:body', [
50  $site->getDisplayName(),
51  $site->getURL(),
52  ]);
53  }
54 
55  $entity = $this->getEventEntity();
56 
57  return elgg_echo('admin:notification:make_admin:admin:body', [
59  $entity?->getDisplayName(),
60  $site->getDisplayName(),
61  $entity?->getURL(),
62  ]);
63  }
64 
68  protected function getNotificationURL(\ElggUser $recipient, string $method): string {
69  if ($this->recipientIsChangedUser($recipient)) {
70  return elgg_generate_url('admin');
71  }
72 
73  return elgg_generate_url('admin', ['segments' => 'users/admins']);
74  }
75 
79  protected function addMuteLink(): bool {
80  return false;
81  }
82 
88  public function getSubscriptions(): array {
89  $result = parent::getSubscriptions();
90 
91  $user = $this->getEventEntity();
92 
93  if ($user instanceof \ElggUser && _elgg_services()->config->security_notify_user_admin) {
94  // add the user to the subscribers
95  $result[$user->guid] = ['email'];
96  }
97 
98  if (_elgg_services()->config->security_notify_admins) {
99  // add the current site admins to the subscribers
100  $admin_batch = elgg_get_admins([
101  'limit' => false,
102  'wheres' => [
103  function (QueryBuilder $qb, $main_alias) use ($user) {
104  return $qb->compare("{$main_alias}.guid", '!=', $user?->guid, ELGG_VALUE_GUID);
105  },
106  ],
107  'batch' => true,
108  ]);
109 
110  foreach ($admin_batch as $admin) {
111  $result[$admin->guid] = ['email'];
112  }
113  }
114 
115  return $result;
116  }
117 
121  public static function isConfigurableByUser(): bool {
122  return false;
123  }
124 }
$site
Definition: icons.php:5
$entity
Definition: reset.php:8
$recipient
Definition: mute.php:8
$admin
Definition: useradd.php:19
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:73
$user
Definition: ban.php:7
getDisplayName()
Get the entity's display name.
Definition: ElggEntity.php:306
Database abstraction query builder.
Notification Event Handler for 'user' 'user' 'make_admin' action.
recipientIsChangedUser(\ElggUser $recipient)
Tells if the recipient is the user being changed.
getNotificationSubject(\ElggUser $recipient, string $method)
{Get subject for the notification.Plugins can define a subtype specific subject simply by providing a...
getNotificationURL(\ElggUser $recipient, string $method)
{Returns the url related to this notification.Notification recipient Methodstring}
static isConfigurableByUser()
{Is this event configurable by the user on the notification settings page.bool}
getNotificationBody(\ElggUser $recipient, string $method)
{Get body for the notification.Plugin can define a subtype specific body simply by providing a transl...
addMuteLink()
{Add a mute link in the email notification.bool}
getSubscriptions()
Add the user to the subscribers when changing admin rights.
Notification Event Handler handles preparation of a notification.
getEventEntity()
Get the entity from the notification event.
const ELGG_VALUE_GUID
Definition: constants.php:113
_elgg_services()
Get the global service provider.
Definition: elgglib.php:353
elgg_get_admins(array $options=[])
Elgg admin functions.
Definition: admin.php:26
elgg_get_site_entity()
Get the current site entity.
Definition: entities.php:101
elgg_echo(string $message_key, array $args=[], string $language='')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
$qb
Definition: queue.php:12
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
Definition: robots.php:10
if(($owner instanceof \ElggGroup|| $owner instanceof \ElggUser) &&!in_array($owner->guid, $mute_guids)) $actor
Definition: mute.php:78