7 use Elgg\Traits\Loggable;
69 if (!is_a(
$handler, NotificationEventHandler::class,
true)) {
73 if (!isset($this->events[
$type])) {
74 $this->events[
$type] = [];
114 if (empty($this->events[
$type])) {
115 unset($this->events[
$type]);
163 if (!$this->isRegisteredMethod(
$name)) {
167 unset($this->methods[
$name]);
188 return in_array($method, $this->methods);
201 $object_type =
$object->getType();
202 $object_subtype =
$object->getSubtype();
209 $registered = $this->isRegisteredEvent($object_type, $object_subtype,
$action);
215 $handler = $this->getNotificationHandler($event);
216 if (
$handler instanceof InstantNotificationEventHandler) {
226 $registered = (bool) $this->elgg_events->triggerResults(
'enqueue',
'notification',
$params, $registered);
231 $this->elgg_events->trigger(
'enqueue',
'notifications',
$object);
232 $this->queue->enqueue($event);
245 $handler = NotificationEventHandler::class;
264 $delivery_matrix = [];
268 while (time() < $stopTime) {
272 return $this->queue->dequeue();
285 $this->elgg_events->trigger(
'dequeue',
'notifications', $event->
getObject());
287 $handler = $this->getNotificationHandler($event);
296 }
catch (\Throwable $t) {
297 $this->getLogger()->error($t);
301 return $matrix ? $delivery_matrix :
$count;
342 if (empty($this->methods)) {
352 $handler->setRecipients($recipients);
371 if (empty($this->methods)) {
if(! $user||! $user->canDelete()) $name
$params
Saves global plugin settings.
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'=>[],]
A generic class that contains shared code among \ElggExtender, \ElggEntity, and \ElggRelationship.
Exception thrown if an argument is not of the expected type.
Notification Event Handler for instant notifications.
Instant notification event.
Notification Event Handler handles preparation of a notification.
enqueueEvent(string $action, \ElggData $object, ?\ElggEntity $actor=null)
Add a notification event to the queue.
sendInstantNotifications(\ElggEntity $sender, array $recipients=[], array $params=[])
Notify a user via their preferences.
isRegisteredEvent(string $type, string $subtype, string $action)
Check if a notification event is registered.
unregisterMethod(string $name)
Unregister a delivery method for notifications.
getEvents()
Return the notification events.
sendInstantNotification(\ElggUser $recipient, string $action, \ElggData $subject, array $params=[], ?\ElggEntity $from=null)
Send an instant notification to a user.
registerEvent(string $type, string $subtype, array $actions=[], string $handler=NotificationEventHandler::class)
Register a notification event.
__construct(Queue $queue, \ElggSession $session, EventsService $elgg_events)
Constructor.
isRegisteredMethod(string $method)
Check if a notification method is registed.
registerMethod(string $name)
Register a delivery method for notifications.
getNotificationHandler(NotificationEvent $event, array $params=[])
Returns notification event handler based on event.
unregisterEvent(string $type, string $subtype, array $actions=[])
Unregister a notification event.
processQueue(int $stopTime, bool $matrix=false)
Pull notification events from queue until stop time is reached.
getMethods()
Returns registered delivery methods for notifications.
const ELGG_IGNORE_ACCESS
elgg_call() flags
const ELGG_SHOW_DISABLED_ENTITIES
if($email instanceof \Elgg\Email) $object
$subject
HTML body of an email.
elgg_call(int $flags, Closure $closure)
Calls a callable autowiring the arguments using public DI services and applying logic based on flags.
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
elgg_get_site_entity()
Get the current site entity.
Notification event interface.
getDescription()
Get a description of the event.
getActor()
Get the actor of the event.
getAction()
Get the name of the action.
getObject()
Get the object of the event.
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
elgg_get_logged_in_user_entity()
Return the current logged in user, or null if no user is logged in.
if(! $menu instanceof \Elgg\Menu\PreparedMenu) $actions