Class NotificationUtils
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringName the CalDAV connector registers itself under in a user's connected accounts.static final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.model.Event> static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.model.EventReminder> static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<List> static final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.ArgumentLiteral<String> static final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.ArgumentLiteral<Long> static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<ZonedDateTime> static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<Long> static final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.PluginKeystatic final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.constant.EventAttendeeResponse> static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final String -
Method Summary
Modifier and TypeMethodDescriptionstatic final org.exoplatform.commons.api.notification.model.MessageInfobuildMessageSubjectAndBody(org.exoplatform.commons.api.notification.service.template.TemplateContext templateContext, org.exoplatform.commons.api.notification.model.NotificationInfo notification, String pushNotificationURL) static final org.exoplatform.commons.api.notification.service.template.TemplateContextbuildTemplateDatePollParameters(org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification) static final org.exoplatform.commons.api.notification.service.template.TemplateContextbuildTemplateParameters(String username, org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.agenda.service.AgendaEventAttendeeService agendaEventAttendeeService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone) static final org.exoplatform.commons.api.notification.service.template.TemplateContextbuildTemplateReminderParameters(org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone) static final org.exoplatform.commons.api.notification.service.template.TemplateContextbuildTemplateReplyParameters(org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone, boolean isCreator) static Stringstatic final longgetEventId(org.exoplatform.commons.api.notification.NotificationContext ctx) static final longgetEventReminderId(org.exoplatform.commons.api.notification.NotificationContext ctx) static StringgetEventURL(long eventId) The absolute link that opens one event in eXo.static StringgetEventURL(org.exoplatform.agenda.model.Event event) static StringgetEventURL(org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId) static StringgetRecurrenceDetails(org.exoplatform.agenda.model.Event event) static StringgetResponseURL(org.exoplatform.agenda.service.AgendaEventAttendeeService agendaEventAttendeeService, long eventId, String username, org.exoplatform.agenda.constant.EventAttendeeResponse response) static StringgetWebConferenceLink(org.exoplatform.agenda.model.Event event) static StringgetWebEventURL(org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId) static final voidsetEventReminderNotificationRecipients(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, Long... receiverIds) static final voidsetNotificationRecipients(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.social.core.space.spi.SpaceService spaceService, List<org.exoplatform.agenda.model.EventAttendee> eventAttendees, org.exoplatform.agenda.model.Event event, String typeModification, long modifierId) static booleanshouldAttachIcsFile(long recipientIdentityId, org.exoplatform.agenda.model.AgendaUserSettings recipientSettings) Whether theevent.icsfile must be attached to the notification built for this recipient.static final voidstoreEventParameters(org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, org.exoplatform.agenda.model.Calendar calendar) static final voidstoreEventParameters(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId, long participantId, org.exoplatform.agenda.constant.EventAttendeeResponse response, org.exoplatform.agenda.model.Calendar calendar, org.exoplatform.agenda.service.AgendaEventAttendeeService eventAttendeeService, org.exoplatform.social.core.space.spi.SpaceService spaceService) static final voidstoreEventParameters(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, org.exoplatform.agenda.model.Calendar calendar, String typeModification)
-
Field Details
-
EVENT_AGENDA
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.model.Event> EVENT_AGENDA -
EVENT_ATTENDEE
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<List> EVENT_ATTENDEE -
EVENT_MODIFIER
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<Long> EVENT_MODIFIER -
EVENT_MODIFICATION_TYPE
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<String> EVENT_MODIFICATION_TYPE -
EVENT_AGENDA_REMINDER
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.model.EventReminder> EVENT_AGENDA_REMINDER -
EVENT_PARTICIPANT_ID
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<Long> EVENT_PARTICIPANT_ID -
EVENT_RESPONSE
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<org.exoplatform.agenda.constant.EventAttendeeResponse> EVENT_RESPONSE -
EVENT_OCCURRENCE_ID
public static final org.exoplatform.commons.api.notification.model.ArgumentLiteral<ZonedDateTime> EVENT_OCCURRENCE_ID -
AGENDA_EVENT_ADDED_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_EVENT_MODIFIED_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_EVENT_CANCELLED_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_REMINDER_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_REPLY_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_DATE_POLL_NOTIFICATION_PLUGIN
- See Also:
-
AGENDA_VOTE_NOTIFICATION_PLUGIN
- See Also:
-
EVENT_ADDED_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_ADDED_KEY -
EVENT_MODIFIED_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_MODIFIED_KEY -
EVENT_CANCELLED_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_CANCELLED_KEY -
EVENT_REMINDER_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_REMINDER_KEY -
EVENT_REPLY_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_REPLY_KEY -
EVENT_DATE_POLL_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_DATE_POLL_KEY -
EVENT_DATE_VOTE_KEY
public static final org.exoplatform.commons.api.notification.model.PluginKey EVENT_DATE_VOTE_KEY -
STORED_PARAMETER_EVENT_TITLE
- See Also:
-
STORED_PARAMETER_EVENT_DESCRIPTION
- See Also:
-
STORED_PARAMETER_EVENT_LOCATION
- See Also:
-
STORED_PARAMETER_EVENT_OWNER_ID
- See Also:
-
STORED_PARAMETER_EVENT_ID
- See Also:
-
STORED_PARAMETER_EVENT_MODIFIER
- See Also:
-
STORED_PARAMETER_EVENT_CREATOR
- See Also:
-
STORED_PARAMETER_EVENT_URL
- See Also:
-
STORED_PARAMETER_WEB_EVENT_URL
- See Also:
-
STORED_PARAMETER_EVENT_OCCURRENCE_ID
- See Also:
-
STORED_EVENT_MODIFICATION_TYPE
- See Also:
-
STORED_PARAMETER_MODIFIER_IDENTITY_ID
- See Also:
-
STORED_PARAMETER_EVENT_START_DATE
- See Also:
-
STORED_PARAMETER_EVENT_END_DATE
- See Also:
-
STORED_PARAMETER_EVENT_TIMEZONE_NAME
- See Also:
-
STORED_PARAMETER_EVENT_ATTENDEES
- See Also:
-
STORED_PARAMETER_EVENT_CONFERENCE
- See Also:
-
STORED_PARAMETER_EVENT_RECURRENT_DETAILS
- See Also:
-
STORED_PARAMETER_EVENT_PARTICIPANT_NAME
- See Also:
-
STORED_PARAMETER_EVENT_PARTICIPANT_AVATAR_URL
- See Also:
-
STORED_PARAMETER_EVENT_RESPONSE
- See Also:
-
STORED_PARAMETER_EVENT_STATUS
- See Also:
-
STORED_PARAMETER_EVENT_IS_CREATOR
- See Also:
-
TEMPLATE_VARIABLE_EVENT_ID
- See Also:
-
TEMPLATE_VARIABLE_EVENT_TITLE
- See Also:
-
TEMPLATE_VARIABLE_EVENT_LOCATION
- See Also:
-
TEMPLATE_VARIABLE_EVENT_DESCRIPTION
- See Also:
-
TEMPLATE_VARIABLE_EVENT_RECURRENT_DETAILS
- See Also:
-
CALDAV_PROVIDER_NAME
Name the CalDAV connector registers itself under in a user's connected accounts. Duplicated from the add-on's own constant on purpose: CalDAV depends on agenda, so the dependency cannot be taken the other way round.- See Also:
-
-
Method Details
-
getEventId
public static final long getEventId(org.exoplatform.commons.api.notification.NotificationContext ctx) -
getEventReminderId
public static final long getEventReminderId(org.exoplatform.commons.api.notification.NotificationContext ctx) -
setNotificationRecipients
public static final void setNotificationRecipients(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.social.core.space.spi.SpaceService spaceService, List<org.exoplatform.agenda.model.EventAttendee> eventAttendees, org.exoplatform.agenda.model.Event event, String typeModification, long modifierId) -
setEventReminderNotificationRecipients
public static final void setEventReminderNotificationRecipients(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, Long... receiverIds) -
storeEventParameters
public static final void storeEventParameters(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, org.exoplatform.agenda.model.Calendar calendar, String typeModification) -
storeEventParameters
public static final void storeEventParameters(org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, org.exoplatform.agenda.model.Calendar calendar) -
storeEventParameters
public static final void storeEventParameters(org.exoplatform.social.core.manager.IdentityManager identityManager, org.exoplatform.commons.api.notification.model.NotificationInfo notification, org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId, long participantId, org.exoplatform.agenda.constant.EventAttendeeResponse response, org.exoplatform.agenda.model.Calendar calendar, org.exoplatform.agenda.service.AgendaEventAttendeeService eventAttendeeService, org.exoplatform.social.core.space.spi.SpaceService spaceService) -
getDefaultSite
-
buildTemplateParameters
public static final org.exoplatform.commons.api.notification.service.template.TemplateContext buildTemplateParameters(String username, org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.agenda.service.AgendaEventAttendeeService agendaEventAttendeeService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone) -
buildTemplateReminderParameters
public static final org.exoplatform.commons.api.notification.service.template.TemplateContext buildTemplateReminderParameters(org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone) -
buildTemplateReplyParameters
public static final org.exoplatform.commons.api.notification.service.template.TemplateContext buildTemplateReplyParameters(org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification, ZoneId timeZone, boolean isCreator) -
buildTemplateDatePollParameters
public static final org.exoplatform.commons.api.notification.service.template.TemplateContext buildTemplateDatePollParameters(org.exoplatform.social.core.space.spi.SpaceService spaceService, org.exoplatform.commons.api.notification.channel.template.TemplateProvider templateProvider, org.exoplatform.commons.api.notification.model.NotificationInfo notification) -
buildMessageSubjectAndBody
public static final org.exoplatform.commons.api.notification.model.MessageInfo buildMessageSubjectAndBody(org.exoplatform.commons.api.notification.service.template.TemplateContext templateContext, org.exoplatform.commons.api.notification.model.NotificationInfo notification, String pushNotificationURL) -
getEventURL
The absolute link that opens one event in eXo.This is the single definition of the shape of that link, and it is the one every notification mail's deep link has always used. EXO-89751 made it an overload of its own so that the iCalendar documents eXo writes — the file attached to the invitation mail, and the copy pushed into a user's own calendar over CalDAV — can render the very same string as the mail body they arrive with, from the event alone, without a caller having to pass one in. That is the property the whole ticket turns on: a value derived from the event is the same on a browser push, on a sweep and on a repair, so the link is written once and never stripped by the next repair.
- Parameters:
eventId- technical identifier of the event- Returns:
- the absolute link, ending in
agenda?eventId=<id>
-
getEventURL
public static String getEventURL(org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId) -
getWebEventURL
public static String getWebEventURL(org.exoplatform.agenda.model.Event event, ZonedDateTime occurrenceId) -
getEventURL
-
getResponseURL
-
getRecurrenceDetails
-
getWebConferenceLink
-
shouldAttachIcsFile
public static boolean shouldAttachIcsFile(long recipientIdentityId, org.exoplatform.agenda.model.AgendaUserSettings recipientSettings) Whether theevent.icsfile must be attached to the notification built for this recipient.A recipient who keeps a CalDAV account connected with meeting copies on ends up holding the same meeting twice: once as the copy eXo pushes into their "eXo Meetings" calendar, once if they open the file attached to their mail. The two documents carry different UIDs, so no client can tell they are the same meeting and neither replaces the other. The file is the redundant one — it is the poorer document (no ATTENDEE, no PARTSTAT, no recurrence, no alarms) and the copy arrives whether it is opened or not — so it is the one that goes.
This is a prediction, not an observation, and deliberately so. The invitation is dispatched synchronously inside event creation (
AgendaEventServiceImpl.createEventtoAgendaEventAttendeeServiceImpl.sendInvitations) while an attendee's copy is written only by the five-minute CalDAV sweep. At the moment this runs the copy does not exist yet — measured on the rig, notification at 21:36:19Z and copy at 21:40:16Z — so "does a copy exist" is unanswerable here and asking it would be a race. The question answered instead is "will this user hold a copy", read from the user's own settings. It is wrong for a user whose CalDAV server has been unreachable for a long time; that user loses the attachment, but they are already receiving none of their meetings, and they can still see the event in eXo and answer from the links in the mail, which this does not touch.A guest is never suppressed, under any condition: a guest has no copy by definition, and the attachment is their only way to get the meeting at all. Two independent things guarantee it here — a guest is a
AgendaGuestUserIdentityProvideridentity, so it never resolves to an organization identity and reaches this method with an id of 0; and having no connected account, its default settings fail the connector test as well.- Parameters:
recipientIdentityId- organization identity id of the recipient, 0 when the recipient is not an internal user (a guest)recipientSettings- agenda settings of that recipient, possibly null- Returns:
- true when the file must be attached, which is every case but the connected-with-copies one
-