aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status')
-rw-r--r--apps/user_status/l10n/bg.js14
-rw-r--r--apps/user_status/l10n/bg.json14
-rw-r--r--apps/user_status/l10n/es_AR.js22
-rw-r--r--apps/user_status/l10n/es_AR.json20
-rw-r--r--apps/user_status/l10n/hu.js2
-rw-r--r--apps/user_status/l10n/hu.json2
-rw-r--r--apps/user_status/l10n/lo.js24
-rw-r--r--apps/user_status/l10n/lo.json22
-rw-r--r--apps/user_status/l10n/nl.js6
-rw-r--r--apps/user_status/l10n/nl.json6
-rw-r--r--apps/user_status/l10n/ru.js38
-rw-r--r--apps/user_status/l10n/ru.json38
-rw-r--r--apps/user_status/l10n/sw.js28
-rw-r--r--apps/user_status/l10n/sw.json26
-rw-r--r--apps/user_status/lib/Listener/UserLiveStatusListener.php4
-rw-r--r--apps/user_status/lib/Service/StatusService.php20
-rw-r--r--apps/user_status/openapi.json4
-rw-r--r--apps/user_status/tests/Unit/CapabilitiesTest.php4
-rw-r--r--apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php12
-rw-r--r--apps/user_status/tests/Unit/Db/UserStatusMapperTest.php8
-rw-r--r--apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php4
-rw-r--r--apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php12
-rw-r--r--apps/user_status/tests/Unit/Service/StatusServiceTest.php16
23 files changed, 161 insertions, 185 deletions
diff --git a/apps/user_status/l10n/bg.js b/apps/user_status/l10n/bg.js
index c100350511e..c0cca7e6c43 100644
--- a/apps/user_status/l10n/bg.js
+++ b/apps/user_status/l10n/bg.js
@@ -4,7 +4,7 @@ OC.L10N.register(
"Recent statuses" : "Последни състояния",
"No recent status changes" : "Няма скорошни промени в състоянието",
"In a meeting" : "В среща",
- "Commuting" : "Работно пътуване",
+ "Commuting" : "Пътувам до работа",
"Out sick" : "Болничен",
"Vacationing" : "Отпуск",
"Out of office" : "Извън офиса",
@@ -12,7 +12,7 @@ OC.L10N.register(
"In a call" : "В обаждане",
"User status" : "Потребителско състояние",
"Clear status after" : "Изчистване на състоянието след",
- "What is your status?" : "Какъв е вашият статус?",
+ "What is your status?" : "Какво е вашето състояние?",
"Previously set" : "Предишно зададени",
"Reset status" : "Възстановяване на състоянието",
"Reset status to \"{icon} {message}\"" : "Възстановяване на състоянието на „{icon} {message}“",
@@ -22,11 +22,13 @@ OC.L10N.register(
"There was an error clearing the status" : "Възникна грешка при изчистване на състоянието",
"There was an error reverting the status" : "Имаше грешка при връщане на състоянието",
"Set status" : "Задаване на състояние",
- "Online status" : "Състояние на линия",
+ "Online status" : "Състояние",
"Status message" : "Съобщение за състояние",
+ "Set absence period" : "Задай период на отсъствие",
+ "Set absence period and replacement" : "Задай период на отсъствие и заместник.",
"Your status was set automatically" : "Състоянието ви беше зададено автоматично",
- "Clear status message" : "Изчистване на съобщението за състояние",
- "Set status message" : "Задаване на съобщение за състояние",
+ "Clear status message" : "Изчисти състоянието",
+ "Set status message" : "Задай състояние",
"Don't clear" : "Да не се изчиства",
"Today" : "Днес",
"This week" : "Тази седмица",
@@ -38,7 +40,7 @@ OC.L10N.register(
"There was an error saving the new status" : "Възникна грешка при запазване на новото състояние",
"30 minutes" : "30 минути",
"1 hour" : "1 час",
- "4 hours" : "4 часа",
+ "4 hours" : "4 чàса",
"Mute all notifications" : "Заглушаване на всички известия",
"Appear offline" : "Показване като офлайн"
},
diff --git a/apps/user_status/l10n/bg.json b/apps/user_status/l10n/bg.json
index 3d0cd96280c..0909badbed2 100644
--- a/apps/user_status/l10n/bg.json
+++ b/apps/user_status/l10n/bg.json
@@ -2,7 +2,7 @@
"Recent statuses" : "Последни състояния",
"No recent status changes" : "Няма скорошни промени в състоянието",
"In a meeting" : "В среща",
- "Commuting" : "Работно пътуване",
+ "Commuting" : "Пътувам до работа",
"Out sick" : "Болничен",
"Vacationing" : "Отпуск",
"Out of office" : "Извън офиса",
@@ -10,7 +10,7 @@
"In a call" : "В обаждане",
"User status" : "Потребителско състояние",
"Clear status after" : "Изчистване на състоянието след",
- "What is your status?" : "Какъв е вашият статус?",
+ "What is your status?" : "Какво е вашето състояние?",
"Previously set" : "Предишно зададени",
"Reset status" : "Възстановяване на състоянието",
"Reset status to \"{icon} {message}\"" : "Възстановяване на състоянието на „{icon} {message}“",
@@ -20,11 +20,13 @@
"There was an error clearing the status" : "Възникна грешка при изчистване на състоянието",
"There was an error reverting the status" : "Имаше грешка при връщане на състоянието",
"Set status" : "Задаване на състояние",
- "Online status" : "Състояние на линия",
+ "Online status" : "Състояние",
"Status message" : "Съобщение за състояние",
+ "Set absence period" : "Задай период на отсъствие",
+ "Set absence period and replacement" : "Задай период на отсъствие и заместник.",
"Your status was set automatically" : "Състоянието ви беше зададено автоматично",
- "Clear status message" : "Изчистване на съобщението за състояние",
- "Set status message" : "Задаване на съобщение за състояние",
+ "Clear status message" : "Изчисти състоянието",
+ "Set status message" : "Задай състояние",
"Don't clear" : "Да не се изчиства",
"Today" : "Днес",
"This week" : "Тази седмица",
@@ -36,7 +38,7 @@
"There was an error saving the new status" : "Възникна грешка при запазване на новото състояние",
"30 minutes" : "30 минути",
"1 hour" : "1 час",
- "4 hours" : "4 часа",
+ "4 hours" : "4 чàса",
"Mute all notifications" : "Заглушаване на всички известия",
"Appear offline" : "Показване като офлайн"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/user_status/l10n/es_AR.js b/apps/user_status/l10n/es_AR.js
deleted file mode 100644
index 4e9b8b095c7..00000000000
--- a/apps/user_status/l10n/es_AR.js
+++ /dev/null
@@ -1,22 +0,0 @@
-OC.L10N.register(
- "user_status",
- {
- "Set status" : "Establecer estado",
- "Online status" : "Estado en línea",
- "Status message" : "Mensaje de estado",
- "Clear status message" : "Limpiar mensaje de estado",
- "Set status message" : "Establecer mensaje de estado",
- "Away" : "Lejos",
- "Do not disturb" : "No molestar",
- "Don't clear" : "No vaciar",
- "Today" : "Hoy",
- "This week" : "Esta semana",
- "Online" : "En línea",
- "Invisible" : "Invisible",
- "Offline" : "Sin conexión",
- "30 minutes" : "30 minutos",
- "1 hour" : "1 hora",
- "4 hours" : "4 horas",
- "Clear status message after" : "Limpiar mensaje de estado después"
-},
-"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_status/l10n/es_AR.json b/apps/user_status/l10n/es_AR.json
deleted file mode 100644
index b510ed89617..00000000000
--- a/apps/user_status/l10n/es_AR.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{ "translations": {
- "Set status" : "Establecer estado",
- "Online status" : "Estado en línea",
- "Status message" : "Mensaje de estado",
- "Clear status message" : "Limpiar mensaje de estado",
- "Set status message" : "Establecer mensaje de estado",
- "Away" : "Lejos",
- "Do not disturb" : "No molestar",
- "Don't clear" : "No vaciar",
- "Today" : "Hoy",
- "This week" : "Esta semana",
- "Online" : "En línea",
- "Invisible" : "Invisible",
- "Offline" : "Sin conexión",
- "30 minutes" : "30 minutos",
- "1 hour" : "1 hora",
- "4 hours" : "4 horas",
- "Clear status message after" : "Limpiar mensaje de estado después"
-},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
-} \ No newline at end of file
diff --git a/apps/user_status/l10n/hu.js b/apps/user_status/l10n/hu.js
index 2075d1dce52..c24669860aa 100644
--- a/apps/user_status/l10n/hu.js
+++ b/apps/user_status/l10n/hu.js
@@ -26,6 +26,8 @@ OC.L10N.register(
"Set status" : "Állapot beállítása",
"Online status" : "Elérhető állapot",
"Status message" : "Állapotüzenet",
+ "Set absence period" : "Távolléti időszak beállítása",
+ "Set absence period and replacement" : "Távolléti időszak és helyettes beállítása",
"Your status was set automatically" : "Az állapota automatikusan lett beállítva",
"Clear status message" : "Állapotüzenet törlése",
"Set status message" : "Állapotüzenet beállítása",
diff --git a/apps/user_status/l10n/hu.json b/apps/user_status/l10n/hu.json
index 313b66be2ed..dcbe3b70f3b 100644
--- a/apps/user_status/l10n/hu.json
+++ b/apps/user_status/l10n/hu.json
@@ -24,6 +24,8 @@
"Set status" : "Állapot beállítása",
"Online status" : "Elérhető állapot",
"Status message" : "Állapotüzenet",
+ "Set absence period" : "Távolléti időszak beállítása",
+ "Set absence period and replacement" : "Távolléti időszak és helyettes beállítása",
"Your status was set automatically" : "Az állapota automatikusan lett beállítva",
"Clear status message" : "Állapotüzenet törlése",
"Set status message" : "Állapotüzenet beállítása",
diff --git a/apps/user_status/l10n/lo.js b/apps/user_status/l10n/lo.js
deleted file mode 100644
index 1038b87d53e..00000000000
--- a/apps/user_status/l10n/lo.js
+++ /dev/null
@@ -1,24 +0,0 @@
-OC.L10N.register(
- "user_status",
- {
- "Set status" : "ຕັ້ງຄ່າສະຖານະພາບ",
- "Online status" : "ສະຖານະພາບອອນລາຍ",
- "Status message" : "ສະຖານະຂໍ້ຄວາມ",
- "Clear status message" : "ລ້າງສະຖານະພາບຂໍ້ຄວາມ",
- "Set status message" : "ຕັ້ງຄ່າສະຖານະພາບຂໍ້ຄວາມ",
- "Away" : "ອອກໄປ",
- "Do not disturb" : "ຫ້າມລົບກວນ",
- "Don't clear" : "ບໍ່ຈະແຈ້ງ",
- "Today" : "ມື້ນີ້",
- "This week" : "ທິດນີ້",
- "Online" : "ອອນລາຍ",
- "Invisible" : "ເບິ່ງບໍ່ເຫັນ",
- "Offline" : "ອັອບລາຍ",
- "30 minutes" : "30 ນາທີ",
- "1 hour" : "1 ຊົ່ວໂມງ",
- "4 hours" : "4 ຊົ່ວໂມງ",
- "Mute all notifications" : "ປິດການແຈ້ງເຕືອນທັງໝົດ",
- "Appear offline" : "ເປີດອັອບລາຍ",
- "Clear status message after" : "ລ້າງສະຖານະພາບຂໍ້ຄວາມພາຍຫຼັງ"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_status/l10n/lo.json b/apps/user_status/l10n/lo.json
deleted file mode 100644
index afba4141134..00000000000
--- a/apps/user_status/l10n/lo.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{ "translations": {
- "Set status" : "ຕັ້ງຄ່າສະຖານະພາບ",
- "Online status" : "ສະຖານະພາບອອນລາຍ",
- "Status message" : "ສະຖານະຂໍ້ຄວາມ",
- "Clear status message" : "ລ້າງສະຖານະພາບຂໍ້ຄວາມ",
- "Set status message" : "ຕັ້ງຄ່າສະຖານະພາບຂໍ້ຄວາມ",
- "Away" : "ອອກໄປ",
- "Do not disturb" : "ຫ້າມລົບກວນ",
- "Don't clear" : "ບໍ່ຈະແຈ້ງ",
- "Today" : "ມື້ນີ້",
- "This week" : "ທິດນີ້",
- "Online" : "ອອນລາຍ",
- "Invisible" : "ເບິ່ງບໍ່ເຫັນ",
- "Offline" : "ອັອບລາຍ",
- "30 minutes" : "30 ນາທີ",
- "1 hour" : "1 ຊົ່ວໂມງ",
- "4 hours" : "4 ຊົ່ວໂມງ",
- "Mute all notifications" : "ປິດການແຈ້ງເຕືອນທັງໝົດ",
- "Appear offline" : "ເປີດອັອບລາຍ",
- "Clear status message after" : "ລ້າງສະຖານະພາບຂໍ້ຄວາມພາຍຫຼັງ"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_status/l10n/nl.js b/apps/user_status/l10n/nl.js
index 1f9f157d3a1..99655a094fc 100644
--- a/apps/user_status/l10n/nl.js
+++ b/apps/user_status/l10n/nl.js
@@ -17,11 +17,17 @@ OC.L10N.register(
"Predefined statuses" : "Voorgedefinieerde statussen",
"Previously set" : "Eerder ingesteld",
"Reset status" : "Reset status",
+ "Reset status to \"{icon} {message}\"" : "Status terugzetten naar \"{icon} {message}\"",
+ "Reset status to \"{message}\"" : "Status terugzetten naar \"{message}\"",
+ "Reset status to \"{icon}\"" : "Status terugzetten naar \"{icon}\"",
"There was an error saving the status" : "Er is een fout opgetreden bij het bewaren van de status",
"There was an error clearing the status" : "Er is een fout opgetreden bij het leegmaken van de status",
+ "There was an error reverting the status" : "Er was een fout bij het terugdraaien van de status",
"Set status" : "Status instellen",
"Online status" : "Online status",
"Status message" : "Statusbericht",
+ "Set absence period" : "Afwezigheidsperiode instellen",
+ "Set absence period and replacement" : "Afwezigheidsperiode en vervanging instellen",
"Your status was set automatically" : "Uw status is automatisch ingesteld",
"Clear status message" : "Statusbericht wissen",
"Set status message" : "Statusbericht instellen",
diff --git a/apps/user_status/l10n/nl.json b/apps/user_status/l10n/nl.json
index 58cfe0c305e..f345b68c6ef 100644
--- a/apps/user_status/l10n/nl.json
+++ b/apps/user_status/l10n/nl.json
@@ -15,11 +15,17 @@
"Predefined statuses" : "Voorgedefinieerde statussen",
"Previously set" : "Eerder ingesteld",
"Reset status" : "Reset status",
+ "Reset status to \"{icon} {message}\"" : "Status terugzetten naar \"{icon} {message}\"",
+ "Reset status to \"{message}\"" : "Status terugzetten naar \"{message}\"",
+ "Reset status to \"{icon}\"" : "Status terugzetten naar \"{icon}\"",
"There was an error saving the status" : "Er is een fout opgetreden bij het bewaren van de status",
"There was an error clearing the status" : "Er is een fout opgetreden bij het leegmaken van de status",
+ "There was an error reverting the status" : "Er was een fout bij het terugdraaien van de status",
"Set status" : "Status instellen",
"Online status" : "Online status",
"Status message" : "Statusbericht",
+ "Set absence period" : "Afwezigheidsperiode instellen",
+ "Set absence period and replacement" : "Afwezigheidsperiode en vervanging instellen",
"Your status was set automatically" : "Uw status is automatisch ingesteld",
"Clear status message" : "Statusbericht wissen",
"Set status message" : "Statusbericht instellen",
diff --git a/apps/user_status/l10n/ru.js b/apps/user_status/l10n/ru.js
index 4f518bdcede..901c313f537 100644
--- a/apps/user_status/l10n/ru.js
+++ b/apps/user_status/l10n/ru.js
@@ -2,46 +2,48 @@ OC.L10N.register(
"user_status",
{
"Recent statuses" : "Недавние статусы",
- "No recent status changes" : "Недавние изменения статуса отсуствуют ",
+ "No recent status changes" : "Нет недавних изменений статуса",
"In a meeting" : "На встрече",
"Commuting" : "В пути",
- "Out sick" : "Болею",
+ "Out sick" : "Болен",
"Vacationing" : "В отпуске",
"Out of office" : "Вне офиса",
- "Working remotely" : "Удалённая работа",
- "In a call" : "В звонке",
+ "Working remotely" : "Удалённо",
+ "In a call" : "В вызове",
"User status" : "Статус пользователя",
- "Clear status after" : "Удалить статус через",
- "Emoji for your status message" : "Эмодзи для вашего сообщения о состоянии",
- "What is your status?" : "Какой у вас статус?",
+ "Clear status after" : "Очистить статус после",
+ "Emoji for your status message" : "Эмодзи для вашего сообщения к статусу",
+ "What is your status?" : "Какой у Вас статус?",
"Predefined statuses" : "Предопределенные статусы",
"Previously set" : "Установлено ранее",
"Reset status" : "Сбросить статус",
"Reset status to \"{icon} {message}\"" : "Сбросить статус на \"{icon} {message}\"",
"Reset status to \"{message}\"" : "Сбросить статус на \"{message}\"",
"Reset status to \"{icon}\"" : "Сбросить статус на \"{icon}\"",
- "There was an error saving the status" : "Не удалось сохранить статус",
- "There was an error clearing the status" : "Не удалось убрать статус",
+ "There was an error saving the status" : "Произошла ошибка при сохранении статуса",
+ "There was an error clearing the status" : "Произошла ошибка при удалении статуса",
"There was an error reverting the status" : "Произошла ошибка при сбросе статуса",
"Set status" : "Установить статус",
- "Online status" : "Статус работы в сети",
+ "Online status" : "Онлайн статус",
"Status message" : "Описание статуса",
+ "Set absence period" : "Задать период отсутствия",
+ "Set absence period and replacement" : "Задать период отсутствия и замену",
"Your status was set automatically" : "Ваш статус был установлен автоматически",
- "Clear status message" : "Удалить описание статуса",
- "Set status message" : "Установить описание статуса",
+ "Clear status message" : "Удалить сообщение к статусу",
+ "Set status message" : "Установить сообщение к статусу",
"Don't clear" : "Не очищать",
"Today" : "Сегодня",
"This week" : "Эта неделя",
- "Online" : "На связи",
- "Away" : "Отошёл",
+ "Online" : "В сети",
+ "Away" : "Неактивен",
"Do not disturb" : "Не беспокоить",
- "Invisible" : "Невидимка",
- "Offline" : "Автономно",
- "There was an error saving the new status" : "Не удалось сохранить новый статус",
+ "Invisible" : "Невидимый",
+ "Offline" : "Не в сети",
+ "There was an error saving the new status" : "Произошла ошибка при сохранении нового статуса",
"30 minutes" : "30 минут",
"1 hour" : "1 час",
"4 hours" : "4 часа",
"Mute all notifications" : "Отключить все уведомления",
- "Appear offline" : "Возможно, не в сети"
+ "Appear offline" : "\"Не в сети\" для остальных"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/user_status/l10n/ru.json b/apps/user_status/l10n/ru.json
index e6dc51b2f9d..8a1967e1196 100644
--- a/apps/user_status/l10n/ru.json
+++ b/apps/user_status/l10n/ru.json
@@ -1,45 +1,47 @@
{ "translations": {
"Recent statuses" : "Недавние статусы",
- "No recent status changes" : "Недавние изменения статуса отсуствуют ",
+ "No recent status changes" : "Нет недавних изменений статуса",
"In a meeting" : "На встрече",
"Commuting" : "В пути",
- "Out sick" : "Болею",
+ "Out sick" : "Болен",
"Vacationing" : "В отпуске",
"Out of office" : "Вне офиса",
- "Working remotely" : "Удалённая работа",
- "In a call" : "В звонке",
+ "Working remotely" : "Удалённо",
+ "In a call" : "В вызове",
"User status" : "Статус пользователя",
- "Clear status after" : "Удалить статус через",
- "Emoji for your status message" : "Эмодзи для вашего сообщения о состоянии",
- "What is your status?" : "Какой у вас статус?",
+ "Clear status after" : "Очистить статус после",
+ "Emoji for your status message" : "Эмодзи для вашего сообщения к статусу",
+ "What is your status?" : "Какой у Вас статус?",
"Predefined statuses" : "Предопределенные статусы",
"Previously set" : "Установлено ранее",
"Reset status" : "Сбросить статус",
"Reset status to \"{icon} {message}\"" : "Сбросить статус на \"{icon} {message}\"",
"Reset status to \"{message}\"" : "Сбросить статус на \"{message}\"",
"Reset status to \"{icon}\"" : "Сбросить статус на \"{icon}\"",
- "There was an error saving the status" : "Не удалось сохранить статус",
- "There was an error clearing the status" : "Не удалось убрать статус",
+ "There was an error saving the status" : "Произошла ошибка при сохранении статуса",
+ "There was an error clearing the status" : "Произошла ошибка при удалении статуса",
"There was an error reverting the status" : "Произошла ошибка при сбросе статуса",
"Set status" : "Установить статус",
- "Online status" : "Статус работы в сети",
+ "Online status" : "Онлайн статус",
"Status message" : "Описание статуса",
+ "Set absence period" : "Задать период отсутствия",
+ "Set absence period and replacement" : "Задать период отсутствия и замену",
"Your status was set automatically" : "Ваш статус был установлен автоматически",
- "Clear status message" : "Удалить описание статуса",
- "Set status message" : "Установить описание статуса",
+ "Clear status message" : "Удалить сообщение к статусу",
+ "Set status message" : "Установить сообщение к статусу",
"Don't clear" : "Не очищать",
"Today" : "Сегодня",
"This week" : "Эта неделя",
- "Online" : "На связи",
- "Away" : "Отошёл",
+ "Online" : "В сети",
+ "Away" : "Неактивен",
"Do not disturb" : "Не беспокоить",
- "Invisible" : "Невидимка",
- "Offline" : "Автономно",
- "There was an error saving the new status" : "Не удалось сохранить новый статус",
+ "Invisible" : "Невидимый",
+ "Offline" : "Не в сети",
+ "There was an error saving the new status" : "Произошла ошибка при сохранении нового статуса",
"30 minutes" : "30 минут",
"1 hour" : "1 час",
"4 hours" : "4 часа",
"Mute all notifications" : "Отключить все уведомления",
- "Appear offline" : "Возможно, не в сети"
+ "Appear offline" : "\"Не в сети\" для остальных"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_status/l10n/sw.js b/apps/user_status/l10n/sw.js
new file mode 100644
index 00000000000..5470b5c623f
--- /dev/null
+++ b/apps/user_status/l10n/sw.js
@@ -0,0 +1,28 @@
+OC.L10N.register(
+ "user_status",
+ {
+ "Out of office" : "Nje ya ofisi",
+ "User status" : "Hadhi ya mtumiaji",
+ "Emoji for your status message" : "Emoji kwa ujumbe wako wa hadhi",
+ "What is your status?" : "Hadhi yako ni nini?",
+ "Previously set" : "Imepangiliwa mwanzo",
+ "Reset status" : "Pangilia hali",
+ "Set status" : "Panglia hali",
+ "Online status" : "Hadhi ya mtandaoni",
+ "Status message" : "Ujumbe wa hadhi",
+ "Your status was set automatically" : "Hadhi yako ilipangiliwa moja kwa moja",
+ "Clear status message" : "Futa jumbe za wadhifa",
+ "Set status message" : "Pangilia hali ya ujumbe",
+ "Don't clear" : "Usifute",
+ "Today" : "Leo",
+ "This week" : "Wiki hii",
+ "Online" : "Mtandaoni",
+ "Away" : "Mbali",
+ "Do not disturb" : "Acha kusumbua",
+ "Invisible" : "Haionekani",
+ "Offline" : "Nje ya mtandao",
+ "30 minutes" : "Dakika 30",
+ "1 hour" : "Saa 1",
+ "4 hours" : "Masaa 4"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_status/l10n/sw.json b/apps/user_status/l10n/sw.json
new file mode 100644
index 00000000000..6e0c9c6a77c
--- /dev/null
+++ b/apps/user_status/l10n/sw.json
@@ -0,0 +1,26 @@
+{ "translations": {
+ "Out of office" : "Nje ya ofisi",
+ "User status" : "Hadhi ya mtumiaji",
+ "Emoji for your status message" : "Emoji kwa ujumbe wako wa hadhi",
+ "What is your status?" : "Hadhi yako ni nini?",
+ "Previously set" : "Imepangiliwa mwanzo",
+ "Reset status" : "Pangilia hali",
+ "Set status" : "Panglia hali",
+ "Online status" : "Hadhi ya mtandaoni",
+ "Status message" : "Ujumbe wa hadhi",
+ "Your status was set automatically" : "Hadhi yako ilipangiliwa moja kwa moja",
+ "Clear status message" : "Futa jumbe za wadhifa",
+ "Set status message" : "Pangilia hali ya ujumbe",
+ "Don't clear" : "Usifute",
+ "Today" : "Leo",
+ "This week" : "Wiki hii",
+ "Online" : "Mtandaoni",
+ "Away" : "Mbali",
+ "Do not disturb" : "Acha kusumbua",
+ "Invisible" : "Haionekani",
+ "Offline" : "Nje ya mtandao",
+ "30 minutes" : "Dakika 30",
+ "1 hour" : "Saa 1",
+ "4 hours" : "Masaa 4"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/user_status/lib/Listener/UserLiveStatusListener.php b/apps/user_status/lib/Listener/UserLiveStatusListener.php
index aad0943b8d0..2db999d3712 100644
--- a/apps/user_status/lib/Listener/UserLiveStatusListener.php
+++ b/apps/user_status/lib/Listener/UserLiveStatusListener.php
@@ -61,8 +61,8 @@ class UserLiveStatusListener implements IEventListener {
// If the status is user-defined and one of the persistent status, we
// will not override it.
- if ($userStatus->getIsUserDefined() &&
- \in_array($userStatus->getStatus(), StatusService::PERSISTENT_STATUSES, true)) {
+ if ($userStatus->getIsUserDefined()
+ && \in_array($userStatus->getStatus(), StatusService::PERSISTENT_STATUSES, true)) {
return;
}
diff --git a/apps/user_status/lib/Service/StatusService.php b/apps/user_status/lib/Service/StatusService.php
index 9adc13e4dbf..188eb26d1d7 100644
--- a/apps/user_status/lib/Service/StatusService.php
+++ b/apps/user_status/lib/Service/StatusService.php
@@ -167,7 +167,7 @@ class StatusService {
$userStatus->setIsBackup(false);
if ($userStatus->getId() === null) {
- return $this->mapper->insert($userStatus);
+ return $this->insertWithoutThrowingUniqueConstrain($userStatus);
}
return $this->mapper->update($userStatus);
@@ -211,7 +211,7 @@ class StatusService {
$userStatus->setStatusMessageTimestamp($this->timeFactory->now()->getTimestamp());
if ($userStatus->getId() === null) {
- return $this->mapper->insert($userStatus);
+ return $this->insertWithoutThrowingUniqueConstrain($userStatus);
}
return $this->mapper->update($userStatus);
@@ -313,7 +313,7 @@ class StatusService {
if ($userStatus->getId() !== null) {
return $this->mapper->update($userStatus);
}
- return $this->mapper->insert($userStatus);
+ return $this->insertWithoutThrowingUniqueConstrain($userStatus);
}
/**
@@ -360,7 +360,7 @@ class StatusService {
$userStatus->setStatusMessageTimestamp($this->timeFactory->now()->getTimestamp());
if ($userStatus->getId() === null) {
- return $this->mapper->insert($userStatus);
+ return $this->insertWithoutThrowingUniqueConstrain($userStatus);
}
return $this->mapper->update($userStatus);
@@ -584,4 +584,16 @@ class StatusService {
// For users that matched restore the previous status
$this->mapper->restoreBackupStatuses($restoreIds);
}
+
+ protected function insertWithoutThrowingUniqueConstrain(UserStatus $userStatus): UserStatus {
+ try {
+ return $this->mapper->insert($userStatus);
+ } catch (Exception $e) {
+ // Ignore if a parallel request already set the status
+ if ($e->getReason() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
+ throw $e;
+ }
+ }
+ return $userStatus;
+ }
}
diff --git a/apps/user_status/openapi.json b/apps/user_status/openapi.json
index a0d30693e37..65d9af59fef 100644
--- a/apps/user_status/openapi.json
+++ b/apps/user_status/openapi.json
@@ -427,7 +427,8 @@
"schema": {
"type": "integer",
"format": "int64",
- "nullable": true
+ "nullable": true,
+ "default": null
}
},
{
@@ -438,6 +439,7 @@
"type": "integer",
"format": "int64",
"nullable": true,
+ "default": null,
"minimum": 0
}
},
diff --git a/apps/user_status/tests/Unit/CapabilitiesTest.php b/apps/user_status/tests/Unit/CapabilitiesTest.php
index ef721eaa90b..f07892ff3fd 100644
--- a/apps/user_status/tests/Unit/CapabilitiesTest.php
+++ b/apps/user_status/tests/Unit/CapabilitiesTest.php
@@ -24,9 +24,7 @@ class CapabilitiesTest extends TestCase {
$this->capabilities = new Capabilities($this->emojiHelper);
}
- /**
- * @dataProvider getCapabilitiesDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('getCapabilitiesDataProvider')]
public function testGetCapabilities(bool $supportsEmojis): void {
$this->emojiHelper->expects($this->once())
->method('doesPlatformSupportEmoji')
diff --git a/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php b/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
index 45ee9c4fdba..e99290319ed 100644
--- a/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
+++ b/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
@@ -87,9 +87,7 @@ class UserStatusControllerTest extends TestCase {
$this->controller->getStatus();
}
- /**
- * @dataProvider setStatusDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setStatusDataProvider')]
public function testSetStatus(
string $statusType,
?string $statusIcon,
@@ -149,9 +147,7 @@ class UserStatusControllerTest extends TestCase {
];
}
- /**
- * @dataProvider setPredefinedMessageDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setPredefinedMessageDataProvider')]
public function testSetPredefinedMessage(
string $messageId,
?int $clearAt,
@@ -211,9 +207,7 @@ class UserStatusControllerTest extends TestCase {
];
}
- /**
- * @dataProvider setCustomMessageDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setCustomMessageDataProvider')]
public function testSetCustomMessage(
?string $statusIcon,
string $message,
diff --git a/apps/user_status/tests/Unit/Db/UserStatusMapperTest.php b/apps/user_status/tests/Unit/Db/UserStatusMapperTest.php
index c9bda492210..ea4480489c7 100644
--- a/apps/user_status/tests/Unit/Db/UserStatusMapperTest.php
+++ b/apps/user_status/tests/Unit/Db/UserStatusMapperTest.php
@@ -134,9 +134,7 @@ class UserStatusMapperTest extends TestCase {
$this->mapper->insert($userStatus2);
}
- /**
- * @dataProvider clearStatusesOlderThanDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('clearStatusesOlderThanDataProvider')]
public function testClearStatusesOlderThan(string $status, bool $isUserDefined, int $timestamp, bool $expectsClean): void {
$oldStatus = UserStatus::fromParams([
'userId' => 'john.doe',
@@ -233,9 +231,7 @@ class UserStatusMapperTest extends TestCase {
];
}
- /**
- * @dataProvider dataCreateBackupStatus
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataCreateBackupStatus')]
public function testCreateBackupStatus(bool $hasStatus, bool $hasBackup, bool $backupCreated): void {
if ($hasStatus) {
$userStatus1 = new UserStatus();
diff --git a/apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php b/apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php
index c94315a7a93..c03eed0089e 100644
--- a/apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php
+++ b/apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php
@@ -49,9 +49,7 @@ class UserLiveStatusListenerTest extends TestCase {
);
}
- /**
- * @dataProvider handleEventWithCorrectEventDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('handleEventWithCorrectEventDataProvider')]
public function testHandleWithCorrectEvent(
string $userId,
string $previousStatus,
diff --git a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
index 091466637f0..de5d92055f1 100644
--- a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
+++ b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php
@@ -93,9 +93,7 @@ class PredefinedStatusServiceTest extends TestCase {
], $actual);
}
- /**
- * @dataProvider getIconForIdDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('getIconForIdDataProvider')]
public function testGetIconForId(string $id, ?string $expectedIcon): void {
$actual = $this->service->getIconForId($id);
$this->assertEquals($expectedIcon, $actual);
@@ -113,9 +111,7 @@ class PredefinedStatusServiceTest extends TestCase {
];
}
- /**
- * @dataProvider getTranslatedStatusForIdDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('getTranslatedStatusForIdDataProvider')]
public function testGetTranslatedStatusForId(string $id, ?string $expected): void {
$this->l10n->method('t')
->willReturnArgument(0);
@@ -136,9 +132,7 @@ class PredefinedStatusServiceTest extends TestCase {
];
}
- /**
- * @dataProvider isValidIdDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('isValidIdDataProvider')]
public function testIsValidId(string $id, bool $expected): void {
$actual = $this->service->isValidId($id);
$this->assertEquals($expected, $actual);
diff --git a/apps/user_status/tests/Unit/Service/StatusServiceTest.php b/apps/user_status/tests/Unit/Service/StatusServiceTest.php
index 7aeb1d48448..7dfa5b0d064 100644
--- a/apps/user_status/tests/Unit/Service/StatusServiceTest.php
+++ b/apps/user_status/tests/Unit/Service/StatusServiceTest.php
@@ -221,9 +221,7 @@ class StatusServiceTest extends TestCase {
$this->assertNull($status->getMessageId());
}
- /**
- * @dataProvider setStatusDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setStatusDataProvider')]
public function testSetStatus(
string $userId,
string $status,
@@ -344,9 +342,7 @@ class StatusServiceTest extends TestCase {
];
}
- /**
- * @dataProvider setPredefinedMessageDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setPredefinedMessageDataProvider')]
public function testSetPredefinedMessage(
string $userId,
string $messageId,
@@ -433,9 +429,7 @@ class StatusServiceTest extends TestCase {
];
}
- /**
- * @dataProvider setCustomMessageDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('setCustomMessageDataProvider')]
public function testSetCustomMessage(
string $userId,
?string $statusIcon,
@@ -799,9 +793,7 @@ class StatusServiceTest extends TestCase {
];
}
- /**
- * @dataProvider dataSetUserStatus
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataSetUserStatus')]
public function testSetUserStatus(string $messageId, string $oldMessageId, bool $expectedUpdateShortcut): void {
$previous = new UserStatus();
$previous->setId(1);