#
# Copyright (C) 2000 - 2024 Silverpeas
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# As a special exception to the terms and conditions of version 3.0 of
# the GPL, you may redistribute this Program in connection with Free/Libre
# Open Source Software ("FLOSS") applications as described in Silverpeas's
# FLOSS exception.  You should have received a copy of the text describing
# the FLOSS exception, and it is also available here:
# "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

# Can the notification to users be sent through several channels?
multiChannelNotification = false

# The notification channels enabled by default. If several channels are specified here, then the
# property multiChannelNotification should be set to true otherwise only the first one will be taken
# as the default channel.
# The different possible notification channels are:
# - BASIC_POPUP: the notification appears to the user within a popup,
# - BASIC_REMOVE: the notification is trapped,
# - BASIC_SILVERMAIL: the notification is sent to the notification box of the user in Silverpeas
# - BASIC_SMTP_MAIL: the notification is sent by email to the user (its email address has to be set
# in his profile)
notif.defaultChannels = BASIC_SMTP_MAIL

addReceiversInBody = false

# si true : le nom du groupe est affich\u00e9 (et non les noms de tous les utilisateurs du groupe)  (value true/false)
notif.receiver.displayGroup = false
# actif uniquement si displayGroup = false : Si le groupe contient plus de "displayUser.threshold" utilisateurs alors le nom du groupe est affich\u00e9
notif.receiver.displayUser.threshold = 20

# Code de la fr\u00e9quence, les valeurs suivantes sont possibles :
# - N, none : aucune (instantan\u00e9e)
# - D, daily : quotidienne
# - W, weekly : hebdomadaire
# - M, monthly : mensuelle
# N par d\u00e9faut, si la valeur n'est pas renseign\u00e9e.
DEFAULT_DELAYED_NOTIFICATION_FREQUENCY = N

# Liste des fr\u00e9quences propos\u00e9es s\u00e9par\u00e9es par des virgules.
# Les valeurs possibles sont les suivantes :
# - "" : (vide) l'utilisateur n'a pas le choix, la fr\u00e9quence est celle par d\u00e9finie d\u00e9faut (cf. DEFAULT_DELAYED_NOTIFICATION_FREQUENCY)
# - * : toutes les fr\u00e9quences sont propos\u00e9es
# - N : cf. DEFAULT_DELAYED_NOTIFICATION_FREQUENCY
# - D : cf. DEFAULT_DELAYED_NOTIFICATION_FREQUENCY
# - W : cf. DEFAULT_DELAYED_NOTIFICATION_FREQUENCY
# - M : cf. DEFAULT_DELAYED_NOTIFICATION_FREQUENCY
# Dans tous les cas, la valeur de DEFAULT_DELAYED_NOTIFICATION_FREQUENCY est propos\u00e9e, il n'est donc pas n\u00e9cessaire de l'indiquer dans cette liste.
# Toutes les valeurs incorrectes sont ignor\u00e9es.
DELAYED_NOTIFICATION_FREQUENCY_CHOICE_LIST = *

# Par d\u00e9faut, le batch d'envoi des notifications avec fr\u00e9quence de r\u00e9ception est lanc\u00e9 tous les jours \u00e0 00h30.
# La syntaxe est celle de CRON sous unix.
# Aucune valeur renseign\u00e9e d\u00e9sactive le batch.
cronDelayedNotificationSending = 30 0 * * *

# Param\u00e8tre permettant de d\u00e9finir un nombre de destinataires limite pour les notifications manuelles.
# Si la valeur est un entier positif, alors la limitation est active.
# Sinon, il n'y a pas de limitation (cas par d\u00e9faut).
notif.manual.receiver.limit = 0

# Permits to manage UI and displays simple details instead of displaying all recipient details
# when the total number of recipient exceed the given value.
# Integer value. Less or equal to ZERO means no management. By default, 15.
notif.manual.ui.simpleDetails.whenRecipientTotalExceed = 15

# If enabled, the sender must be removed from the list of receivers of a subscription notification.
notification.subscription.removeSenderFromReceivers.enabled = true

# If enabled, the user can confirm if a subscription notification must be performed or not on a contribution update.
notification.subscription.confirmation.enabled = true

# The trigger in seconds of SSE communication JOBs (seconds)
# 0 or less to deactivate it
notification.sse.job.trigger = 45

# The timeout of asynchronous context of SSE communication (seconds)
# Cannot be deactivated.
notification.sse.async.timeout = 180

# Treatment sends on SSE requests a check to previous sse context opened with same session id.
# Enabled by default.
notification.sse.async.previous.check = true

# Maximum size of the pool of threads in charge of sending data to clients
# One, zero or negative value deactivates the pool.
notification.sse.send.thread.pool.max = 0

# True to enable SSE
# It exists two SSE event for now (listed by event name):
# - USER_SESSION : sent to all connected users after a session login or session logout.
# - USER_NOTIFICATION : sent to aimed users by a user notification. Sent also to manage
#                       the UI of Silverpeas's notification box.
notification.sse.enabled = true

# True to use SSE via WebSocket protocol.
# Disabled by default
# If enabled, please taking care about reverse proxy configuration about Silverpeas's WebSocket.
# For example, add following line for apache configuration:
#       ProxyPass /silverpeas/ws ws://127.0.0.1:8000/silverpeas/ws
# All Silverpeas's WebSockets are behind the endpoint URI prefix '/silverpeas/ws'.
notification.sse.usingWebSocket = false

# Timeout after that a sending is ignored (in ms)
# 0 means no timeout.
notification.sse.websocket.send.timeout = 180000

# The lifetime of an event stored into memory of SSE communication (seconds)
# Cannot be deactivated and under 40 seconds.
notification.sse.store.event.lifetime = 40

# False value on this parameter to avoid the handling of the SSE event.
# Can be useful when a lot of users are connected at a same time.
# Here an example of the structure of the parameter, the X part must be changed with an
# existing event name.
# Compatible event names:
# - USER_SESSION
# - USER_NOTIFICATION
notification.sse.event.X.enabled = false

# ServerEvent implementations using behavior SendEveryAmountOfTime can be managed in order
# to limit the number of send on the time.
# When a first such event is sent a JOB is initialized to be triggered every the specified amount of seconds.
# Each time the JOB is triggered, the last event is sent.
# If not defined event is sent immediately. A good compromise could be 60s.
# Here an example of the structure of the parameter, the X part must be changed with an
# existing event name.
# Compatible event names:
# - USER_SESSION
notification.sse.X.send.every = 60

# Is the name of the space should be set in the source of notification when the source wasn't yet
# explicitly set?
notification.source.spaceLabel = true

# Is the name of the component instance within which the notification is sent should be set in the
# source of that notification when this property isn't yet explicitly set.
notification.source.componentLabel = true