From e218ec1289581372b3b6368e973e6a24f00b8b46 Mon Sep 17 00:00:00 2001 From: DominikSLK <74055080+DominikSLK@users.noreply.github.com> Date: Tue, 2 May 2023 22:03:56 +0200 Subject: [PATCH 001/193] Fix AuthMe enabled value (#3349) --- modules/Core/pages/panel/minecraft_authme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Core/pages/panel/minecraft_authme.php b/modules/Core/pages/panel/minecraft_authme.php index b16ce5872d..46e0a9f113 100644 --- a/modules/Core/pages/panel/minecraft_authme.php +++ b/modules/Core/pages/panel/minecraft_authme.php @@ -137,7 +137,7 @@ 'AUTHME_INFO' => $language->get('admin', 'authme_integration_info'), 'INFO' => $language->get('general', 'info'), 'ENABLE_AUTHME' => $language->get('admin', 'enable_authme'), - 'ENABLE_AUTHME_VALUE' => ($authme_enabled == '1'), + 'ENABLE_AUTHME_VALUE' => (Util::getSetting('authme') == '1'), 'AUTHME' => $language->get('admin', 'authme_integration'), 'MINECRAFT_LINK' => URL::build('/panel/minecraft') ]); From 4146284cfcdde6e760208bae9ef84eb932981f7d Mon Sep 17 00:00:00 2001 From: PadowYT2 Date: Wed, 3 May 2023 22:43:02 +0300 Subject: [PATCH 002/193] Add all missing languages to the Members module (#3350) --- modules/Members/language/cs_CZ.json | 1 + modules/Members/language/da_DK.json | 1 + modules/Members/language/de_DE.json | 1 + modules/Members/language/el_GR.json | 1 + modules/Members/language/en_US.json | 1 + modules/Members/language/es_419.json | 1 + modules/Members/language/es_ES.json | 1 + modules/Members/language/fi_FI.json | 1 + modules/Members/language/fr_FR.json | 1 + modules/Members/language/hr_HR.json | 1 + modules/Members/language/hu_HU.json | 1 + modules/Members/language/id_ID.json | 1 + modules/Members/language/it_IT.json | 1 + modules/Members/language/ja_JP.json | 1 + modules/Members/language/ko_KR.json | 1 + modules/Members/language/lt_LT.json | 1 + modules/Members/language/lv_LV.json | 1 + modules/Members/language/nl_NL.json | 1 + modules/Members/language/no_NO.json | 1 + modules/Members/language/pl_PL.json | 1 + modules/Members/language/pt_BR.json | 1 + modules/Members/language/ro_RO.json | 1 + modules/Members/language/ru_RU.json | 1 + modules/Members/language/sk_SK.json | 1 + modules/Members/language/sq_AL.json | 1 + modules/Members/language/sv_SE.json | 1 + modules/Members/language/th_TH.json | 1 + modules/Members/language/tr_TR.json | 1 + modules/Members/language/uk_UA.json | 1 + modules/Members/language/vi_VN.json | 1 + modules/Members/language/zh_CN.json | 1 + modules/Members/language/zh_TW.json | 1 + 32 files changed, 32 insertions(+) create mode 100644 modules/Members/language/cs_CZ.json create mode 100644 modules/Members/language/da_DK.json create mode 100644 modules/Members/language/de_DE.json create mode 100644 modules/Members/language/el_GR.json create mode 100644 modules/Members/language/en_US.json create mode 100644 modules/Members/language/es_419.json create mode 100644 modules/Members/language/es_ES.json create mode 100644 modules/Members/language/fi_FI.json create mode 100644 modules/Members/language/fr_FR.json create mode 100644 modules/Members/language/hr_HR.json create mode 100644 modules/Members/language/hu_HU.json create mode 100644 modules/Members/language/id_ID.json create mode 100644 modules/Members/language/it_IT.json create mode 100644 modules/Members/language/ja_JP.json create mode 100644 modules/Members/language/ko_KR.json create mode 100644 modules/Members/language/lt_LT.json create mode 100644 modules/Members/language/lv_LV.json create mode 100644 modules/Members/language/nl_NL.json create mode 100644 modules/Members/language/no_NO.json create mode 100644 modules/Members/language/pl_PL.json create mode 100644 modules/Members/language/pt_BR.json create mode 100644 modules/Members/language/ro_RO.json create mode 100644 modules/Members/language/ru_RU.json create mode 100644 modules/Members/language/sk_SK.json create mode 100644 modules/Members/language/sq_AL.json create mode 100644 modules/Members/language/sv_SE.json create mode 100644 modules/Members/language/th_TH.json create mode 100644 modules/Members/language/tr_TR.json create mode 100644 modules/Members/language/uk_UA.json create mode 100644 modules/Members/language/vi_VN.json create mode 100644 modules/Members/language/zh_CN.json create mode 100644 modules/Members/language/zh_TW.json diff --git a/modules/Members/language/cs_CZ.json b/modules/Members/language/cs_CZ.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/cs_CZ.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/da_DK.json b/modules/Members/language/da_DK.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/da_DK.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/de_DE.json b/modules/Members/language/de_DE.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/de_DE.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/el_GR.json b/modules/Members/language/el_GR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/el_GR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/en_US.json b/modules/Members/language/en_US.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/en_US.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/es_419.json b/modules/Members/language/es_419.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/es_419.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/es_ES.json b/modules/Members/language/es_ES.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/es_ES.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/fi_FI.json b/modules/Members/language/fi_FI.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/fi_FI.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/fr_FR.json b/modules/Members/language/fr_FR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/fr_FR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/hr_HR.json b/modules/Members/language/hr_HR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/hr_HR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/hu_HU.json b/modules/Members/language/hu_HU.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/hu_HU.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/id_ID.json b/modules/Members/language/id_ID.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/id_ID.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/it_IT.json b/modules/Members/language/it_IT.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/it_IT.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/ja_JP.json b/modules/Members/language/ja_JP.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/ja_JP.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/ko_KR.json b/modules/Members/language/ko_KR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/ko_KR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/lt_LT.json b/modules/Members/language/lt_LT.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/lt_LT.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/lv_LV.json b/modules/Members/language/lv_LV.json new file mode 100644 index 0000000000..69a88e3b65 --- /dev/null +++ b/modules/Members/language/lv_LV.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/nl_NL.json b/modules/Members/language/nl_NL.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/nl_NL.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/no_NO.json b/modules/Members/language/no_NO.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/no_NO.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/pl_PL.json b/modules/Members/language/pl_PL.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/pl_PL.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/pt_BR.json b/modules/Members/language/pt_BR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/pt_BR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/ro_RO.json b/modules/Members/language/ro_RO.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/ro_RO.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/ru_RU.json b/modules/Members/language/ru_RU.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/ru_RU.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/sk_SK.json b/modules/Members/language/sk_SK.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/sk_SK.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/sq_AL.json b/modules/Members/language/sq_AL.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/sq_AL.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/sv_SE.json b/modules/Members/language/sv_SE.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/sv_SE.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/th_TH.json b/modules/Members/language/th_TH.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/th_TH.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/tr_TR.json b/modules/Members/language/tr_TR.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/tr_TR.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/uk_UA.json b/modules/Members/language/uk_UA.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/uk_UA.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/vi_VN.json b/modules/Members/language/vi_VN.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/vi_VN.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/zh_CN.json b/modules/Members/language/zh_CN.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/zh_CN.json @@ -0,0 +1 @@ +{} diff --git a/modules/Members/language/zh_TW.json b/modules/Members/language/zh_TW.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/modules/Members/language/zh_TW.json @@ -0,0 +1 @@ +{} From f37eb40b6ef890d51b55e86afbbceba262fa13e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knapp=20B=C3=A1lint?= Date: Wed, 3 May 2023 10:13:22 +0000 Subject: [PATCH 003/193] Translated using translate.namelessmc.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Knapp Bálint Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/hu/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/hu/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Forum --- custom/languages/hu_HU.json | 2 +- modules/Forum/language/hu_HU.json | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/custom/languages/hu_HU.json b/custom/languages/hu_HU.json index eb9a94479a..7d59f7d449 100644 --- a/custom/languages/hu_HU.json +++ b/custom/languages/hu_HU.json @@ -473,7 +473,7 @@ "admin/authme_db_connection_failed": "Csatlakozás sikertelen", "admin/group_sync_server": "Válassz egy Minecraft szervert a csoportszinkronizáláshoz", "admin/query_type_help": "Ha az alapértelmezett belső szerver lekérdezés nem működik, próbálkozz egy másik lehetőséggel.", - "general/sql_query": "SQL Lekérdezés", + "general/sql_query": "Lekérdezés", "admin/query_type": "Lekérdezés típusa", "admin/internal": "Belső", "admin/external": "Külső", diff --git a/modules/Forum/language/hu_HU.json b/modules/Forum/language/hu_HU.json index de95f7f970..f9b6ad5340 100644 --- a/modules/Forum/language/hu_HU.json +++ b/modules/Forum/language/hu_HU.json @@ -179,5 +179,9 @@ "forum/latest_posts_limit": "A legújabb bejegyzések korlátja", "forum/highest_reaction_scores": "A legmagasabb reakciópontszámok", "forum/most_posts": "Legtöbb poszt", - "forum/reaction_score": "Reakciópontszám" + "forum/reaction_score": "Reakciópontszám", + "forum/news_items_max": "A hírek száma maximum {{max}} legyen", + "forum/news_items_min": "A hírek száma minimum {{min}} legyen", + "forum/news_items_front_page_limit": "A címlapon megjelenítendő hírek száma", + "forum/no_posts_found": "Nem található bejegyzés." } From 81f63ba327aeac4c2cae1a878d143c51ae6660d9 Mon Sep 17 00:00:00 2001 From: Dominik Roman Date: Wed, 3 May 2023 10:13:22 +0000 Subject: [PATCH 004/193] Translated using translate.namelessmc.com Co-authored-by: Dominik Roman Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/sk/ Translation: NamelessMC/Website - Core --- custom/languages/sk_SK.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom/languages/sk_SK.json b/custom/languages/sk_SK.json index 62e53c292c..246c0bab63 100644 --- a/custom/languages/sk_SK.json +++ b/custom/languages/sk_SK.json @@ -1319,5 +1319,6 @@ "admin/queue_task_output": "Výstup úlohy", "admin/queue_task_invalid_status_to_cancel": "Úloha nie je v platnom stavu pre jej zrušenie", "admin/queue_task_status": "Stav", - "admin/reset_og_image": "Resetovať OG image" + "admin/reset_og_image": "Resetovať OG image", + "general/registration_disabled_message_fallback": "Registrácia je momentálne zakázaná." } From daefcdff1cdaf8b84e5c4e45bf18abdce3f62c81 Mon Sep 17 00:00:00 2001 From: Wgis Date: Wed, 3 May 2023 10:13:22 +0000 Subject: [PATCH 005/193] Translated using translate.namelessmc.com Co-authored-by: Wgis Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/ru/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-discord-integration/ru/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/ru/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Discord Integration Translation: NamelessMC/Website - Forum --- custom/languages/ru_RU.json | 66 ++++++++++++++++--- .../Discord Integration/language/ru_RU.json | 4 +- modules/Forum/language/ru_RU.json | 5 +- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/custom/languages/ru_RU.json b/custom/languages/ru_RU.json index 58ff674dc1..6832278db4 100644 --- a/custom/languages/ru_RU.json +++ b/custom/languages/ru_RU.json @@ -711,7 +711,7 @@ "general/search": "Поиск", "general/server_offline": "Сервер выключен.", "general/server_status": "Статус сервера", - "general/sign_in": "Войти", + "general/sign_in": "Вход", "general/social": "Социальных сети", "general/spoiler": "Спойлер", "general/statistics": "Статистика", @@ -881,15 +881,15 @@ "table/page_x_of_y": "Отображена страница _PAGE_ из _PAGES_", "time/1_day": "1 день назад", "time/1_minute": "1 минуту назад", - "time/_days": "{{count}} день назад|{{count}} дня назад|{{count}} дней назад", - "time/_hours": "{{count}} час назад|{{count}} часа назад|{{count}} часов назад", - "time/_minutes": "{{count}} минуту назад|{{count}} минуты назад|{{count}} минут назад", - "time/_months": "{{count}} месяц назад|{{count}} месяца назад|{{count}} месяцев назад", + "time/_days": "{{count}} дн. назад", + "time/_hours": "{{count}} ч. назад", + "time/_minutes": "{{count}} мин. назад", + "time/_months": "{{count}} мес. назад", "time/about_1_hour": "около часа назад", "time/about_1_month": "около месяца назад", "time/about_1_year": "около года назад", "time/less_than_a_minute": "меньше минуты назад", - "time/over_x_years": "более {{count}} года назад|более {{count}} лет назад|более {{count}} лет назад", + "time/over_x_years": "более {{count}} г. назад", "user/1_new_alert": "У вас 1 новое уведомление", "user/1_new_message": "У вас {{count}} новых сообщений", "user/1_reaction": "1 реакция", @@ -1147,8 +1147,8 @@ "general/grey": "Серый", "admin/custom_content": "Кастомный Контент", "admin/homepage_news": "Новости", - "admin/user_group_added_hook_info": "Группа Пользователя Добавлена", - "admin/user_group_removed_hook_info": "Группа Пользователя Удалена", + "admin/user_group_added_hook_info": "Пользовательская группа добавлена", + "admin/user_group_removed_hook_info": "Пользовательская группа удалена", "admin/api_disabled": "API выключен", "admin/page_url_contains_nameless_path": "Ваша кастомная страница перезаписала бы NamelessMC страницу.", "user/no_providers_admin": "Нет OAuth провайдеров которые были настроены администраторами сайта.", @@ -1272,5 +1272,53 @@ "admin/authme_db_test_connection": "Проверить Соединение", "admin/authme_db_connection_success": "Соединение успешное", "admin/authme_db_connection_failed": "Ошибка соединения", - "admin/confirm_delete_placeholder": "Вы уверены что хотите удалить этот плейсхолдер?" + "admin/confirm_delete_placeholder": "Вы уверены что хотите удалить этот плейсхолдер?", + "general/registration_disabled_message_fallback": "В настоящее время регистрация отключена.", + "admin/queue": "Очередь", + "admin/queue_cancel_task": "Отменить задачу", + "admin/queue_cancel_task_confirm": "Вы уверены, что хотите отменить эту задачу?", + "admin/queue_interval": "Интервал очереди (минуты)", + "admin/queue_interval_required": "Пожалуйста, введите интервал очереди", + "admin/queue_interval_at_least_x": "Укажите интервал ожидания не менее {{x}} минут", + "admin/queue_requeue_task": "Поставить задачу в очередь", + "admin/queue_requeue_task_confirm": "Вы уверены, что хотите повторно поставить эту задачу в очередь?", + "admin/queue_retry_task": "Повторить задачу", + "admin/queue_runner_ajax": "AJAX", + "admin/queue_runner": "Обработчик очереди", + "user/log_in_with": "Войти с помощью {{provider}}", + "user/continue_with": "Продолжить с помощью {{provider}}", + "admin/event_supports_discord": "Это событие поддерживает вебхуки Discord и имеет настраиваемое встраивание.", + "admin/queue_info": "Очередь позволяет планировать задачи и выполнять их в фоновом режиме. Чтобы использовать средство запуска очереди cron, создайте задачу cron для доступа к указанному ниже URL-адресу через определенный интервал.", + "admin/queue_runner_cron": "Cron", + "admin/queue_runner_one_of": "Выберите допустимое значение для обработчика очереди", + "admin/render_profile_post_hook_info": "Отображение поста профиля", + "admin/queue_task_action_invalid": "Недопустимое действие задачи", + "admin/queue_task_fragment": "Задача фрагментирована?", + "admin/queue_task_invalid_status_to_cancel": "Задача не находится в допустимом состоянии для ее отмены", + "admin/queue_task_scheduled_at": "Запланировано в", + "admin/discord_hook": "Discord", + "admin/event_supports_normal": "Это событие поддерживает обычные вебхуки.", + "admin/queue_status": "Статус очереди", + "admin/queue_status_cancelled": "Отменена", + "admin/queue_status_completed": "Завершена", + "admin/queue_status_error": "Ошибка", + "admin/queue_status_failed": "Неудача", + "admin/queue_status_in_progress": "Выполняется", + "admin/queue_status_ready": "Готова", + "admin/queue_task": "Задача", + "admin/queue_task_attempts": "Попытки", + "admin/queue_task_cancelled_successfully": "Задача успешно отменена.", + "admin/queue_task_data": "Данные задачи", + "admin/queue_task_entity": "Сущность задачи", + "admin/queue_task_entity_id": "ID сущности", + "admin/queue_task_executed_at": "Выполнено в", + "admin/queue_task_fragment_next": "Следующее смещение фрагмента задачи", + "admin/queue_task_invalid_status_to_requeue": "Задача не находится в допустимом состоянии для повторной постановки в очередь", + "admin/queue_task_requeued_successfully": "Задача успешно отправлена в очередь.", + "admin/queue_task_triggered_by": "Задача инициирована", + "admin/queue_task_name": "Наименование", + "admin/queue_task_output": "Вывод задачи", + "admin/queue_task_scheduled_for": "Запланировано для", + "admin/queue_task_status": "Состояние", + "admin/queue_task_fragment_total": "Информация о фрагменте задачи" } diff --git a/modules/Discord Integration/language/ru_RU.json b/modules/Discord Integration/language/ru_RU.json index 0932b21605..034af307f9 100644 --- a/modules/Discord Integration/language/ru_RU.json +++ b/modules/Discord Integration/language/ru_RU.json @@ -18,5 +18,7 @@ "discord_integration/discord_widget_theme": "Тема для виджета", "discord_integration/enable_discord_integration": "Включить интеграцию?", "discord_integration/discord_widget_error": "Произошла ошибка при Discord виджете: {{error}}.", - "discord_integration/discord_id_required": "Введите ваш Дискорд Сервер ID." + "discord_integration/discord_id_required": "Введите ваш Дискорд Сервер ID.", + "discord_integration/discord_bot": "Discord бот", + "discord_integration/link_method": "Метод подключения" } diff --git a/modules/Forum/language/ru_RU.json b/modules/Forum/language/ru_RU.json index c75414e277..a3269f793a 100644 --- a/modules/Forum/language/ru_RU.json +++ b/modules/Forum/language/ru_RU.json @@ -180,5 +180,8 @@ "forum/most_posts": "Большинство постов", "forum/no_posts_found": "Посты не найдены.", "forum/highest_reaction_scores": "Самые высокие оценки реакции", - "forum/reaction_score": "Оценка реакции" + "forum/reaction_score": "Оценка реакции", + "forum/news_items_max": "Количество новостей должно быть не больше {{max}}", + "forum/news_items_front_page_limit": "Количество новостей для отображения на главной странице", + "forum/news_items_min": "Количество новостей должно быть не менее {{min}}" } From 5ec1c8d9023dfc6c22c1ce107b5a5a13197b6cff Mon Sep 17 00:00:00 2001 From: Partydragen Date: Fri, 5 May 2023 20:46:39 +0200 Subject: [PATCH 006/193] Make sure Minecraft Integration is enabled (#3356) --- .../includes/endpoints/ServerInfoEndpoint.php | 22 ++++++++++--------- .../endpoints/UpdateGroupsEndpoint.php | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/Core/includes/endpoints/ServerInfoEndpoint.php b/modules/Core/includes/endpoints/ServerInfoEndpoint.php index 1b70984e9b..214086de1a 100644 --- a/modules/Core/includes/endpoints/ServerInfoEndpoint.php +++ b/modules/Core/includes/endpoints/ServerInfoEndpoint.php @@ -64,21 +64,23 @@ public function execute(Nameless2API $api): void { $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } - try { - $integration = Integrations::getInstance()->getIntegration('Minecraft'); + if (Util::getSetting('mc_integration')) { + try { + $integration = Integrations::getInstance()->getIntegration('Minecraft'); - foreach ($_POST['players'] as $uuid => $player) { - $integrationUser = new IntegrationUser($integration, $uuid, 'identifier'); - if ($integrationUser->exists()) { - $this->updateUsername($integrationUser, $player); + foreach ($_POST['players'] as $uuid => $player) { + $integrationUser = new IntegrationUser($integration, $uuid, 'identifier'); + if ($integrationUser->exists()) { + $this->updateUsername($integrationUser, $player); - if (isset($player['placeholders']) && count($player['placeholders'])) { - $this->updatePlaceholders($integrationUser->getUser(), $player); + if (isset($player['placeholders']) && count($player['placeholders'])) { + $this->updatePlaceholders($integrationUser->getUser(), $player); + } } } + } catch (Exception $e) { + $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } - } catch (Exception $e) { - $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } // Server query diff --git a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php index 86d9c63eca..279a1ee57f 100644 --- a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php @@ -15,7 +15,7 @@ public function execute(Nameless2API $api): void { $server_id = $_POST['server_id']; $group_sync_log = []; - if ($server_id == Util::getSetting('group_sync_mc_server')) { + if (Util::getSetting('mc_integration') && $server_id == Util::getSetting('group_sync_mc_server')) { try { $integration = Integrations::getInstance()->getIntegration('Minecraft'); From 15c05448bf22e06df55fb337055f56394f24c4c9 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Fri, 5 May 2023 20:46:39 +0200 Subject: [PATCH 007/193] Make sure Minecraft Integration is enabled (#3356) --- .../includes/endpoints/ServerInfoEndpoint.php | 22 ++++++++++--------- .../endpoints/UpdateGroupsEndpoint.php | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/Core/includes/endpoints/ServerInfoEndpoint.php b/modules/Core/includes/endpoints/ServerInfoEndpoint.php index 1b70984e9b..214086de1a 100644 --- a/modules/Core/includes/endpoints/ServerInfoEndpoint.php +++ b/modules/Core/includes/endpoints/ServerInfoEndpoint.php @@ -64,21 +64,23 @@ public function execute(Nameless2API $api): void { $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } - try { - $integration = Integrations::getInstance()->getIntegration('Minecraft'); + if (Util::getSetting('mc_integration')) { + try { + $integration = Integrations::getInstance()->getIntegration('Minecraft'); - foreach ($_POST['players'] as $uuid => $player) { - $integrationUser = new IntegrationUser($integration, $uuid, 'identifier'); - if ($integrationUser->exists()) { - $this->updateUsername($integrationUser, $player); + foreach ($_POST['players'] as $uuid => $player) { + $integrationUser = new IntegrationUser($integration, $uuid, 'identifier'); + if ($integrationUser->exists()) { + $this->updateUsername($integrationUser, $player); - if (isset($player['placeholders']) && count($player['placeholders'])) { - $this->updatePlaceholders($integrationUser->getUser(), $player); + if (isset($player['placeholders']) && count($player['placeholders'])) { + $this->updatePlaceholders($integrationUser->getUser(), $player); + } } } + } catch (Exception $e) { + $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } - } catch (Exception $e) { - $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } // Server query diff --git a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php index 86d9c63eca..279a1ee57f 100644 --- a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php @@ -15,7 +15,7 @@ public function execute(Nameless2API $api): void { $server_id = $_POST['server_id']; $group_sync_log = []; - if ($server_id == Util::getSetting('group_sync_mc_server')) { + if (Util::getSetting('mc_integration') && $server_id == Util::getSetting('group_sync_mc_server')) { try { $integration = Integrations::getInstance()->getIntegration('Minecraft'); From e66579fe5da0245114c92516c4d4f236ed0a55bf Mon Sep 17 00:00:00 2001 From: Robin Date: Sat, 6 May 2023 11:06:42 +0200 Subject: [PATCH 008/193] Add Russian translation (#3352) Contributed by @Wgis in a github comment: https://github.com/NamelessMC/Nameless/pull/3350#issuecomment-1532655703 Co-authored-by: Ilya Finogenov <20740613+wgis@users.noreply.github.com> --- modules/Members/language/ru_RU.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/ru_RU.json b/modules/Members/language/ru_RU.json index 0967ef424b..1ba89566c8 100644 --- a/modules/Members/language/ru_RU.json +++ b/modules/Members/language/ru_RU.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Пользователи", + "members/new_members": "Новые пользователи", + "members/no_members": "Пользователей нет.", + "members/member_lists": "Списки пользователей", + "members/member_list_hide_banned_users": "Спрятать забанненых?", + "members/member_list_toggled_enabled": "Включен {{list}} список.", + "members/member_list_toggled_disabled": "Выключен {{list}} список.", + "members/view_all": "Просмотр всех", + "members/find_member": "Найти пользователя", + "members/name": "Имя...", + "members/view_group": "Просмотр группы", + "members/group": "Группа...", + "members/viewable_groups": "Просматриваемые группы", + "members/no_results_header": "Нет результатов", + "members/no_results_text": "Не удалось ничего найти", + "members/no_overview_lists_enabled": "Обзорные списки не включены.", + "members/settings_updated_successfully": "Настройки успешно обновлены." +} From b3218baa5ff382362a1b3544a86fa476669dcc8b Mon Sep 17 00:00:00 2001 From: NamelessMC Translations Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 009/193] Translated using translate.namelessmc.com Co-authored-by: NamelessMC Translations Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nl/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/nl/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/nl_NL.json | 16 +++++++++++++++- modules/Members/language/nl_NL.json | 20 +++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/custom/languages/nl_NL.json b/custom/languages/nl_NL.json index a6b947b790..bd0095ac24 100644 --- a/custom/languages/nl_NL.json +++ b/custom/languages/nl_NL.json @@ -1223,5 +1223,19 @@ "admin/authme_db_connection_failed": "Connectie gefaald", "admin/sent_mass_message": "Succesvol een massabericht gestuurd.", "api/groups_updates_successfully": "Groepen geüpdatet", - "user/banned_from_registering": "Je IP is verbannen, je kunt je niet registreren." + "user/banned_from_registering": "Je IP is verbannen, je kunt je niet registreren.", + "admin/user_warned_webhook": "{{punished}} is gewaarschuwd door {{punisher}}.", + "admin/auto_language_help": "Indien ingeschakeld, kunnen gasten en uitgelogde gebruikers de website automatisch hun voorkeurstaal laten detecteren.", + "admin/clone_group": "Maak kopie van groep", + "admin/enable_auto_language": "Automatische taaldetectie aanzetten?", + "admin/query_type": "Querytype", + "admin/internal": "Intern", + "admin/external": "Extern", + "admin/plugin": "Plug-in", + "admin/emoji_style": "Emoji-stijl", + "admin/emoji_native": "Browser's eigen", + "admin/emoji_joypixels": "JoyPixels", + "admin/confirm_delete_placeholder": "Weet je zeker dat je deze placeholder wilt verwijderen?", + "admin/discord_hook": "Discord", + "admin/emoji_twemoji": "Twemoji" } diff --git a/modules/Members/language/nl_NL.json b/modules/Members/language/nl_NL.json index 0967ef424b..2fe6d6c2bb 100644 --- a/modules/Members/language/nl_NL.json +++ b/modules/Members/language/nl_NL.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Leden", + "members/no_members": "Geen leden gevonden.", + "members/member_list_toggled_disabled": "{{list}} lijst met succes uitgeschakeld.", + "members/new_members": "Nieuwe leden", + "members/member_lists": "Ledenlijsten", + "members/member_list_hide_banned_users": "Verbannen gebruikers verbergen?", + "members/member_list_toggled_enabled": "{{list}} lijst succesvol ingeschakeld.", + "members/view_all": "Alles weergeven", + "members/find_member": "Vind lid", + "members/name": "Naam...", + "members/view_group": "Toon groep", + "members/group": "Groep...", + "members/viewable_groups": "Zichtbare groepen", + "members/no_results_header": "Geen resultaten gevonden", + "members/no_results_text": "Je zoekopdracht heeft geen resultaten opgeleverd", + "members/no_overview_lists_enabled": "Er zijn geen overzichtslijsten ingeschakeld.", + "members/settings_updated_successfully": "Instellingen bijgewerkt." +} From 699d906dd48e9590184772317c667a789356d1d1 Mon Sep 17 00:00:00 2001 From: Dominik Roman Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 010/193] Translated using translate.namelessmc.com Co-authored-by: Dominik Roman Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/sk/ Translation: NamelessMC/Website - Members module --- modules/Members/language/sk_SK.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/sk_SK.json b/modules/Members/language/sk_SK.json index 0967ef424b..1d138bc795 100644 --- a/modules/Members/language/sk_SK.json +++ b/modules/Members/language/sk_SK.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Užívatelia", + "members/new_members": "Noví užívatelia", + "members/member_list_toggled_enabled": "List {{list}} bol úspešne povolený.", + "members/no_results_header": "Neboli nájdené žiadne výsledky", + "members/no_members": "Žiadny užívatelia neboli nájdení.", + "members/member_lists": "List užívateľov", + "members/member_list_hide_banned_users": "Skryť zabanovaných užívateľov?", + "members/member_list_toggled_disabled": "List {{list}} bol úspešne zakázaný.", + "members/view_all": "Zobraziť všetko", + "members/find_member": "Hľadať užívateľa", + "members/name": "Meno...", + "members/view_group": "Zobraziť skupinu", + "members/group": "Skupina...", + "members/viewable_groups": "Viditeľné skupiny", + "members/no_results_text": "Vaše hľadanie nevrátilo žiadne výsledky", + "members/no_overview_lists_enabled": "Nie sú povolené žiadne prehľadové zoznamy.", + "members/settings_updated_successfully": "Nastavenia boli úspešne aktualizované." +} From 42a2ebe6df85754a7c9966a2b17d9bc22ce1f05b Mon Sep 17 00:00:00 2001 From: enno123 Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 011/193] Translated using translate.namelessmc.com Co-authored-by: enno123 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/de/ Translation: NamelessMC/Website - Members module --- modules/Members/language/de_DE.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/de_DE.json b/modules/Members/language/de_DE.json index 0967ef424b..2822fb23e7 100644 --- a/modules/Members/language/de_DE.json +++ b/modules/Members/language/de_DE.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Mitglieder", + "members/member_lists": "Mitgliederlisten", + "members/find_member": "Mitglied suchen", + "members/no_results_text": "Deine Suche ergab keine Ergebnisse", + "members/new_members": "Neue Mitglieder", + "members/no_members": "Keine Mitglieder gefunden.", + "members/member_list_hide_banned_users": "Gesperrte Benutzer ausblenden?", + "members/member_list_toggled_enabled": "Erfolgreich die Liste {{list}} aktiviert.", + "members/member_list_toggled_disabled": "Die Liste {{list}} wurde erfolgreich deaktiviert.", + "members/view_all": "Alle anzeigen", + "members/name": "Name...", + "members/view_group": "Gruppe anzeigen", + "members/group": "Gruppe...", + "members/viewable_groups": "Sichtbare Gruppen", + "members/no_results_header": "Keine Ergebnisse gefunden", + "members/no_overview_lists_enabled": "Es sind keine Übersichtslisten aktiviert.", + "members/settings_updated_successfully": "Einstellungen erfolgreich aktualisiert." +} From 2f397804dd6d7e79d2debbdc8fdd03ecc07e6998 Mon Sep 17 00:00:00 2001 From: Robin Date: Sat, 6 May 2023 11:06:42 +0200 Subject: [PATCH 012/193] Add Russian translation (#3352) Contributed by @Wgis in a github comment: https://github.com/NamelessMC/Nameless/pull/3350#issuecomment-1532655703 Co-authored-by: Ilya Finogenov <20740613+wgis@users.noreply.github.com> --- modules/Members/language/ru_RU.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/ru_RU.json b/modules/Members/language/ru_RU.json index 0967ef424b..1ba89566c8 100644 --- a/modules/Members/language/ru_RU.json +++ b/modules/Members/language/ru_RU.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Пользователи", + "members/new_members": "Новые пользователи", + "members/no_members": "Пользователей нет.", + "members/member_lists": "Списки пользователей", + "members/member_list_hide_banned_users": "Спрятать забанненых?", + "members/member_list_toggled_enabled": "Включен {{list}} список.", + "members/member_list_toggled_disabled": "Выключен {{list}} список.", + "members/view_all": "Просмотр всех", + "members/find_member": "Найти пользователя", + "members/name": "Имя...", + "members/view_group": "Просмотр группы", + "members/group": "Группа...", + "members/viewable_groups": "Просматриваемые группы", + "members/no_results_header": "Нет результатов", + "members/no_results_text": "Не удалось ничего найти", + "members/no_overview_lists_enabled": "Обзорные списки не включены.", + "members/settings_updated_successfully": "Настройки успешно обновлены." +} From 73d61a41d6aff8323b9cd554a852404d8da63d44 Mon Sep 17 00:00:00 2001 From: NamelessMC Translations Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 013/193] Translated using translate.namelessmc.com Co-authored-by: NamelessMC Translations Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nl/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/nl/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/nl_NL.json | 16 +++++++++++++++- modules/Members/language/nl_NL.json | 20 +++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/custom/languages/nl_NL.json b/custom/languages/nl_NL.json index a6b947b790..bd0095ac24 100644 --- a/custom/languages/nl_NL.json +++ b/custom/languages/nl_NL.json @@ -1223,5 +1223,19 @@ "admin/authme_db_connection_failed": "Connectie gefaald", "admin/sent_mass_message": "Succesvol een massabericht gestuurd.", "api/groups_updates_successfully": "Groepen geüpdatet", - "user/banned_from_registering": "Je IP is verbannen, je kunt je niet registreren." + "user/banned_from_registering": "Je IP is verbannen, je kunt je niet registreren.", + "admin/user_warned_webhook": "{{punished}} is gewaarschuwd door {{punisher}}.", + "admin/auto_language_help": "Indien ingeschakeld, kunnen gasten en uitgelogde gebruikers de website automatisch hun voorkeurstaal laten detecteren.", + "admin/clone_group": "Maak kopie van groep", + "admin/enable_auto_language": "Automatische taaldetectie aanzetten?", + "admin/query_type": "Querytype", + "admin/internal": "Intern", + "admin/external": "Extern", + "admin/plugin": "Plug-in", + "admin/emoji_style": "Emoji-stijl", + "admin/emoji_native": "Browser's eigen", + "admin/emoji_joypixels": "JoyPixels", + "admin/confirm_delete_placeholder": "Weet je zeker dat je deze placeholder wilt verwijderen?", + "admin/discord_hook": "Discord", + "admin/emoji_twemoji": "Twemoji" } diff --git a/modules/Members/language/nl_NL.json b/modules/Members/language/nl_NL.json index 0967ef424b..2fe6d6c2bb 100644 --- a/modules/Members/language/nl_NL.json +++ b/modules/Members/language/nl_NL.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Leden", + "members/no_members": "Geen leden gevonden.", + "members/member_list_toggled_disabled": "{{list}} lijst met succes uitgeschakeld.", + "members/new_members": "Nieuwe leden", + "members/member_lists": "Ledenlijsten", + "members/member_list_hide_banned_users": "Verbannen gebruikers verbergen?", + "members/member_list_toggled_enabled": "{{list}} lijst succesvol ingeschakeld.", + "members/view_all": "Alles weergeven", + "members/find_member": "Vind lid", + "members/name": "Naam...", + "members/view_group": "Toon groep", + "members/group": "Groep...", + "members/viewable_groups": "Zichtbare groepen", + "members/no_results_header": "Geen resultaten gevonden", + "members/no_results_text": "Je zoekopdracht heeft geen resultaten opgeleverd", + "members/no_overview_lists_enabled": "Er zijn geen overzichtslijsten ingeschakeld.", + "members/settings_updated_successfully": "Instellingen bijgewerkt." +} From 8daffaa6b9cbaf8aec3a241d475854a8b09134e8 Mon Sep 17 00:00:00 2001 From: Dominik Roman Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 014/193] Translated using translate.namelessmc.com Co-authored-by: Dominik Roman Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/sk/ Translation: NamelessMC/Website - Members module --- modules/Members/language/sk_SK.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/sk_SK.json b/modules/Members/language/sk_SK.json index 0967ef424b..1d138bc795 100644 --- a/modules/Members/language/sk_SK.json +++ b/modules/Members/language/sk_SK.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Užívatelia", + "members/new_members": "Noví užívatelia", + "members/member_list_toggled_enabled": "List {{list}} bol úspešne povolený.", + "members/no_results_header": "Neboli nájdené žiadne výsledky", + "members/no_members": "Žiadny užívatelia neboli nájdení.", + "members/member_lists": "List užívateľov", + "members/member_list_hide_banned_users": "Skryť zabanovaných užívateľov?", + "members/member_list_toggled_disabled": "List {{list}} bol úspešne zakázaný.", + "members/view_all": "Zobraziť všetko", + "members/find_member": "Hľadať užívateľa", + "members/name": "Meno...", + "members/view_group": "Zobraziť skupinu", + "members/group": "Skupina...", + "members/viewable_groups": "Viditeľné skupiny", + "members/no_results_text": "Vaše hľadanie nevrátilo žiadne výsledky", + "members/no_overview_lists_enabled": "Nie sú povolené žiadne prehľadové zoznamy.", + "members/settings_updated_successfully": "Nastavenia boli úspešne aktualizované." +} From 3726cedf7814bbb4f23c5c0b32217115f7be5305 Mon Sep 17 00:00:00 2001 From: enno123 Date: Fri, 5 May 2023 18:46:45 +0000 Subject: [PATCH 015/193] Translated using translate.namelessmc.com Co-authored-by: enno123 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/de/ Translation: NamelessMC/Website - Members module --- modules/Members/language/de_DE.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/de_DE.json b/modules/Members/language/de_DE.json index 0967ef424b..2822fb23e7 100644 --- a/modules/Members/language/de_DE.json +++ b/modules/Members/language/de_DE.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Mitglieder", + "members/member_lists": "Mitgliederlisten", + "members/find_member": "Mitglied suchen", + "members/no_results_text": "Deine Suche ergab keine Ergebnisse", + "members/new_members": "Neue Mitglieder", + "members/no_members": "Keine Mitglieder gefunden.", + "members/member_list_hide_banned_users": "Gesperrte Benutzer ausblenden?", + "members/member_list_toggled_enabled": "Erfolgreich die Liste {{list}} aktiviert.", + "members/member_list_toggled_disabled": "Die Liste {{list}} wurde erfolgreich deaktiviert.", + "members/view_all": "Alle anzeigen", + "members/name": "Name...", + "members/view_group": "Gruppe anzeigen", + "members/group": "Gruppe...", + "members/viewable_groups": "Sichtbare Gruppen", + "members/no_results_header": "Keine Ergebnisse gefunden", + "members/no_overview_lists_enabled": "Es sind keine Übersichtslisten aktiviert.", + "members/settings_updated_successfully": "Einstellungen erfolgreich aktualisiert." +} From 607d87d9fd25f26d1cfa39da9f8cfcd58811d98b Mon Sep 17 00:00:00 2001 From: Marcos Date: Sun, 7 May 2023 14:13:23 +0000 Subject: [PATCH 016/193] Translated using translate.namelessmc.com Co-authored-by: Marcos Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/es/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/es/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/es_ES.json | 41 +++++++++++++++++++++++++++-- modules/Members/language/es_ES.json | 20 +++++++++++++- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/custom/languages/es_ES.json b/custom/languages/es_ES.json index 81ed56e64e..4c59f31ca4 100644 --- a/custom/languages/es_ES.json +++ b/custom/languages/es_ES.json @@ -752,7 +752,7 @@ "installer/install": "Instalar", "installer/installer_information": "El instalador le guiará a través del proceso de instalación.", "installer/installer_now_initialising_database": "El instalador está ahora inicializando la base de datos. Esto puede tardar un poco...", - "installer/installer_welcome": "Bienvenido a la versión 2.0 de NamelessMC", + "installer/installer_welcome": "Bienvenido a la versión 2 de NamelessMC", "installer/language": "Idioma", "installer/no": "No", "installer/no_converters_available": "No hay convertidores disponibles.", @@ -1283,5 +1283,42 @@ "admin/queue_runner": "Administrador de cola", "admin/queue_runner_ajax": "AJAX", "admin/queue_runner_cron": "Cron", - "admin/queue_runner_one_of": "Por favor, selecciona un valor válido para el administrador de cola" + "admin/queue_runner_one_of": "Por favor, selecciona un valor válido para el administrador de cola", + "admin/queue_status_in_progress": "En curso", + "admin/queue_task_executed_at": "Ejecutado a las", + "admin/queue_task_invalid_status_to_cancel": "La tarea no se encuentra en un estado válido para ser cancelada", + "installer/username_min_max": "Por favor, asegúrate de que tu nombre de usuario tenga entre {{minUsername}} y {{maxUsername}} caracteres de longitud.", + "general/registration_disabled_message_fallback": "El registro está actualmente desactivado.", + "installer/username_required": "Por favor, introduce un nombre de usuario válido.", + "installer/email_min_max": "Por favor, asegúrate de que tu dirección de correo electrónico tenga entre {{minEmail}} y {{maxEmail}} caracteres de longitud.", + "installer/email_required": "Por favor, introduce un correo electrónico válido.", + "installer/password_min_max": "Por favor, asegúrate de que tu contraseña tenga entre {{minPassword}} y {{maxPassword}} caracteres de longitud.", + "installer/password_required": "Por favor, introduce una contraseña válida.", + "user/continue_with": "Continuar con {{provider}}", + "user/log_in_with": "Iniciar sesión con {{provider}}", + "admin/render_profile_post_hook_info": "Publicación de perfil renderizada", + "admin/queue_status_failed": "Fallido", + "admin/queue_status": "Estado de la cola", + "admin/queue_status_cancelled": "Cancelado", + "admin/queue_status_completed": "Completado", + "admin/queue_status_error": "Error", + "admin/queue_status_ready": "Listo", + "admin/queue_task": "Tarea", + "admin/queue_task_attempts": "Intentos", + "admin/queue_task_action_invalid": "Acción no válida para la tarea", + "admin/queue_task_cancelled_successfully": "Tarea cancelada exitosamente.", + "admin/queue_task_data": "Datos de la tarea", + "admin/queue_task_entity": "Entidad de tarea", + "admin/queue_task_entity_id": "ID de la entidad", + "admin/queue_task_fragment": "¿Tarea fragmentada?", + "admin/queue_task_fragment_next": "Próximo desplazamiento del fragmento de tarea", + "admin/queue_task_fragment_total": "Total de fragmentos de tarea", + "admin/queue_task_invalid_status_to_requeue": "La tarea no se encuentra en un estado válido para volver a ponerse en cola", + "admin/queue_task_requeued_successfully": "La tarea ha sido puesta en cola exitosamente.", + "admin/queue_task_triggered_by": "Tarea activada por", + "admin/queue_task_name": "Nombre", + "admin/queue_task_output": "Resultado de la tarea", + "admin/queue_task_scheduled_at": "Programado para", + "admin/queue_task_scheduled_for": "Programado para", + "admin/queue_task_status": "Estado" } diff --git a/modules/Members/language/es_ES.json b/modules/Members/language/es_ES.json index 0967ef424b..c90db0bcfb 100644 --- a/modules/Members/language/es_ES.json +++ b/modules/Members/language/es_ES.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Miembros", + "members/member_list_hide_banned_users": "¿Ocultar usuarios baneados?", + "members/no_results_header": "No se encontraron resultados", + "members/settings_updated_successfully": "La configuración se actualizó exitosamente.", + "members/new_members": "Nuevos miembros", + "members/no_members": "No se encontraron miembros.", + "members/member_lists": "Listas de miembros", + "members/member_list_toggled_enabled": "Habilitada con éxito la lista {{list}}.", + "members/member_list_toggled_disabled": "Desactivada con éxito la lista {{list}}.", + "members/view_all": "Ver todo", + "members/find_member": "Buscar miembro", + "members/name": "Nombre...", + "members/view_group": "Ver grupo", + "members/group": "Grupo...", + "members/viewable_groups": "Grupos visibles", + "members/no_results_text": "Tu búsqueda no arrojó resultados", + "members/no_overview_lists_enabled": "No se han habilitado listas de resumen." +} From d9fc1efce30fc7dc4018c9398b7e14a3904a5795 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sun, 7 May 2023 14:13:23 +0000 Subject: [PATCH 017/193] Translated using translate.namelessmc.com Co-authored-by: Fjuro Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/cs/ Translation: NamelessMC/Website - Members module --- modules/Members/language/cs_CZ.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/cs_CZ.json b/modules/Members/language/cs_CZ.json index 0967ef424b..af0fa3c43c 100644 --- a/modules/Members/language/cs_CZ.json +++ b/modules/Members/language/cs_CZ.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Členové", + "members/new_members": "Noví členové", + "members/no_members": "Nenalezeni žádní členové.", + "members/member_lists": "Seznam členů", + "members/member_list_hide_banned_users": "Skrýt zabanované uživatele?", + "members/member_list_toggled_enabled": "Seznam {{list}} úspěšně povolen.", + "members/member_list_toggled_disabled": "Seznam {{list}} úspěšně zakázán.", + "members/view_all": "Zobrazit vše", + "members/find_member": "Najít člena", + "members/name": "Jméno...", + "members/view_group": "Zobrazit skupinu", + "members/group": "Skupina...", + "members/viewable_groups": "Zobrazitelné skupiny", + "members/no_results_header": "Nenalezeny žádné výsledky", + "members/no_results_text": "Na váš dotaz nebyly nalezeny žádné výsledky", + "members/no_overview_lists_enabled": "Nejsou povoleny žádné seznamy přehledu.", + "members/settings_updated_successfully": "Nastavení úspěšně aktualizována." +} From 70cdde4bef6170627e6a2c3f343bd0506d6035d1 Mon Sep 17 00:00:00 2001 From: Marcos Date: Sun, 7 May 2023 14:13:23 +0000 Subject: [PATCH 018/193] Translated using translate.namelessmc.com Co-authored-by: Marcos Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/es/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/es/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/es_ES.json | 41 +++++++++++++++++++++++++++-- modules/Members/language/es_ES.json | 20 +++++++++++++- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/custom/languages/es_ES.json b/custom/languages/es_ES.json index 81ed56e64e..4c59f31ca4 100644 --- a/custom/languages/es_ES.json +++ b/custom/languages/es_ES.json @@ -752,7 +752,7 @@ "installer/install": "Instalar", "installer/installer_information": "El instalador le guiará a través del proceso de instalación.", "installer/installer_now_initialising_database": "El instalador está ahora inicializando la base de datos. Esto puede tardar un poco...", - "installer/installer_welcome": "Bienvenido a la versión 2.0 de NamelessMC", + "installer/installer_welcome": "Bienvenido a la versión 2 de NamelessMC", "installer/language": "Idioma", "installer/no": "No", "installer/no_converters_available": "No hay convertidores disponibles.", @@ -1283,5 +1283,42 @@ "admin/queue_runner": "Administrador de cola", "admin/queue_runner_ajax": "AJAX", "admin/queue_runner_cron": "Cron", - "admin/queue_runner_one_of": "Por favor, selecciona un valor válido para el administrador de cola" + "admin/queue_runner_one_of": "Por favor, selecciona un valor válido para el administrador de cola", + "admin/queue_status_in_progress": "En curso", + "admin/queue_task_executed_at": "Ejecutado a las", + "admin/queue_task_invalid_status_to_cancel": "La tarea no se encuentra en un estado válido para ser cancelada", + "installer/username_min_max": "Por favor, asegúrate de que tu nombre de usuario tenga entre {{minUsername}} y {{maxUsername}} caracteres de longitud.", + "general/registration_disabled_message_fallback": "El registro está actualmente desactivado.", + "installer/username_required": "Por favor, introduce un nombre de usuario válido.", + "installer/email_min_max": "Por favor, asegúrate de que tu dirección de correo electrónico tenga entre {{minEmail}} y {{maxEmail}} caracteres de longitud.", + "installer/email_required": "Por favor, introduce un correo electrónico válido.", + "installer/password_min_max": "Por favor, asegúrate de que tu contraseña tenga entre {{minPassword}} y {{maxPassword}} caracteres de longitud.", + "installer/password_required": "Por favor, introduce una contraseña válida.", + "user/continue_with": "Continuar con {{provider}}", + "user/log_in_with": "Iniciar sesión con {{provider}}", + "admin/render_profile_post_hook_info": "Publicación de perfil renderizada", + "admin/queue_status_failed": "Fallido", + "admin/queue_status": "Estado de la cola", + "admin/queue_status_cancelled": "Cancelado", + "admin/queue_status_completed": "Completado", + "admin/queue_status_error": "Error", + "admin/queue_status_ready": "Listo", + "admin/queue_task": "Tarea", + "admin/queue_task_attempts": "Intentos", + "admin/queue_task_action_invalid": "Acción no válida para la tarea", + "admin/queue_task_cancelled_successfully": "Tarea cancelada exitosamente.", + "admin/queue_task_data": "Datos de la tarea", + "admin/queue_task_entity": "Entidad de tarea", + "admin/queue_task_entity_id": "ID de la entidad", + "admin/queue_task_fragment": "¿Tarea fragmentada?", + "admin/queue_task_fragment_next": "Próximo desplazamiento del fragmento de tarea", + "admin/queue_task_fragment_total": "Total de fragmentos de tarea", + "admin/queue_task_invalid_status_to_requeue": "La tarea no se encuentra en un estado válido para volver a ponerse en cola", + "admin/queue_task_requeued_successfully": "La tarea ha sido puesta en cola exitosamente.", + "admin/queue_task_triggered_by": "Tarea activada por", + "admin/queue_task_name": "Nombre", + "admin/queue_task_output": "Resultado de la tarea", + "admin/queue_task_scheduled_at": "Programado para", + "admin/queue_task_scheduled_for": "Programado para", + "admin/queue_task_status": "Estado" } diff --git a/modules/Members/language/es_ES.json b/modules/Members/language/es_ES.json index 0967ef424b..c90db0bcfb 100644 --- a/modules/Members/language/es_ES.json +++ b/modules/Members/language/es_ES.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Miembros", + "members/member_list_hide_banned_users": "¿Ocultar usuarios baneados?", + "members/no_results_header": "No se encontraron resultados", + "members/settings_updated_successfully": "La configuración se actualizó exitosamente.", + "members/new_members": "Nuevos miembros", + "members/no_members": "No se encontraron miembros.", + "members/member_lists": "Listas de miembros", + "members/member_list_toggled_enabled": "Habilitada con éxito la lista {{list}}.", + "members/member_list_toggled_disabled": "Desactivada con éxito la lista {{list}}.", + "members/view_all": "Ver todo", + "members/find_member": "Buscar miembro", + "members/name": "Nombre...", + "members/view_group": "Ver grupo", + "members/group": "Grupo...", + "members/viewable_groups": "Grupos visibles", + "members/no_results_text": "Tu búsqueda no arrojó resultados", + "members/no_overview_lists_enabled": "No se han habilitado listas de resumen." +} From c0ba33811a1bd90d78517e3b04a9b9981fa49e5a Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sun, 7 May 2023 14:13:23 +0000 Subject: [PATCH 019/193] Translated using translate.namelessmc.com Co-authored-by: Fjuro Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/cs/ Translation: NamelessMC/Website - Members module --- modules/Members/language/cs_CZ.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/cs_CZ.json b/modules/Members/language/cs_CZ.json index 0967ef424b..af0fa3c43c 100644 --- a/modules/Members/language/cs_CZ.json +++ b/modules/Members/language/cs_CZ.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Členové", + "members/new_members": "Noví členové", + "members/no_members": "Nenalezeni žádní členové.", + "members/member_lists": "Seznam členů", + "members/member_list_hide_banned_users": "Skrýt zabanované uživatele?", + "members/member_list_toggled_enabled": "Seznam {{list}} úspěšně povolen.", + "members/member_list_toggled_disabled": "Seznam {{list}} úspěšně zakázán.", + "members/view_all": "Zobrazit vše", + "members/find_member": "Najít člena", + "members/name": "Jméno...", + "members/view_group": "Zobrazit skupinu", + "members/group": "Skupina...", + "members/viewable_groups": "Zobrazitelné skupiny", + "members/no_results_header": "Nenalezeny žádné výsledky", + "members/no_results_text": "Na váš dotaz nebyly nalezeny žádné výsledky", + "members/no_overview_lists_enabled": "Nejsou povoleny žádné seznamy přehledu.", + "members/settings_updated_successfully": "Nastavení úspěšně aktualizována." +} From 2640314eaa92d8f235358077387ac7d9b176cbd5 Mon Sep 17 00:00:00 2001 From: Robin Date: Mon, 8 May 2023 22:05:56 +0200 Subject: [PATCH 020/193] Include .htaccess file in release zip (#3362) --- dev/scripts/release.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/scripts/release.py b/dev/scripts/release.py index 9b5c50b966..8ba212a632 100644 --- a/dev/scripts/release.py +++ b/dev/scripts/release.py @@ -18,6 +18,7 @@ ] INCLUDE_FILES = [ + '.htaccess', '403.php', '404.php', 'index.php', From e5e3e6a850b5a86b8c7211d4d4f10d0011600f23 Mon Sep 17 00:00:00 2001 From: Robin Date: Mon, 8 May 2023 22:05:56 +0200 Subject: [PATCH 021/193] Include .htaccess file in release zip (#3362) --- dev/scripts/release.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/scripts/release.py b/dev/scripts/release.py index 9b5c50b966..8ba212a632 100644 --- a/dev/scripts/release.py +++ b/dev/scripts/release.py @@ -18,6 +18,7 @@ ] INCLUDE_FILES = [ + '.htaccess', '403.php', '404.php', 'index.php', From 40aa317b91ac0b0d8e88c0d7f1bd3dbfe0687135 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Tue, 9 May 2023 20:05:29 +0200 Subject: [PATCH 022/193] Fix missing cache settings (#3361) --- core/classes/Database/DatabaseInitialiser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 47bdb084ab..55845eea9f 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -7,7 +7,7 @@ class DatabaseInitialiser { private function __construct() { $this->_db = DB::getInstance(); - $this->_cache = new Cache(); + $this->_cache = new Cache(['name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/']); } public static function runPreUser() { From 8582e6def55bc70ab0b6263655a5c2bfa5d45673 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Wed, 10 May 2023 13:00:07 +0200 Subject: [PATCH 023/193] Fix user group isssue (#3365) Closes https://github.com/NamelessMC/Nameless/issues/3363 --- core/classes/Core/User.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/classes/Core/User.php b/core/classes/Core/User.php index 0d2faef8c0..b689b32dc5 100644 --- a/core/classes/Core/User.php +++ b/core/classes/Core/User.php @@ -6,7 +6,7 @@ * @author Samerton * @author Partydragen * @author Aberdeener - * @version 2.0.2 + * @version 2.1.1 * @license MIT */ class User { @@ -130,7 +130,7 @@ private function find(string $value, string $field = 'id'): bool { * @return bool True on success, false if they already have it. */ public function addGroup(int $group_id, int $expire = 0): bool { - if (array_key_exists($group_id, $this->_groups ?? [])) { + if (array_key_exists($group_id, $this->getGroups())) { return false; } @@ -545,6 +545,7 @@ public function getGroups(): array { $default_group = Group::find(1, 'default_group'); $default_group_id = $default_group->id ?? 1; + $this->_groups = []; $this->addGroup($default_group_id); } From 37d698bf19e05a648c827065f4e358dd4fcc953c Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 May 2023 12:00:50 +0100 Subject: [PATCH 024/193] Fix forum title/description encoding on edit (#3359) --- modules/Forum/pages/panel/forums.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/Forum/pages/panel/forums.php b/modules/Forum/pages/panel/forums.php index 8667c67857..74f06c9255 100644 --- a/modules/Forum/pages/panel/forums.php +++ b/modules/Forum/pages/panel/forums.php @@ -537,13 +537,13 @@ // Update the forum $to_update = [ - 'forum_title' => Output::getClean(Input::get('title')), - 'forum_description' => Output::getClean(Input::get('description')), + 'forum_title' => Input::get('title'), + 'forum_description' => Input::get('description'), 'news' => Input::get('display'), 'parent' => $parent, 'redirect_forum' => $redirect, 'icon' => Input::get('icon'), - 'forum_type' => Output::getClean(Input::get('forum_type')), + 'forum_type' => Input::get('forum_type'), 'topic_placeholder' => Input::get('topic_placeholder'), 'hooks' => $hooks, 'default_labels' => $default_labels From 104c524a0ee27e4393bf8ea244870fc821dcacf6 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Tue, 9 May 2023 20:05:29 +0200 Subject: [PATCH 025/193] Fix missing cache settings (#3361) --- core/classes/Database/DatabaseInitialiser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 47bdb084ab..55845eea9f 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -7,7 +7,7 @@ class DatabaseInitialiser { private function __construct() { $this->_db = DB::getInstance(); - $this->_cache = new Cache(); + $this->_cache = new Cache(['name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/']); } public static function runPreUser() { From d984af2614faa9c8bb44c62688c750c3d9387a3b Mon Sep 17 00:00:00 2001 From: Partydragen Date: Wed, 10 May 2023 13:00:07 +0200 Subject: [PATCH 026/193] Fix user group isssue (#3365) Closes https://github.com/NamelessMC/Nameless/issues/3363 --- core/classes/Core/User.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/classes/Core/User.php b/core/classes/Core/User.php index 0d2faef8c0..b689b32dc5 100644 --- a/core/classes/Core/User.php +++ b/core/classes/Core/User.php @@ -6,7 +6,7 @@ * @author Samerton * @author Partydragen * @author Aberdeener - * @version 2.0.2 + * @version 2.1.1 * @license MIT */ class User { @@ -130,7 +130,7 @@ private function find(string $value, string $field = 'id'): bool { * @return bool True on success, false if they already have it. */ public function addGroup(int $group_id, int $expire = 0): bool { - if (array_key_exists($group_id, $this->_groups ?? [])) { + if (array_key_exists($group_id, $this->getGroups())) { return false; } @@ -545,6 +545,7 @@ public function getGroups(): array { $default_group = Group::find(1, 'default_group'); $default_group_id = $default_group->id ?? 1; + $this->_groups = []; $this->addGroup($default_group_id); } From 44902cfd6c5ca729a8fc4495ea3d2974699561b4 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 May 2023 12:00:50 +0100 Subject: [PATCH 027/193] Fix forum title/description encoding on edit (#3359) --- modules/Forum/pages/panel/forums.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/Forum/pages/panel/forums.php b/modules/Forum/pages/panel/forums.php index 8667c67857..74f06c9255 100644 --- a/modules/Forum/pages/panel/forums.php +++ b/modules/Forum/pages/panel/forums.php @@ -537,13 +537,13 @@ // Update the forum $to_update = [ - 'forum_title' => Output::getClean(Input::get('title')), - 'forum_description' => Output::getClean(Input::get('description')), + 'forum_title' => Input::get('title'), + 'forum_description' => Input::get('description'), 'news' => Input::get('display'), 'parent' => $parent, 'redirect_forum' => $redirect, 'icon' => Input::get('icon'), - 'forum_type' => Output::getClean(Input::get('forum_type')), + 'forum_type' => Input::get('forum_type'), 'topic_placeholder' => Input::get('topic_placeholder'), 'hooks' => $hooks, 'default_labels' => $default_labels From c555b4197b50fe380879a45528b143b4685f7618 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 10 May 2023 14:52:32 +0000 Subject: [PATCH 028/193] Remove unable to update groups catch (#3360) --- modules/Core/classes/Misc/CoreApiErrors.php | 1 - .../endpoints/UpdateGroupsEndpoint.php | 20 ++++++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/modules/Core/classes/Misc/CoreApiErrors.php b/modules/Core/classes/Misc/CoreApiErrors.php index 9b0cb5ab7b..a5b1d0c40b 100644 --- a/modules/Core/classes/Misc/CoreApiErrors.php +++ b/modules/Core/classes/Misc/CoreApiErrors.php @@ -36,7 +36,6 @@ class CoreApiErrors { public const ERROR_USER_ALREADY_ACTIVE = 'core:user_already_active'; public const ERROR_UNABLE_TO_UPDATE_USERNAME = 'core:unable_to_update_username'; - public const ERROR_UNABLE_TO_UPDATE_GROUPS = 'core:unable_to_update_groups'; public const ERROR_INTEGRATION_IDENTIFIER_ERRORS = 'core:integration_identifier_errors'; public const ERROR_INTEGRATION_USERNAME_ERRORS = 'core:integration_username_errors'; diff --git a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php index 279a1ee57f..4a8fe0f396 100644 --- a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php @@ -16,20 +16,16 @@ public function execute(Nameless2API $api): void { $group_sync_log = []; if (Util::getSetting('mc_integration') && $server_id == Util::getSetting('group_sync_mc_server')) { - try { - $integration = Integrations::getInstance()->getIntegration('Minecraft'); - - foreach ($_POST['player_groups'] as $uuid => $groups) { - $integrationUser = new IntegrationUser($integration, str_replace('-', '', $uuid), 'identifier'); - if ($integrationUser->exists()) { - $log = $this->updateGroups($integrationUser, $groups['groups']); - if (count($log)) { - $group_sync_log[] = $log; - } + $integration = Integrations::getInstance()->getIntegration('Minecraft'); + + foreach ($_POST['player_groups'] as $uuid => $groups) { + $integrationUser = new IntegrationUser($integration, str_replace('-', '', $uuid), 'identifier'); + if ($integrationUser->exists()) { + $log = $this->updateGroups($integrationUser, $groups['groups']); + if (count($log)) { + $group_sync_log[] = $log; } } - } catch (Exception $e) { - $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_GROUPS, $e->getMessage(), 500); } $api->returnArray(array_merge(['message' => $api->getLanguage()->get('api', 'groups_updates_successfully')], ['log' => $group_sync_log])); From 571200fc24a9b4b81a0520d2ec60d98ab30f0813 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 10 May 2023 14:52:32 +0000 Subject: [PATCH 029/193] Remove unable to update groups catch (#3360) --- modules/Core/classes/Misc/CoreApiErrors.php | 1 - .../endpoints/UpdateGroupsEndpoint.php | 20 ++++++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/modules/Core/classes/Misc/CoreApiErrors.php b/modules/Core/classes/Misc/CoreApiErrors.php index 9b0cb5ab7b..a5b1d0c40b 100644 --- a/modules/Core/classes/Misc/CoreApiErrors.php +++ b/modules/Core/classes/Misc/CoreApiErrors.php @@ -36,7 +36,6 @@ class CoreApiErrors { public const ERROR_USER_ALREADY_ACTIVE = 'core:user_already_active'; public const ERROR_UNABLE_TO_UPDATE_USERNAME = 'core:unable_to_update_username'; - public const ERROR_UNABLE_TO_UPDATE_GROUPS = 'core:unable_to_update_groups'; public const ERROR_INTEGRATION_IDENTIFIER_ERRORS = 'core:integration_identifier_errors'; public const ERROR_INTEGRATION_USERNAME_ERRORS = 'core:integration_username_errors'; diff --git a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php index 279a1ee57f..4a8fe0f396 100644 --- a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php @@ -16,20 +16,16 @@ public function execute(Nameless2API $api): void { $group_sync_log = []; if (Util::getSetting('mc_integration') && $server_id == Util::getSetting('group_sync_mc_server')) { - try { - $integration = Integrations::getInstance()->getIntegration('Minecraft'); - - foreach ($_POST['player_groups'] as $uuid => $groups) { - $integrationUser = new IntegrationUser($integration, str_replace('-', '', $uuid), 'identifier'); - if ($integrationUser->exists()) { - $log = $this->updateGroups($integrationUser, $groups['groups']); - if (count($log)) { - $group_sync_log[] = $log; - } + $integration = Integrations::getInstance()->getIntegration('Minecraft'); + + foreach ($_POST['player_groups'] as $uuid => $groups) { + $integrationUser = new IntegrationUser($integration, str_replace('-', '', $uuid), 'identifier'); + if ($integrationUser->exists()) { + $log = $this->updateGroups($integrationUser, $groups['groups']); + if (count($log)) { + $group_sync_log[] = $log; } } - } catch (Exception $e) { - $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_GROUPS, $e->getMessage(), 500); } $api->returnArray(array_merge(['message' => $api->getLanguage()->get('api', 'groups_updates_successfully')], ['log' => $group_sync_log])); From d350f9f69070dbcaa82ef5689e47bc2692dbdc30 Mon Sep 17 00:00:00 2001 From: David Morales Date: Wed, 10 May 2023 13:13:21 +0000 Subject: [PATCH 030/193] Translated using translate.namelessmc.com Co-authored-by: David Morales Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/es_419/ Translation: NamelessMC/Website - Members module --- modules/Members/language/es_419.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/es_419.json b/modules/Members/language/es_419.json index 0967ef424b..c4eb19d9f1 100644 --- a/modules/Members/language/es_419.json +++ b/modules/Members/language/es_419.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Miembros", + "members/new_members": "Nuevos miembros", + "members/no_members": "No se encontraron miembros.", + "members/member_lists": "Lista de miembros", + "members/member_list_hide_banned_users": "Ocultar miembros baneados?", + "members/member_list_toggled_enabled": "La lista {{list}} se ha activado correctamente.", + "members/member_list_toggled_disabled": "La lista {{list}} se ha desactivado correctamente.", + "members/view_all": "Ver todo", + "members/find_member": "Buscar miembro", + "members/name": "Nombre...", + "members/view_group": "Ver grupo", + "members/group": "Grupo...", + "members/viewable_groups": "Grupos disponibles", + "members/no_results_header": "No se han encontrado resultados", + "members/no_results_text": "Tu búsqueda no devolvió resultados", + "members/no_overview_lists_enabled": "No se han habilitado listas de resumen.", + "members/settings_updated_successfully": "La configuración se actualizó exitosamente." +} From d5fd6be14cdae265a409ae3b48360a98f7181534 Mon Sep 17 00:00:00 2001 From: David Morales Date: Wed, 10 May 2023 13:13:21 +0000 Subject: [PATCH 031/193] Translated using translate.namelessmc.com Co-authored-by: David Morales Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/es_419/ Translation: NamelessMC/Website - Members module --- modules/Members/language/es_419.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/Members/language/es_419.json b/modules/Members/language/es_419.json index 0967ef424b..c4eb19d9f1 100644 --- a/modules/Members/language/es_419.json +++ b/modules/Members/language/es_419.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Miembros", + "members/new_members": "Nuevos miembros", + "members/no_members": "No se encontraron miembros.", + "members/member_lists": "Lista de miembros", + "members/member_list_hide_banned_users": "Ocultar miembros baneados?", + "members/member_list_toggled_enabled": "La lista {{list}} se ha activado correctamente.", + "members/member_list_toggled_disabled": "La lista {{list}} se ha desactivado correctamente.", + "members/view_all": "Ver todo", + "members/find_member": "Buscar miembro", + "members/name": "Nombre...", + "members/view_group": "Ver grupo", + "members/group": "Grupo...", + "members/viewable_groups": "Grupos disponibles", + "members/no_results_header": "No se han encontrado resultados", + "members/no_results_text": "Tu búsqueda no devolvió resultados", + "members/no_overview_lists_enabled": "No se han habilitado listas de resumen.", + "members/settings_updated_successfully": "La configuración se actualizó exitosamente." +} From 5aaabdab74fddbea3e539fdf7b6477e7ba357fa4 Mon Sep 17 00:00:00 2001 From: PadowYT2 Date: Thu, 11 May 2023 16:21:43 +0300 Subject: [PATCH 032/193] Update README.md (#3368) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index db8d31c346..6cf4102bb7 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ If you would like to assist with NamelessMC development by translating to your l Please see the contributing document for information on how to contribute to NamelessMC. ## Security Policy -The security policy for NamelessMC can be found [here](https://github.com/NamelessMC/Nameless/blob/v2/SECURITY.md). +The security policy for NamelessMC can be found [here](/.github/SECURITY.md). ## Special Thanks -- All NamelessMC [contributors](https://github.com/NamelessMC/Nameless/graphs/contributors). \ No newline at end of file +- All NamelessMC [contributors](https://github.com/NamelessMC/Nameless/graphs/contributors). From 104810f6749c38a00d7a3b5571d5f3820dcced18 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 11 May 2023 19:09:05 +0000 Subject: [PATCH 033/193] Remove placeholder from singular message (#3369) --- custom/languages/en_UK.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/en_UK.json b/custom/languages/en_UK.json index 53623c0441..f5fb9939d4 100644 --- a/custom/languages/en_UK.json +++ b/custom/languages/en_UK.json @@ -1100,7 +1100,7 @@ "time/less_than_a_minute": "less than a minute ago", "time/over_x_years": "over {{count}} years ago", "user/1_new_alert": "You have 1 new alert", - "user/1_new_message": "You have {{count}} new message", + "user/1_new_message": "You have 1 new message", "user/1_reaction": "1 reaction", "user/1_reply": "1 reply", "user/about": "About", From 8b8fce119e733d439c62bd8fa5d0c3afccbdedf8 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 11 May 2023 19:09:05 +0000 Subject: [PATCH 034/193] Remove placeholder from singular message (#3369) --- custom/languages/en_UK.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/en_UK.json b/custom/languages/en_UK.json index 53623c0441..f5fb9939d4 100644 --- a/custom/languages/en_UK.json +++ b/custom/languages/en_UK.json @@ -1100,7 +1100,7 @@ "time/less_than_a_minute": "less than a minute ago", "time/over_x_years": "over {{count}} years ago", "user/1_new_alert": "You have 1 new alert", - "user/1_new_message": "You have {{count}} new message", + "user/1_new_message": "You have 1 new message", "user/1_reaction": "1 reaction", "user/1_reply": "1 reply", "user/about": "About", From 3cd2e4f8dc7c7470cbacb7d629dc37cf809d344c Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Sat, 13 May 2023 14:58:34 -0600 Subject: [PATCH 035/193] Fix not being able to see Members page in Navigation settings (#3372) --- modules/Members/module.php | 68 ++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/modules/Members/module.php b/modules/Members/module.php index a8cd59a1df..ac5dcd7ea8 100644 --- a/modules/Members/module.php +++ b/modules/Members/module.php @@ -56,44 +56,42 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart 'admincp.members' => $this->_members_language->get('members', 'member_lists') ]); - if (defined('FRONT_END')) { - $cache->setCache('navbar_order'); - if (!$cache->isCached('members_order')) { - $members_order = 5; - $cache->store('members_order', 5); - } else { - $members_order = $cache->retrieve('members_order'); - } + $cache->setCache('navbar_order'); + if (!$cache->isCached('members_order')) { + $members_order = 5; + $cache->store('members_order', 5); + } else { + $members_order = $cache->retrieve('members_order'); + } - $cache->setCache('navbar_icons'); - if (!$cache->isCached('members_icon')) { - $members_icon = ''; - } else { - $members_icon = $cache->retrieve('members_icon'); - } + $cache->setCache('navbar_icons'); + if (!$cache->isCached('members_icon')) { + $members_icon = ''; + } else { + $members_icon = $cache->retrieve('members_icon'); + } - $cache->setCache('nav_location'); - if (!$cache->isCached('members_location')) { - $link_location = 1; - $cache->store('members_location', 1); - } else { - $link_location = $cache->retrieve('members_location'); - } + $cache->setCache('nav_location'); + if (!$cache->isCached('members_location')) { + $link_location = 1; + $cache->store('members_location', 1); + } else { + $link_location = $cache->retrieve('members_location'); + } - switch ($link_location) { - case 1: - // Navbar - $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_order, $members_icon); - break; - case 2: - // "More" dropdown - $navs[0]->addItemToDropdown('more_dropdown', 'members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_icon, $members_order); - break; - case 3: - // Footer - $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'footer', null, $members_order, $members_icon); - break; - } + switch ($link_location) { + case 1: + // Navbar + $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_order, $members_icon); + break; + case 2: + // "More" dropdown + $navs[0]->addItemToDropdown('more_dropdown', 'members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_icon, $members_order); + break; + case 3: + // Footer + $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'footer', null, $members_order, $members_icon); + break; } if (defined('BACK_END')) { From 3c0c372f4ef7595aba01fed87981a3a7ddd5e5e2 Mon Sep 17 00:00:00 2001 From: enno123 Date: Fri, 12 May 2023 22:13:21 +0000 Subject: [PATCH 036/193] Translated using translate.namelessmc.com Co-authored-by: enno123 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index 866f96cfb0..4e55ce601d 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -847,7 +847,7 @@ "time/less_than_a_minute": "vor weniger als einer Minute", "time/over_x_years": "über {{count}} Jahre her", "user/1_new_alert": "Du hast 1 neue Benachrichtigung", - "user/1_new_message": "Du hast {{count}} neue Nachrichten", + "user/1_new_message": "Du hast 1 neue Nachrichten", "user/1_reaction": "1 Reaktion", "user/1_reply": "1 Antwort", "user/about": "Über Mich", From 1d2827c04c211b4d1b15625de0993affcb244acf Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Sat, 13 May 2023 14:58:34 -0600 Subject: [PATCH 037/193] Fix not being able to see Members page in Navigation settings (#3372) --- modules/Members/module.php | 68 ++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/modules/Members/module.php b/modules/Members/module.php index a8cd59a1df..ac5dcd7ea8 100644 --- a/modules/Members/module.php +++ b/modules/Members/module.php @@ -56,44 +56,42 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart 'admincp.members' => $this->_members_language->get('members', 'member_lists') ]); - if (defined('FRONT_END')) { - $cache->setCache('navbar_order'); - if (!$cache->isCached('members_order')) { - $members_order = 5; - $cache->store('members_order', 5); - } else { - $members_order = $cache->retrieve('members_order'); - } + $cache->setCache('navbar_order'); + if (!$cache->isCached('members_order')) { + $members_order = 5; + $cache->store('members_order', 5); + } else { + $members_order = $cache->retrieve('members_order'); + } - $cache->setCache('navbar_icons'); - if (!$cache->isCached('members_icon')) { - $members_icon = ''; - } else { - $members_icon = $cache->retrieve('members_icon'); - } + $cache->setCache('navbar_icons'); + if (!$cache->isCached('members_icon')) { + $members_icon = ''; + } else { + $members_icon = $cache->retrieve('members_icon'); + } - $cache->setCache('nav_location'); - if (!$cache->isCached('members_location')) { - $link_location = 1; - $cache->store('members_location', 1); - } else { - $link_location = $cache->retrieve('members_location'); - } + $cache->setCache('nav_location'); + if (!$cache->isCached('members_location')) { + $link_location = 1; + $cache->store('members_location', 1); + } else { + $link_location = $cache->retrieve('members_location'); + } - switch ($link_location) { - case 1: - // Navbar - $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_order, $members_icon); - break; - case 2: - // "More" dropdown - $navs[0]->addItemToDropdown('more_dropdown', 'members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_icon, $members_order); - break; - case 3: - // Footer - $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'footer', null, $members_order, $members_icon); - break; - } + switch ($link_location) { + case 1: + // Navbar + $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_order, $members_icon); + break; + case 2: + // "More" dropdown + $navs[0]->addItemToDropdown('more_dropdown', 'members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'top', null, $members_icon, $members_order); + break; + case 3: + // Footer + $navs[0]->add('members', $this->_members_language->get('members', 'members'), URL::build('/members'), 'footer', null, $members_order, $members_icon); + break; } if (defined('BACK_END')) { From c57c416411ab2094bec4430223e72152f844cf8a Mon Sep 17 00:00:00 2001 From: enno123 Date: Fri, 12 May 2023 22:13:21 +0000 Subject: [PATCH 038/193] Translated using translate.namelessmc.com Co-authored-by: enno123 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index 866f96cfb0..4e55ce601d 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -847,7 +847,7 @@ "time/less_than_a_minute": "vor weniger als einer Minute", "time/over_x_years": "über {{count}} Jahre her", "user/1_new_alert": "Du hast 1 neue Benachrichtigung", - "user/1_new_message": "Du hast {{count}} neue Nachrichten", + "user/1_new_message": "Du hast 1 neue Nachrichten", "user/1_reaction": "1 Reaktion", "user/1_reply": "1 Antwort", "user/about": "Über Mich", From 3f89e244358d7c87736a2ecc0324450533f1375a Mon Sep 17 00:00:00 2001 From: Fjuro Date: Mon, 15 May 2023 11:13:25 +0000 Subject: [PATCH 039/193] Translated using translate.namelessmc.com Co-authored-by: Fjuro Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/cs/ Translation: NamelessMC/Website - Core --- custom/languages/cs_CZ.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/cs_CZ.json b/custom/languages/cs_CZ.json index fe1aa6aefd..db22d1e7c0 100644 --- a/custom/languages/cs_CZ.json +++ b/custom/languages/cs_CZ.json @@ -875,7 +875,7 @@ "time/less_than_a_minute": "před méně než minutou", "time/over_x_years": "před {{count}} lety", "user/1_new_alert": "Máte 1 nové upozornění", - "user/1_new_message": "Máte {{count}} novou zprávu", + "user/1_new_message": "Máte 1 novou zprávu", "user/1_reaction": "1 reakce", "user/1_reply": "1 odpověď", "user/about": "O uživateli", From 876f8e41814ce0544a190e7944500eb4dea050e7 Mon Sep 17 00:00:00 2001 From: Edouard DUCHESNES Date: Mon, 15 May 2023 11:13:25 +0000 Subject: [PATCH 040/193] Translated using translate.namelessmc.com Co-authored-by: Edouard DUCHESNES Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/fr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-discord-integration/fr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/fr/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Discord Integration Translation: NamelessMC/Website - Members module --- custom/languages/fr_FR.json | 32 +++++++++++++++++-- .../Discord Integration/language/fr_FR.json | 10 +++--- modules/Members/language/fr_FR.json | 20 +++++++++++- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/custom/languages/fr_FR.json b/custom/languages/fr_FR.json index fac03024f1..c0e9011141 100644 --- a/custom/languages/fr_FR.json +++ b/custom/languages/fr_FR.json @@ -339,7 +339,7 @@ "admin/placeholders": "Espace réservé", "admin/placeholders_friendly_name": "Nom amical", "admin/placeholders_friendly_name_info": "Utilisez cette option pour attribuer un 'surnom\\’ à cet espace réservé. Le nom amical sera utilisé à la place du nom brut.", - "admin/placeholders_info": "Les espaces réservés permettent au plugin NamelessMC Spigot d'envoyer des statistiques sur chaque joueur à votre site web afin qu'il puisse les afficher sur son profil et dans les messages du forum.", + "admin/placeholders_info": "Les espaces réservés permettent au plugin NamelessMC d'envoyer des statistiques sur chaque joueur à votre site web afin qu'il puisse les afficher sur son profil et dans les messages du forum.", "admin/placeholders_last_updated": "Dernière mise à jour", "admin/placeholders_name": "Nom", "admin/placeholders_none": "Il n'y a pas d'espace réservé.", @@ -1040,5 +1040,33 @@ "admin/new_hook": "Nouveau Webhook", "admin/group_sync_server": "Sélectionnez un serveur Minecraft à utiliser pour la synchronisation des groupe", "admin/client_id": "ID du client", - "admin/client_secret": "Secret du client" + "admin/client_secret": "Secret du client", + "admin/user_warned_webhook": "{{punished}} a été averti par {{punisher}}.", + "admin/image": "Image", + "admin/user_banned_webhook": "{{punished}} a été banni du site internet par {{punisher}}.", + "admin/auto_language_help": "Si activé, les invités et les utilisateurs déconnectés pourront laisser le site internet détecter automatiquement leur langue préférée.", + "admin/enable_auto_language": "Activer la détection automatique des langues ?", + "admin/event_supports_discord": "Cet événement prend en charge les webhooks Discord et dispose d'une intégration personnalisée.", + "admin/query_type_help": "Si le serveur query interne par défaut ne fonctionne pas, essayez une autre option.", + "admin/no_item_selected": "Aucun élément sélectionné", + "admin/pages": "Pages", + "admin/oauth": "OAuth", + "admin/oauth_info": "Configurez les fournisseurs OAuth pour permettre aux utilisateurs de se connecter avec leurs comptes de réseaux sociaux. {{docLinkStart}}Consultez notre documentation pour obtenir de l'aide{{docLinkEnd}}.", + "admin/placeholders_score": "Score", + "admin/not_linked": "Non lié", + "admin/not_set": "Non défini", + "admin/mass_email_failed_check_logs": "L'envoi d'un ou plusieurs courriels a échoué. Veuillez consulter le journal des courriels pour plus d'informations.", + "admin/no_hooks_yet": "Il n'y a pas encore de webhooks.", + "admin/panel_template_third_party": "Le modèle {{name}} est un modèle tiers. Veuillez noter que la compatibilité des versions n'est pas garantie entre les mises à jour mineures de NamelessMC, et que les problèmes doivent être redirigés vers l'auteur du modèle.", + "admin/authme_db_connection_success": "Connexion réussie", + "admin/authme_db_connection_failed": "Connexion échouée", + "admin/authme_db_test_connection": "Test de connexion", + "admin/page_url_contains_nameless_path": "Votre page personnalisée écraserait une page NamelessMC.", + "admin/queue": "File d'attente", + "admin/queue_cancel_task": "Annuler la tâche", + "admin/discord_hook": "Discord", + "admin/event_supports_normal": "Cet événement prend en charge les webhooks normaux.", + "admin/placeholders_last_updated_time": "Dernière mise à jour : {{time}}", + "admin/placeholders_player": "Joueur", + "admin/queue_cancel_task_confirm": "Êtes-vous sûr de vouloir annuler cette tâche ?" } diff --git a/modules/Discord Integration/language/fr_FR.json b/modules/Discord Integration/language/fr_FR.json index 22e3b50c67..267c7cb66c 100644 --- a/modules/Discord Integration/language/fr_FR.json +++ b/modules/Discord Integration/language/fr_FR.json @@ -9,14 +9,16 @@ "discord_integration/discord_widget_theme": "Thème Discord Widget", "discord_integration/discord_widget_error": "Une erreur s'est produite lors de l'obtention du widget Discord : {{error}}.", "discord_integration/discord_id_required": "Veuillez entrer votre ID de serveur Discord.", - "discord_integration/discord_id_confirm": "Veuillez exécuter la commande \"/verify {{token}}\" dans Discord pour terminer la liaison de votre compte Discord.", - "discord_integration/discord_id_length": "Veuillez vous assurer que votre ID de serveur Discord comporte 18 caractères.", + "discord_integration/discord_id_confirm": "Veuillez exécuter la commande \"/verify token:{{token}}\" dans Discord pour terminer la liaison de votre compte Discord.", + "discord_integration/discord_id_length": "Veuillez vous assurer que votre ID de serveur Discord est compris entre {{min}} et {{max}} chiffres.", "discord_integration/discord_role_id": "Discord Role ID", "discord_integration/discord": "Discord", "discord_integration/discord_id_numeric": "Veuillez vous assurer que votre ID de serveur Discord est numérique (uniquement des chiffres).", "discord_integration/discord_invite_info": "Pour inviter le bot Nameless Link sur votre serveur Discord, cliquez sur {{inviteLinkStart}} ici{{inviteLinkEnd}}. Ensuite, exécutez la commande {{command}} pour lier le robot à votre site Web. Vous pouvez également {{selfHostLinkStart}} héberger le robot vous-même{{selfHostLinkEnd}}.", - "discord_integration/discord_role_id_length": "L'identifiant de rôle Discord doit comporter 18 chiffres.", + "discord_integration/discord_role_id_length": "L'ID du rôle Discord doit être compris entre {{min}} et {{max}} chiffres.", "discord_integration/discord_role_id_numeric": "L'ID de rôle Discord doit être numérique.", "discord_integration/discord_widget_disabled": "Le widget est désactivé pour le serveur Discord spécifié. Veuillez accéder à l'onglet \"Widget\" dans les paramètres de votre serveur Discord, et assurez-vous que le widget Discord est activé et que l'ID est correct.", - "discord_integration/enable_discord_integration": "Activer l'intégration de Discord ?" + "discord_integration/enable_discord_integration": "Activer l'intégration de Discord ?", + "discord_integration/discord_bot": "Bot Discord", + "discord_integration/link_method": "Méthode de liaison" } diff --git a/modules/Members/language/fr_FR.json b/modules/Members/language/fr_FR.json index 0967ef424b..cabb51c4b2 100644 --- a/modules/Members/language/fr_FR.json +++ b/modules/Members/language/fr_FR.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Membres", + "members/new_members": "Nouveaux membres", + "members/no_members": "Aucun membre trouvé.", + "members/member_list_hide_banned_users": "Masquer les utilisateurs bannis ?", + "members/member_list_toggled_enabled": "Liste {{list}} activée avec succès.", + "members/member_list_toggled_disabled": "Liste {{list}} désactivée avec succès.", + "members/view_all": "Tout voir", + "members/find_member": "Trouver un membre", + "members/name": "Nom...", + "members/group": "Groupe...", + "members/viewable_groups": "Groupes visibles", + "members/no_results_header": "Aucun résultat trouvé", + "members/no_results_text": "Votre recherche n'a donné aucun résultat", + "members/settings_updated_successfully": "Paramètres mis à jour avec succès.", + "members/member_lists": "Listes des membres", + "members/view_group": "Afficher les groupes", + "members/no_overview_lists_enabled": "Aucune liste d'aperçu n'est activée." +} From 5806ee1c28ea954b0719fdafc31367b5ce28780b Mon Sep 17 00:00:00 2001 From: Fjuro Date: Mon, 15 May 2023 11:13:25 +0000 Subject: [PATCH 041/193] Translated using translate.namelessmc.com Co-authored-by: Fjuro Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/cs/ Translation: NamelessMC/Website - Core --- custom/languages/cs_CZ.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/cs_CZ.json b/custom/languages/cs_CZ.json index fe1aa6aefd..db22d1e7c0 100644 --- a/custom/languages/cs_CZ.json +++ b/custom/languages/cs_CZ.json @@ -875,7 +875,7 @@ "time/less_than_a_minute": "před méně než minutou", "time/over_x_years": "před {{count}} lety", "user/1_new_alert": "Máte 1 nové upozornění", - "user/1_new_message": "Máte {{count}} novou zprávu", + "user/1_new_message": "Máte 1 novou zprávu", "user/1_reaction": "1 reakce", "user/1_reply": "1 odpověď", "user/about": "O uživateli", From 1e7c0186555403d5ebbc793b7cb444371bf2982f Mon Sep 17 00:00:00 2001 From: Edouard DUCHESNES Date: Mon, 15 May 2023 11:13:25 +0000 Subject: [PATCH 042/193] Translated using translate.namelessmc.com Co-authored-by: Edouard DUCHESNES Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/fr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-discord-integration/fr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/fr/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Discord Integration Translation: NamelessMC/Website - Members module --- custom/languages/fr_FR.json | 32 +++++++++++++++++-- .../Discord Integration/language/fr_FR.json | 10 +++--- modules/Members/language/fr_FR.json | 20 +++++++++++- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/custom/languages/fr_FR.json b/custom/languages/fr_FR.json index fac03024f1..c0e9011141 100644 --- a/custom/languages/fr_FR.json +++ b/custom/languages/fr_FR.json @@ -339,7 +339,7 @@ "admin/placeholders": "Espace réservé", "admin/placeholders_friendly_name": "Nom amical", "admin/placeholders_friendly_name_info": "Utilisez cette option pour attribuer un 'surnom\\’ à cet espace réservé. Le nom amical sera utilisé à la place du nom brut.", - "admin/placeholders_info": "Les espaces réservés permettent au plugin NamelessMC Spigot d'envoyer des statistiques sur chaque joueur à votre site web afin qu'il puisse les afficher sur son profil et dans les messages du forum.", + "admin/placeholders_info": "Les espaces réservés permettent au plugin NamelessMC d'envoyer des statistiques sur chaque joueur à votre site web afin qu'il puisse les afficher sur son profil et dans les messages du forum.", "admin/placeholders_last_updated": "Dernière mise à jour", "admin/placeholders_name": "Nom", "admin/placeholders_none": "Il n'y a pas d'espace réservé.", @@ -1040,5 +1040,33 @@ "admin/new_hook": "Nouveau Webhook", "admin/group_sync_server": "Sélectionnez un serveur Minecraft à utiliser pour la synchronisation des groupe", "admin/client_id": "ID du client", - "admin/client_secret": "Secret du client" + "admin/client_secret": "Secret du client", + "admin/user_warned_webhook": "{{punished}} a été averti par {{punisher}}.", + "admin/image": "Image", + "admin/user_banned_webhook": "{{punished}} a été banni du site internet par {{punisher}}.", + "admin/auto_language_help": "Si activé, les invités et les utilisateurs déconnectés pourront laisser le site internet détecter automatiquement leur langue préférée.", + "admin/enable_auto_language": "Activer la détection automatique des langues ?", + "admin/event_supports_discord": "Cet événement prend en charge les webhooks Discord et dispose d'une intégration personnalisée.", + "admin/query_type_help": "Si le serveur query interne par défaut ne fonctionne pas, essayez une autre option.", + "admin/no_item_selected": "Aucun élément sélectionné", + "admin/pages": "Pages", + "admin/oauth": "OAuth", + "admin/oauth_info": "Configurez les fournisseurs OAuth pour permettre aux utilisateurs de se connecter avec leurs comptes de réseaux sociaux. {{docLinkStart}}Consultez notre documentation pour obtenir de l'aide{{docLinkEnd}}.", + "admin/placeholders_score": "Score", + "admin/not_linked": "Non lié", + "admin/not_set": "Non défini", + "admin/mass_email_failed_check_logs": "L'envoi d'un ou plusieurs courriels a échoué. Veuillez consulter le journal des courriels pour plus d'informations.", + "admin/no_hooks_yet": "Il n'y a pas encore de webhooks.", + "admin/panel_template_third_party": "Le modèle {{name}} est un modèle tiers. Veuillez noter que la compatibilité des versions n'est pas garantie entre les mises à jour mineures de NamelessMC, et que les problèmes doivent être redirigés vers l'auteur du modèle.", + "admin/authme_db_connection_success": "Connexion réussie", + "admin/authme_db_connection_failed": "Connexion échouée", + "admin/authme_db_test_connection": "Test de connexion", + "admin/page_url_contains_nameless_path": "Votre page personnalisée écraserait une page NamelessMC.", + "admin/queue": "File d'attente", + "admin/queue_cancel_task": "Annuler la tâche", + "admin/discord_hook": "Discord", + "admin/event_supports_normal": "Cet événement prend en charge les webhooks normaux.", + "admin/placeholders_last_updated_time": "Dernière mise à jour : {{time}}", + "admin/placeholders_player": "Joueur", + "admin/queue_cancel_task_confirm": "Êtes-vous sûr de vouloir annuler cette tâche ?" } diff --git a/modules/Discord Integration/language/fr_FR.json b/modules/Discord Integration/language/fr_FR.json index 22e3b50c67..267c7cb66c 100644 --- a/modules/Discord Integration/language/fr_FR.json +++ b/modules/Discord Integration/language/fr_FR.json @@ -9,14 +9,16 @@ "discord_integration/discord_widget_theme": "Thème Discord Widget", "discord_integration/discord_widget_error": "Une erreur s'est produite lors de l'obtention du widget Discord : {{error}}.", "discord_integration/discord_id_required": "Veuillez entrer votre ID de serveur Discord.", - "discord_integration/discord_id_confirm": "Veuillez exécuter la commande \"/verify {{token}}\" dans Discord pour terminer la liaison de votre compte Discord.", - "discord_integration/discord_id_length": "Veuillez vous assurer que votre ID de serveur Discord comporte 18 caractères.", + "discord_integration/discord_id_confirm": "Veuillez exécuter la commande \"/verify token:{{token}}\" dans Discord pour terminer la liaison de votre compte Discord.", + "discord_integration/discord_id_length": "Veuillez vous assurer que votre ID de serveur Discord est compris entre {{min}} et {{max}} chiffres.", "discord_integration/discord_role_id": "Discord Role ID", "discord_integration/discord": "Discord", "discord_integration/discord_id_numeric": "Veuillez vous assurer que votre ID de serveur Discord est numérique (uniquement des chiffres).", "discord_integration/discord_invite_info": "Pour inviter le bot Nameless Link sur votre serveur Discord, cliquez sur {{inviteLinkStart}} ici{{inviteLinkEnd}}. Ensuite, exécutez la commande {{command}} pour lier le robot à votre site Web. Vous pouvez également {{selfHostLinkStart}} héberger le robot vous-même{{selfHostLinkEnd}}.", - "discord_integration/discord_role_id_length": "L'identifiant de rôle Discord doit comporter 18 chiffres.", + "discord_integration/discord_role_id_length": "L'ID du rôle Discord doit être compris entre {{min}} et {{max}} chiffres.", "discord_integration/discord_role_id_numeric": "L'ID de rôle Discord doit être numérique.", "discord_integration/discord_widget_disabled": "Le widget est désactivé pour le serveur Discord spécifié. Veuillez accéder à l'onglet \"Widget\" dans les paramètres de votre serveur Discord, et assurez-vous que le widget Discord est activé et que l'ID est correct.", - "discord_integration/enable_discord_integration": "Activer l'intégration de Discord ?" + "discord_integration/enable_discord_integration": "Activer l'intégration de Discord ?", + "discord_integration/discord_bot": "Bot Discord", + "discord_integration/link_method": "Méthode de liaison" } diff --git a/modules/Members/language/fr_FR.json b/modules/Members/language/fr_FR.json index 0967ef424b..cabb51c4b2 100644 --- a/modules/Members/language/fr_FR.json +++ b/modules/Members/language/fr_FR.json @@ -1 +1,19 @@ -{} +{ + "members/members": "Membres", + "members/new_members": "Nouveaux membres", + "members/no_members": "Aucun membre trouvé.", + "members/member_list_hide_banned_users": "Masquer les utilisateurs bannis ?", + "members/member_list_toggled_enabled": "Liste {{list}} activée avec succès.", + "members/member_list_toggled_disabled": "Liste {{list}} désactivée avec succès.", + "members/view_all": "Tout voir", + "members/find_member": "Trouver un membre", + "members/name": "Nom...", + "members/group": "Groupe...", + "members/viewable_groups": "Groupes visibles", + "members/no_results_header": "Aucun résultat trouvé", + "members/no_results_text": "Votre recherche n'a donné aucun résultat", + "members/settings_updated_successfully": "Paramètres mis à jour avec succès.", + "members/member_lists": "Listes des membres", + "members/view_group": "Afficher les groupes", + "members/no_overview_lists_enabled": "Aucune liste d'aperçu n'est activée." +} From 675dae354430a65d706c9d644dc6b1f5543d6e8c Mon Sep 17 00:00:00 2001 From: Marcos Date: Mon, 22 May 2023 19:13:31 +0000 Subject: [PATCH 043/193] Translated using translate.namelessmc.com Co-authored-by: Marcos Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/es/ Translation: NamelessMC/Website - Core --- custom/languages/es_ES.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/es_ES.json b/custom/languages/es_ES.json index 4c59f31ca4..1ede6ec454 100644 --- a/custom/languages/es_ES.json +++ b/custom/languages/es_ES.json @@ -875,7 +875,7 @@ "time/less_than_a_minute": "hace menos de un minuto", "time/over_x_years": "hace más de {{count}} años", "user/1_new_alert": "Tienes un nuevo aviso", - "user/1_new_message": "Tienes {{count}} nuevos mensajes", + "user/1_new_message": "Tienes un nuevo mensaje", "user/1_reaction": "1 reacción", "user/1_reply": "1 respuesta", "user/about": "Acerca de", From f61103c5b2b5713414e22a5f694e3592a94b8178 Mon Sep 17 00:00:00 2001 From: Mesutcan Yavuz Date: Mon, 22 May 2023 19:13:31 +0000 Subject: [PATCH 044/193] Translated using translate.namelessmc.com Co-authored-by: Mesutcan Yavuz Translate-URL: https://translate.namelessmc.com/projects/namelessmc/cookie-consent/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-discord-integration/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/tr/ Translation: NamelessMC/Website - Cookie Consent Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Discord Integration Translation: NamelessMC/Website - Forum --- custom/languages/tr_TR.json | 28 ++++++--- modules/Cookie Consent/language/tr_TR.json | 14 ++++- .../Discord Integration/language/tr_TR.json | 22 ++++++- modules/Forum/language/tr_TR.json | 57 ++++++++++++------- 4 files changed, 90 insertions(+), 31 deletions(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index d898fb4af0..1cf2122edf 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -581,7 +581,7 @@ "general/total_online_users": "Toplam aktif üye: {{count}}", "general/total_posts": "Mesajlar", "general/total_threads": "Konular", - "general/unlink": "Unlink", + "general/unlink": "Bağlantıyı kes", "general/url": "URL", "general/users_registered": "Kullanıcılar", "general/version": "Sürüm: {{version}}", @@ -718,11 +718,11 @@ "moderator/when": "Tarih", "moderator/x_closed_report": "{{user}} bu raporu kapattı.", "moderator/x_reopened_report": "{{user}} bu raporu tekrar açtı.", - "table/display_records_per_page": "Display _MENU_ records per page", - "table/filtered": "(filtered from _MAX_ total records)", + "table/display_records_per_page": "Sayfa başına _MENU_ kaydı görüntüle", + "table/filtered": "(toplam _MAX_ kayıttan filtrelendi)", "table/no_records": "Kayıt Yok", "table/nothing_found": "Sonuş Bulunamadı", - "table/page_x_of_y": "Showing page _PAGE_ of _PAGES_", + "table/page_x_of_y": "_PAGES_ sayfadan _PAGE_ sayfası gösteriliyor", "time/1_day": "1 gün önce", "time/1_minute": "1 dakika önce", "time/_days": "{{count}} gün önce", @@ -735,7 +735,7 @@ "time/less_than_a_minute": "1 dakikadan az bir süre önce", "time/over_x_years": "{{count}} yıldan uzun bir süre önce", "user/1_new_alert": "1 yeni bildiriminiz var", - "user/1_new_message": "{{count}} yeni mesajınız var", + "user/1_new_message": "1 yeni mesajınız var", "user/1_reaction": "1 reaksiyon", "user/1_reply": "1 cevap", "user/about": "Hakkında", @@ -896,7 +896,7 @@ "user/users_to_required": "Lütfen bazı mesaj alıcıları girin", "user/validate_account_command": "Kaydı tamamlamak için lütfen {{command}} oyun adı komutunu yürütün.", "user/validation_complete": "Hesabınız doğrulandı, şimdi giriş yapabilirsiniz.", - "user/validation_error": "Hesabınız doğrulanırken bilinmeyen bir hata oluştu, lütfen bir web sitesi yöneticisine başvurun..", + "user/validation_error": "Geçersiz doğrulama kodu, kullanıcı zaten doğrulandı mı?", "user/view_alerts": "Uyarıları görüntüle", "user/view_messages": "Mesajları görüntüle", "user/views": "Profilin görüntülenme sayısı:", @@ -940,7 +940,7 @@ "admin/email_message_message": "Mesaj", "admin/email_message_thanks": "Teşekkürler", "admin/email_port_invalid": "Lütfen geçerli bir e-posta portu girin.", - "admin/email_message_subject": "Subject", + "admin/email_message_subject": "Ders", "admin/email_preview_popup": "Ön izleme", "user/integration_unlinked": "{{integration}} hesabınızın bağlantısını başarıyla kaldırdınız.", "user/integration_required_to_continue": "Lütfen bu web sitesini kullanmaya devam etmeden önce bağlanın ve gerekli bağlantıları doğrulayın.", @@ -1113,7 +1113,7 @@ "admin/editing_hook": "Wobhook düzenleme", "admin/editing_language": "Dil Düzenleme", "admin/editing_messages": "Mesajları Düzenleme", - "admin/debug_link_toast": "Hata ayıklama bağlantısı panonuza kopyalandı!
Hata ayıklama günlüğünü görüntüleyin: {{linkStart}}buradan{{linkEnd}}", + "admin/debug_link_toast": "Hata ayıklama bağlantısını görmek için {{linkStart}}buraya tıklayın.{{linkEnd}}", "admin/debug_link_info": "Önemli - bu bağlantıyı yalnızca güvendiğiniz kişilerle paylaşın!", "admin/editing_integration_for_x": "{{user}} için {{integration}} entegrasyonunu düzenleme", "admin/editing_integration_x": "{{integration}} entegrasyonu düzenleniyor", @@ -1189,5 +1189,15 @@ "general/log_out_click": "Çıkış yapmak için buraya tıkla", "general/log_out_complete": "Çıkış başarılı. Devam etmek için {{linkStart}} ve {{linkEnd}} buraya tıkla.", "general/rate_limit": "Lütfen {{expires}} saniye sonra tekrar deneyiniz", - "user/tfa_disabled": "İki faktörlü doğrulama devre dışı." + "user/tfa_disabled": "İki faktörlü doğrulama devre dışı.", + "admin/authme_db_test_connection": "Deneme Bağlantısı", + "admin/authme_db_connection_success": "Bağlantı başarılı", + "admin/authme_db_connection_failed": "Bağlantı başarısız", + "user/avatar_removed_successfully": "Avatar başarıyla kaldırıldı", + "admin/auto_language_help": "Etkinleştirilirse, konuklar ve oturumu kapatan kullanıcılar, web sitesinin tercih ettikleri dili otomatik olarak algılamasına izin verebilir.", + "admin/user_banned_webhook": "{{punished}} isimli kullanıcı {{punisher}} tarafından siteden yasaklandı.", + "admin/user_warned_webhook": "{{punished}}, {{punisher}} tarafından uyarıldı.", + "user/remove_avatar": "Avatarı kaldır", + "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", + "user/continue_with": "{{provider}} ile devam et" } diff --git a/modules/Cookie Consent/language/tr_TR.json b/modules/Cookie Consent/language/tr_TR.json index 0967ef424b..4ef0daa2c3 100644 --- a/modules/Cookie Consent/language/tr_TR.json +++ b/modules/Cookie Consent/language/tr_TR.json @@ -1 +1,13 @@ -{} +{ + "cookie/configure_cookies": "Çerezleri Yönet", + "cookie/cookie_notice_success": "Çerez bildirimi başarıyla güncellendi.", + "cookie/cookie_notice": "Çerez Bildirimi", + "cookie/cookie_notice_error": "Lütfen en fazla 10.000 karakterlik bir çerez bildirimi girin.", + "cookie/cookie_notice_info": "Bu widget çerez gerektirir", + "cookie/cookie_popup": "Bu web sitesi, tarama deneyiminizi geliştirmek için çerezleri kullanır.", + "cookie/cookie_popup_allow": "Çerezlere izin ver", + "cookie/cookie_popup_disallow": "Çerezlere izin verme", + "cookie/cookie_popup_more_info": "Daha fazla bilgi", + "cookie/cookies": "Çerezler", + "cookie/update_settings": "Çerez Açılır Penceresini Göster" +} diff --git a/modules/Discord Integration/language/tr_TR.json b/modules/Discord Integration/language/tr_TR.json index 0967ef424b..388ddc43e6 100644 --- a/modules/Discord Integration/language/tr_TR.json +++ b/modules/Discord Integration/language/tr_TR.json @@ -1 +1,21 @@ -{} +{ + "discord_integration/discord_id_length": "Lütfen Discord Sunucu ID'nizin {{min}} ile {{max}} hane uzunluğunda olduğundan emin olun.", + "discord_integration/discord_role_id_length": "Discord Rol ID'si, {{min}} ile {{max}} basamak uzunluğunda olmalıdır.", + "discord_integration/discord_bot": "Discord Botu", + "discord_integration/discord_bot_setup": "Bot kuruldu mu?", + "discord_integration/discord_bot_must_be_setup": "Botu kurana kadar Discord Entegrasyonu etkinleştirilemez. Bilgi için lütfen {{linkStart}}buraya{{linkEnd}} tıklayın.", + "discord_integration/discord_guild_id": "Discord Sunucu ID", + "discord_integration/discord_id_confirm": "Discord hesabınızı bağlamayı tamamlamak için lütfen Discord'da \"/verify token:{{token}}\" komutunu çalıştırın.", + "discord_integration/discord_id_help": "Discord ID'i nerede bulacağınız hakkında bilgi için lütfen {{linkStart}}bunu{{linkEnd}} okuyun", + "discord_integration/discord_role_id_numeric": "Discord Rol ID'si sayısal olmalıdır.", + "discord_integration/discord": "Discord", + "discord_integration/discord_id_numeric": "Lütfen Discord Sunucu ID'nizin sayısal olduğundan emin olun (yalnızca sayılar).", + "discord_integration/discord_role_id": "Discord Rol ID", + "discord_integration/discord_settings_updated": "Discord ayarları başarıyla güncellendi", + "discord_integration/discord_usernames_updated": "Discord kullanıcı adı başarıyla güncellendi", + "discord_integration/discord_widget_error": "Discord widget'ı alınırken bir hata oluştu: {{error}}.", + "discord_integration/discord_widget_theme": "Discord Widget Teması", + "discord_integration/enable_discord_integration": "Discord entegrasyonu etkinleştirilsin mi?", + "discord_integration/discord_widget_disabled": "Widget, belirtilen Discord sunucusu için devre dışı bırakıldı. Lütfen Discord sunucu ayarlarınızdaki 'Widget' sekmesine gidin ve Discord widget'ının etkinleştirildiğinden ve id'sinin olduğundan emin olun.", + "discord_integration/link_method": "Bağlantı yöntemi" +} diff --git a/modules/Forum/language/tr_TR.json b/modules/Forum/language/tr_TR.json index a6b995d184..9d8bbda8c6 100644 --- a/modules/Forum/language/tr_TR.json +++ b/modules/Forum/language/tr_TR.json @@ -17,10 +17,10 @@ "forum/creating_label_type": "Yeni etiket türü oluşturma", "forum/creating_topic_in_x": "{{forum}} içinde konu oluşturuluyor", "forum/default_labels": "Default Labels", - "forum/default_labels_info": "These will be assigned to a new topic in the forum unless overridden during topic creation. Ctrl+Click to select multiple", + "forum/default_labels_info": "Bunlar, konu oluşturma sırasında geçersiz kılınmadığı sürece forumdaki yeni bir konuya atanacaktır. Birden çok seçmek için Ctrl+Tıkla", "forum/delete_forum": "Forumu sil", "forum/delete_topic": "Konuyu sil", - "forum/delete_topics_and_posts": "Konuları ve mesajları silme", + "forum/delete_topics_and_posts": "Konuları ve mesajları sil", "forum/discussion": "Tartışma", "forum/display_topics_as_news": "Konular ön sayfada haber olarak gösterilsin mi?", "forum/edit": "Düzenle", @@ -53,8 +53,8 @@ "forum/input_forum_title": "Lütfen bir forum başlığı girin.", "forum/insert_quotes": "Teklif Ekle", "forum/invalid_action": "Geçersiz eylem", - "forum/invalid_redirect_url": "Forum yönlendirmesini etkinleştirdiniz, ancak 1 ile 512 karakter arasında geçerli bir URL girmediniz.", - "forum/invalid_search_query": "Lütfen 3 ila 128 karakter uzunluğunda bir arama sorgusu girin.", + "forum/invalid_redirect_url": "Forum yönlendirmesini etkinleştirdiniz, ancak {{min}} ile {{max}} karakter arasında geçerli bir URL girmediniz.", + "forum/invalid_search_query": "Lütfen {{min}} ile {{max}} karakter uzunluğunda bir arama sorgusu girin.", "forum/label": "Etiket", "forum/label_creation_error": "Etiket oluşturma hatası. Lütfen adın 32 karakterden uzun olmadığından ve bir tür belirttiğinizden emin olun.", "forum/label_creation_success": "Etiket başarıyla oluşturuldu.", @@ -86,18 +86,18 @@ "forum/mod_actions": "Moderasyon", "forum/move_topic": "Konuyu taşı", "forum/move_topic_to": "Konuyu şuraya taşı:", - "forum/move_topics_and_posts_to": "Konuları ve mesajları şuraya taşı:", - "forum/new_forum": " Forum ekle", - "forum/new_label": " Etiket ekle", - "forum/new_label_type": " Etiket türü ekle", + "forum/move_topics_and_posts_to": "Konuları ve mesajları şuraya taşı", + "forum/new_forum": "Yeni Forum", + "forum/new_label": "Yeni Etiket", + "forum/new_label_type": "Yeni Etiket Türü", "forum/new_reply": "Yeni Cevap", "forum/new_reply_in_topic": "{{author}}, {{topic}} konusunu yanıtladı", "forum/new_search": "Yeni Arama", - "forum/new_topic": "Yeni Konu Aç..", - "forum/new_topic_text": "{{forum}} tarafından {{author}} tarafından oluşturulan konu", - "forum/no_forums": "Forum Yok", - "forum/no_label_types_defined": "Henüz hiçbir etiket türü eklenmedi!", - "forum/no_labels_defined": "Henüz hiçbir etiket eklenmedi!", + "forum/new_topic": "Yeni Konu", + "forum/new_topic_text": "Konu, {{forum}} içerisinde {{author}} tarafından oluşturuldu", + "forum/no_forums": "Forum yok", + "forum/no_label_types_defined": "Henüz etiket türü tanımlanmadı.", + "forum/no_labels_defined": "Henüz etiket tanımlanmadı.", "forum/no_longer_following_topic": "Artık bu konuyu takip etmiyorsunuz ve yeni yanıtlardan haberdar edilmeyeceksiniz.", "forum/no_results_found": "Sonuç bulunamadı.", "forum/no_topics": "Henüz hiç konu oluşturulmadı.", @@ -108,14 +108,14 @@ "forum/parent_forum": "Ana Forum", "forum/parent_forum_x": "Ana Forum: {{forum}}", "forum/post_already_reported": "Bu gönderiyi zaten bildirdin!", - "forum/post_edited_successfully": "Gönderi başarıyla düzenlendi!", + "forum/post_edited_successfully": "Gönderi başarıyla düzenlendi.", "forum/post_successful": "Gönderi başarılı.", "forum/posts": "Mesaj", "forum/posts_title": "Mesajlar", "forum/quote": "Alıntı", - "forum/quoted_post": "Konu, alıntı konulara eklendi.", + "forum/quoted_post": "Gönderi alıntılandı", "forum/re": "RE: ", - "forum/read_full_post": "Konunun tamamını oku", + "forum/read_full_post": "Yazının tamamını oku", "forum/recent_posts": "Yakın Zamanda Gönderilenler", "forum/recent_topics": "Son Konular", "forum/redirect_forum": "Forum yeni sekmede açılsın mı?", @@ -129,7 +129,7 @@ "forum/share_facebook": "Facebook ile paylaş", "forum/share_twitter": "Twitter ile paylaş", "forum/spam_wait": "Lütfen tekrar göndermeden önce {{count}} saniye bekleyin.", - "forum/started_by_x": "{{author}} tarafından başlatıldı!", + "forum/started_by_x": "{{author}} tarafından başlatıldı", "forum/stats": "İstatistik", "forum/stick_topic": "Konuyu sabitle", "forum/sticky_topics": "Sabit Konular", @@ -141,9 +141,9 @@ "forum/topic_locked": "Konu Kilitlendi", "forum/topic_locked_notice": "Bu konu kilitli, ancak izinleriniz bir yanıt oluşturmanıza izin veriyor.", "forum/topic_placeholder": "Konu yer tutucusu", - "forum/topic_stuck": "Konu sabitlendi!", + "forum/topic_stuck": "Konu sabitlendi.", "forum/topic_title": "Konu Başlığı", - "forum/topic_unstuck": "Konu sabit konulardan kaldırıldı!", + "forum/topic_unstuck": "Konu sabit konulardan kaldırıldı.", "forum/topics": "Konu", "forum/topics_title": "Konular", "forum/total_posts": "Toplam konu sayısı", @@ -157,5 +157,22 @@ "forum/views": "Görüntüleme", "forum/x_posts": "{{count}} Mesaj", "forum/x_topics": "{{count}} Konu", - "forum/your_posts": "Mesaj sayınız" + "forum/your_posts": "Mesaj sayınız", + "forum/news_items_front_page_limit": "Ön sayfada görüntülenecek haber sayısı", + "forum/news_items_max": "Haber sayısı en az {{max}} olmalıdır", + "forum/news_items_min": "Haber sayısı en az {{min}} olmalıdır", + "forum/no_news": "Haber gönderisi yok.", + "forum/all_topics_unfollowed": "Tüm konular takipten çıkarıldı.", + "forum/available_hooks": "Mevcut Hook'lar", + "forum/include_in_hook": "Bu forumdaki etkinlikler webhooks'a dahil edilsin mi?", + "forum/confirm_unfollow_all_topics": "Tüm konuları takip etmeyi bırakmak istediğinizden emin misiniz?", + "forum/topic_reply": "Konu yanıtı", + "forum/label_type_in_use": "Etiket tipi kullanılıyor, silinemez.", + "forum/no_posts_found": "Gönderi bulunamadı.", + "forum/highest_reaction_scores": "En yüksek tepki puanları", + "forum/most_posts": "En iyi gönderiler", + "forum/not_following_any_topics": "Herhangi bir konuyu takip etmiyorsunuz.", + "forum/following_topics": "Takip edilen konular", + "forum/reaction_score": "Tepki puanı", + "forum/post_id": "Gönderi ID" } From 13e6e7a48114e60d867417fee304a31cdf92a2de Mon Sep 17 00:00:00 2001 From: Marcos Date: Mon, 22 May 2023 19:13:31 +0000 Subject: [PATCH 045/193] Translated using translate.namelessmc.com Co-authored-by: Marcos Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/es/ Translation: NamelessMC/Website - Core --- custom/languages/es_ES.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/es_ES.json b/custom/languages/es_ES.json index 4c59f31ca4..1ede6ec454 100644 --- a/custom/languages/es_ES.json +++ b/custom/languages/es_ES.json @@ -875,7 +875,7 @@ "time/less_than_a_minute": "hace menos de un minuto", "time/over_x_years": "hace más de {{count}} años", "user/1_new_alert": "Tienes un nuevo aviso", - "user/1_new_message": "Tienes {{count}} nuevos mensajes", + "user/1_new_message": "Tienes un nuevo mensaje", "user/1_reaction": "1 reacción", "user/1_reply": "1 respuesta", "user/about": "Acerca de", From 3ba527fb36796dead0249c2dbee29829b9bb20bb Mon Sep 17 00:00:00 2001 From: Mesutcan Yavuz Date: Mon, 22 May 2023 19:13:31 +0000 Subject: [PATCH 046/193] Translated using translate.namelessmc.com Co-authored-by: Mesutcan Yavuz Translate-URL: https://translate.namelessmc.com/projects/namelessmc/cookie-consent/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-discord-integration/tr/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/tr/ Translation: NamelessMC/Website - Cookie Consent Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Discord Integration Translation: NamelessMC/Website - Forum --- custom/languages/tr_TR.json | 28 ++++++--- modules/Cookie Consent/language/tr_TR.json | 14 ++++- .../Discord Integration/language/tr_TR.json | 22 ++++++- modules/Forum/language/tr_TR.json | 57 ++++++++++++------- 4 files changed, 90 insertions(+), 31 deletions(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index d898fb4af0..1cf2122edf 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -581,7 +581,7 @@ "general/total_online_users": "Toplam aktif üye: {{count}}", "general/total_posts": "Mesajlar", "general/total_threads": "Konular", - "general/unlink": "Unlink", + "general/unlink": "Bağlantıyı kes", "general/url": "URL", "general/users_registered": "Kullanıcılar", "general/version": "Sürüm: {{version}}", @@ -718,11 +718,11 @@ "moderator/when": "Tarih", "moderator/x_closed_report": "{{user}} bu raporu kapattı.", "moderator/x_reopened_report": "{{user}} bu raporu tekrar açtı.", - "table/display_records_per_page": "Display _MENU_ records per page", - "table/filtered": "(filtered from _MAX_ total records)", + "table/display_records_per_page": "Sayfa başına _MENU_ kaydı görüntüle", + "table/filtered": "(toplam _MAX_ kayıttan filtrelendi)", "table/no_records": "Kayıt Yok", "table/nothing_found": "Sonuş Bulunamadı", - "table/page_x_of_y": "Showing page _PAGE_ of _PAGES_", + "table/page_x_of_y": "_PAGES_ sayfadan _PAGE_ sayfası gösteriliyor", "time/1_day": "1 gün önce", "time/1_minute": "1 dakika önce", "time/_days": "{{count}} gün önce", @@ -735,7 +735,7 @@ "time/less_than_a_minute": "1 dakikadan az bir süre önce", "time/over_x_years": "{{count}} yıldan uzun bir süre önce", "user/1_new_alert": "1 yeni bildiriminiz var", - "user/1_new_message": "{{count}} yeni mesajınız var", + "user/1_new_message": "1 yeni mesajınız var", "user/1_reaction": "1 reaksiyon", "user/1_reply": "1 cevap", "user/about": "Hakkında", @@ -896,7 +896,7 @@ "user/users_to_required": "Lütfen bazı mesaj alıcıları girin", "user/validate_account_command": "Kaydı tamamlamak için lütfen {{command}} oyun adı komutunu yürütün.", "user/validation_complete": "Hesabınız doğrulandı, şimdi giriş yapabilirsiniz.", - "user/validation_error": "Hesabınız doğrulanırken bilinmeyen bir hata oluştu, lütfen bir web sitesi yöneticisine başvurun..", + "user/validation_error": "Geçersiz doğrulama kodu, kullanıcı zaten doğrulandı mı?", "user/view_alerts": "Uyarıları görüntüle", "user/view_messages": "Mesajları görüntüle", "user/views": "Profilin görüntülenme sayısı:", @@ -940,7 +940,7 @@ "admin/email_message_message": "Mesaj", "admin/email_message_thanks": "Teşekkürler", "admin/email_port_invalid": "Lütfen geçerli bir e-posta portu girin.", - "admin/email_message_subject": "Subject", + "admin/email_message_subject": "Ders", "admin/email_preview_popup": "Ön izleme", "user/integration_unlinked": "{{integration}} hesabınızın bağlantısını başarıyla kaldırdınız.", "user/integration_required_to_continue": "Lütfen bu web sitesini kullanmaya devam etmeden önce bağlanın ve gerekli bağlantıları doğrulayın.", @@ -1113,7 +1113,7 @@ "admin/editing_hook": "Wobhook düzenleme", "admin/editing_language": "Dil Düzenleme", "admin/editing_messages": "Mesajları Düzenleme", - "admin/debug_link_toast": "Hata ayıklama bağlantısı panonuza kopyalandı!
Hata ayıklama günlüğünü görüntüleyin: {{linkStart}}buradan{{linkEnd}}", + "admin/debug_link_toast": "Hata ayıklama bağlantısını görmek için {{linkStart}}buraya tıklayın.{{linkEnd}}", "admin/debug_link_info": "Önemli - bu bağlantıyı yalnızca güvendiğiniz kişilerle paylaşın!", "admin/editing_integration_for_x": "{{user}} için {{integration}} entegrasyonunu düzenleme", "admin/editing_integration_x": "{{integration}} entegrasyonu düzenleniyor", @@ -1189,5 +1189,15 @@ "general/log_out_click": "Çıkış yapmak için buraya tıkla", "general/log_out_complete": "Çıkış başarılı. Devam etmek için {{linkStart}} ve {{linkEnd}} buraya tıkla.", "general/rate_limit": "Lütfen {{expires}} saniye sonra tekrar deneyiniz", - "user/tfa_disabled": "İki faktörlü doğrulama devre dışı." + "user/tfa_disabled": "İki faktörlü doğrulama devre dışı.", + "admin/authme_db_test_connection": "Deneme Bağlantısı", + "admin/authme_db_connection_success": "Bağlantı başarılı", + "admin/authme_db_connection_failed": "Bağlantı başarısız", + "user/avatar_removed_successfully": "Avatar başarıyla kaldırıldı", + "admin/auto_language_help": "Etkinleştirilirse, konuklar ve oturumu kapatan kullanıcılar, web sitesinin tercih ettikleri dili otomatik olarak algılamasına izin verebilir.", + "admin/user_banned_webhook": "{{punished}} isimli kullanıcı {{punisher}} tarafından siteden yasaklandı.", + "admin/user_warned_webhook": "{{punished}}, {{punisher}} tarafından uyarıldı.", + "user/remove_avatar": "Avatarı kaldır", + "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", + "user/continue_with": "{{provider}} ile devam et" } diff --git a/modules/Cookie Consent/language/tr_TR.json b/modules/Cookie Consent/language/tr_TR.json index 0967ef424b..4ef0daa2c3 100644 --- a/modules/Cookie Consent/language/tr_TR.json +++ b/modules/Cookie Consent/language/tr_TR.json @@ -1 +1,13 @@ -{} +{ + "cookie/configure_cookies": "Çerezleri Yönet", + "cookie/cookie_notice_success": "Çerez bildirimi başarıyla güncellendi.", + "cookie/cookie_notice": "Çerez Bildirimi", + "cookie/cookie_notice_error": "Lütfen en fazla 10.000 karakterlik bir çerez bildirimi girin.", + "cookie/cookie_notice_info": "Bu widget çerez gerektirir", + "cookie/cookie_popup": "Bu web sitesi, tarama deneyiminizi geliştirmek için çerezleri kullanır.", + "cookie/cookie_popup_allow": "Çerezlere izin ver", + "cookie/cookie_popup_disallow": "Çerezlere izin verme", + "cookie/cookie_popup_more_info": "Daha fazla bilgi", + "cookie/cookies": "Çerezler", + "cookie/update_settings": "Çerez Açılır Penceresini Göster" +} diff --git a/modules/Discord Integration/language/tr_TR.json b/modules/Discord Integration/language/tr_TR.json index 0967ef424b..388ddc43e6 100644 --- a/modules/Discord Integration/language/tr_TR.json +++ b/modules/Discord Integration/language/tr_TR.json @@ -1 +1,21 @@ -{} +{ + "discord_integration/discord_id_length": "Lütfen Discord Sunucu ID'nizin {{min}} ile {{max}} hane uzunluğunda olduğundan emin olun.", + "discord_integration/discord_role_id_length": "Discord Rol ID'si, {{min}} ile {{max}} basamak uzunluğunda olmalıdır.", + "discord_integration/discord_bot": "Discord Botu", + "discord_integration/discord_bot_setup": "Bot kuruldu mu?", + "discord_integration/discord_bot_must_be_setup": "Botu kurana kadar Discord Entegrasyonu etkinleştirilemez. Bilgi için lütfen {{linkStart}}buraya{{linkEnd}} tıklayın.", + "discord_integration/discord_guild_id": "Discord Sunucu ID", + "discord_integration/discord_id_confirm": "Discord hesabınızı bağlamayı tamamlamak için lütfen Discord'da \"/verify token:{{token}}\" komutunu çalıştırın.", + "discord_integration/discord_id_help": "Discord ID'i nerede bulacağınız hakkında bilgi için lütfen {{linkStart}}bunu{{linkEnd}} okuyun", + "discord_integration/discord_role_id_numeric": "Discord Rol ID'si sayısal olmalıdır.", + "discord_integration/discord": "Discord", + "discord_integration/discord_id_numeric": "Lütfen Discord Sunucu ID'nizin sayısal olduğundan emin olun (yalnızca sayılar).", + "discord_integration/discord_role_id": "Discord Rol ID", + "discord_integration/discord_settings_updated": "Discord ayarları başarıyla güncellendi", + "discord_integration/discord_usernames_updated": "Discord kullanıcı adı başarıyla güncellendi", + "discord_integration/discord_widget_error": "Discord widget'ı alınırken bir hata oluştu: {{error}}.", + "discord_integration/discord_widget_theme": "Discord Widget Teması", + "discord_integration/enable_discord_integration": "Discord entegrasyonu etkinleştirilsin mi?", + "discord_integration/discord_widget_disabled": "Widget, belirtilen Discord sunucusu için devre dışı bırakıldı. Lütfen Discord sunucu ayarlarınızdaki 'Widget' sekmesine gidin ve Discord widget'ının etkinleştirildiğinden ve id'sinin olduğundan emin olun.", + "discord_integration/link_method": "Bağlantı yöntemi" +} diff --git a/modules/Forum/language/tr_TR.json b/modules/Forum/language/tr_TR.json index a6b995d184..9d8bbda8c6 100644 --- a/modules/Forum/language/tr_TR.json +++ b/modules/Forum/language/tr_TR.json @@ -17,10 +17,10 @@ "forum/creating_label_type": "Yeni etiket türü oluşturma", "forum/creating_topic_in_x": "{{forum}} içinde konu oluşturuluyor", "forum/default_labels": "Default Labels", - "forum/default_labels_info": "These will be assigned to a new topic in the forum unless overridden during topic creation. Ctrl+Click to select multiple", + "forum/default_labels_info": "Bunlar, konu oluşturma sırasında geçersiz kılınmadığı sürece forumdaki yeni bir konuya atanacaktır. Birden çok seçmek için Ctrl+Tıkla", "forum/delete_forum": "Forumu sil", "forum/delete_topic": "Konuyu sil", - "forum/delete_topics_and_posts": "Konuları ve mesajları silme", + "forum/delete_topics_and_posts": "Konuları ve mesajları sil", "forum/discussion": "Tartışma", "forum/display_topics_as_news": "Konular ön sayfada haber olarak gösterilsin mi?", "forum/edit": "Düzenle", @@ -53,8 +53,8 @@ "forum/input_forum_title": "Lütfen bir forum başlığı girin.", "forum/insert_quotes": "Teklif Ekle", "forum/invalid_action": "Geçersiz eylem", - "forum/invalid_redirect_url": "Forum yönlendirmesini etkinleştirdiniz, ancak 1 ile 512 karakter arasında geçerli bir URL girmediniz.", - "forum/invalid_search_query": "Lütfen 3 ila 128 karakter uzunluğunda bir arama sorgusu girin.", + "forum/invalid_redirect_url": "Forum yönlendirmesini etkinleştirdiniz, ancak {{min}} ile {{max}} karakter arasında geçerli bir URL girmediniz.", + "forum/invalid_search_query": "Lütfen {{min}} ile {{max}} karakter uzunluğunda bir arama sorgusu girin.", "forum/label": "Etiket", "forum/label_creation_error": "Etiket oluşturma hatası. Lütfen adın 32 karakterden uzun olmadığından ve bir tür belirttiğinizden emin olun.", "forum/label_creation_success": "Etiket başarıyla oluşturuldu.", @@ -86,18 +86,18 @@ "forum/mod_actions": "Moderasyon", "forum/move_topic": "Konuyu taşı", "forum/move_topic_to": "Konuyu şuraya taşı:", - "forum/move_topics_and_posts_to": "Konuları ve mesajları şuraya taşı:", - "forum/new_forum": " Forum ekle", - "forum/new_label": " Etiket ekle", - "forum/new_label_type": " Etiket türü ekle", + "forum/move_topics_and_posts_to": "Konuları ve mesajları şuraya taşı", + "forum/new_forum": "Yeni Forum", + "forum/new_label": "Yeni Etiket", + "forum/new_label_type": "Yeni Etiket Türü", "forum/new_reply": "Yeni Cevap", "forum/new_reply_in_topic": "{{author}}, {{topic}} konusunu yanıtladı", "forum/new_search": "Yeni Arama", - "forum/new_topic": "Yeni Konu Aç..", - "forum/new_topic_text": "{{forum}} tarafından {{author}} tarafından oluşturulan konu", - "forum/no_forums": "Forum Yok", - "forum/no_label_types_defined": "Henüz hiçbir etiket türü eklenmedi!", - "forum/no_labels_defined": "Henüz hiçbir etiket eklenmedi!", + "forum/new_topic": "Yeni Konu", + "forum/new_topic_text": "Konu, {{forum}} içerisinde {{author}} tarafından oluşturuldu", + "forum/no_forums": "Forum yok", + "forum/no_label_types_defined": "Henüz etiket türü tanımlanmadı.", + "forum/no_labels_defined": "Henüz etiket tanımlanmadı.", "forum/no_longer_following_topic": "Artık bu konuyu takip etmiyorsunuz ve yeni yanıtlardan haberdar edilmeyeceksiniz.", "forum/no_results_found": "Sonuç bulunamadı.", "forum/no_topics": "Henüz hiç konu oluşturulmadı.", @@ -108,14 +108,14 @@ "forum/parent_forum": "Ana Forum", "forum/parent_forum_x": "Ana Forum: {{forum}}", "forum/post_already_reported": "Bu gönderiyi zaten bildirdin!", - "forum/post_edited_successfully": "Gönderi başarıyla düzenlendi!", + "forum/post_edited_successfully": "Gönderi başarıyla düzenlendi.", "forum/post_successful": "Gönderi başarılı.", "forum/posts": "Mesaj", "forum/posts_title": "Mesajlar", "forum/quote": "Alıntı", - "forum/quoted_post": "Konu, alıntı konulara eklendi.", + "forum/quoted_post": "Gönderi alıntılandı", "forum/re": "RE: ", - "forum/read_full_post": "Konunun tamamını oku", + "forum/read_full_post": "Yazının tamamını oku", "forum/recent_posts": "Yakın Zamanda Gönderilenler", "forum/recent_topics": "Son Konular", "forum/redirect_forum": "Forum yeni sekmede açılsın mı?", @@ -129,7 +129,7 @@ "forum/share_facebook": "Facebook ile paylaş", "forum/share_twitter": "Twitter ile paylaş", "forum/spam_wait": "Lütfen tekrar göndermeden önce {{count}} saniye bekleyin.", - "forum/started_by_x": "{{author}} tarafından başlatıldı!", + "forum/started_by_x": "{{author}} tarafından başlatıldı", "forum/stats": "İstatistik", "forum/stick_topic": "Konuyu sabitle", "forum/sticky_topics": "Sabit Konular", @@ -141,9 +141,9 @@ "forum/topic_locked": "Konu Kilitlendi", "forum/topic_locked_notice": "Bu konu kilitli, ancak izinleriniz bir yanıt oluşturmanıza izin veriyor.", "forum/topic_placeholder": "Konu yer tutucusu", - "forum/topic_stuck": "Konu sabitlendi!", + "forum/topic_stuck": "Konu sabitlendi.", "forum/topic_title": "Konu Başlığı", - "forum/topic_unstuck": "Konu sabit konulardan kaldırıldı!", + "forum/topic_unstuck": "Konu sabit konulardan kaldırıldı.", "forum/topics": "Konu", "forum/topics_title": "Konular", "forum/total_posts": "Toplam konu sayısı", @@ -157,5 +157,22 @@ "forum/views": "Görüntüleme", "forum/x_posts": "{{count}} Mesaj", "forum/x_topics": "{{count}} Konu", - "forum/your_posts": "Mesaj sayınız" + "forum/your_posts": "Mesaj sayınız", + "forum/news_items_front_page_limit": "Ön sayfada görüntülenecek haber sayısı", + "forum/news_items_max": "Haber sayısı en az {{max}} olmalıdır", + "forum/news_items_min": "Haber sayısı en az {{min}} olmalıdır", + "forum/no_news": "Haber gönderisi yok.", + "forum/all_topics_unfollowed": "Tüm konular takipten çıkarıldı.", + "forum/available_hooks": "Mevcut Hook'lar", + "forum/include_in_hook": "Bu forumdaki etkinlikler webhooks'a dahil edilsin mi?", + "forum/confirm_unfollow_all_topics": "Tüm konuları takip etmeyi bırakmak istediğinizden emin misiniz?", + "forum/topic_reply": "Konu yanıtı", + "forum/label_type_in_use": "Etiket tipi kullanılıyor, silinemez.", + "forum/no_posts_found": "Gönderi bulunamadı.", + "forum/highest_reaction_scores": "En yüksek tepki puanları", + "forum/most_posts": "En iyi gönderiler", + "forum/not_following_any_topics": "Herhangi bir konuyu takip etmiyorsunuz.", + "forum/following_topics": "Takip edilen konular", + "forum/reaction_score": "Tepki puanı", + "forum/post_id": "Gönderi ID" } From 58f17493038741c375f80082d09d3ede9013809d Mon Sep 17 00:00:00 2001 From: Mesutcan Yavuz Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 047/193] Translated using translate.namelessmc.com Co-authored-by: Mesutcan Yavuz Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translation: NamelessMC/Website - Core --- custom/languages/tr_TR.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index 1cf2122edf..40c4577881 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -1199,5 +1199,6 @@ "admin/user_warned_webhook": "{{punished}}, {{punisher}} tarafından uyarıldı.", "user/remove_avatar": "Avatarı kaldır", "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", - "user/continue_with": "{{provider}} ile devam et" + "user/continue_with": "{{provider}} ile devam et", + "admin/clone_group": "Grubu klonla" } From 914460224a204f126ba2029cc5ca5193592b24a2 Mon Sep 17 00:00:00 2001 From: Maiu Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 048/193] Translated using translate.namelessmc.com Co-authored-by: Maiu Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nb_NO/ Translation: NamelessMC/Website - Core --- custom/languages/no_NO.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/custom/languages/no_NO.json b/custom/languages/no_NO.json index c988fbe0b6..62c620184e 100644 --- a/custom/languages/no_NO.json +++ b/custom/languages/no_NO.json @@ -1014,5 +1014,10 @@ "admin/captcha_general": "Aktiver Captcha på registreringssiden?", "admin/captcha_login": "Aktiver Captcha på påloggingssiden?", "admin/dashboard": "Dashboard", - "admin/debug_link": "Feilsøkingslenke" + "admin/debug_link": "Feilsøkingslenke", + "admin/user_banned_webhook": "{{punished}} har blitt utestengt fra nettsiden av {{punisher}}.", + "admin/user_warned_webhook": "{{punished}} har fått en advarsel av {{punisher}}.", + "admin/authme_db_test_connection": "Test tilkobling", + "admin/authme_db_connection_success": "Tilkobling vellykket", + "admin/authme_db_connection_failed": "Tilkobling mislykket" } From 21739108f92ff208aebffcec7294f78843107982 Mon Sep 17 00:00:00 2001 From: Dominik Roman Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 049/193] Translated using translate.namelessmc.com Co-authored-by: Dominik Roman Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/sk/ Translation: NamelessMC/Website - Core --- custom/languages/sk_SK.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/sk_SK.json b/custom/languages/sk_SK.json index 246c0bab63..c1a9f7312e 100644 --- a/custom/languages/sk_SK.json +++ b/custom/languages/sk_SK.json @@ -885,7 +885,7 @@ "time/less_than_a_minute": "pred menej ako minútou", "time/over_x_years": "pred viac ako {{count}} rokmi", "user/1_new_alert": "Máte 1 nové upozornenie", - "user/1_new_message": "Máte {{count}} novú správu", + "user/1_new_message": "Máte 1 novú správu", "user/1_reaction": "1 reakcia", "user/1_reply": "1 odpoveď", "user/about": "O užívateľovi", From 57df51a3f4108fef026f0e35e20885084a468101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andreas=20phillip=20s=C3=B8ndergaard=20andersen?= Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 050/193] Translated using translate.namelessmc.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: andreas phillip søndergaard andersen Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/da/ Translation: NamelessMC/Website - Forum --- modules/Forum/language/da_DK.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/Forum/language/da_DK.json b/modules/Forum/language/da_DK.json index 0967ef424b..700733a6db 100644 --- a/modules/Forum/language/da_DK.json +++ b/modules/Forum/language/da_DK.json @@ -1 +1,16 @@ -{} +{ + "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere", + "forum/available_hooks": "Ledig Hooks", + "forum/topic_reply": "emne svar", + "forum/can_create_topic": "kan oprette emner?", + "forum/can_post_reply": "kan svar?", + "forum/can_view_forum": "kan se forum?", + "forum/confirm_delete_post": "Er du sikker på at du vil slette dette opslag?", + "forum/confirm_delete_topic": "Er du sikker på du vil slette dette emne?", + "forum/by": "ved", + "forum/can_edit_topic": "kan redigere deres emne?", + "forum/edit": "Redigere", + "forum/delete_topic": "slet emne", + "forum/delete_forum": "Slet forum", + "forum/delete_topics_and_posts": "Slet enme og opslag" +} From d322554e5ac2a7f0944197d45a0088fe09ccbf06 Mon Sep 17 00:00:00 2001 From: Mesutcan Yavuz Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 051/193] Translated using translate.namelessmc.com Co-authored-by: Mesutcan Yavuz Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translation: NamelessMC/Website - Core --- custom/languages/tr_TR.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index 1cf2122edf..40c4577881 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -1199,5 +1199,6 @@ "admin/user_warned_webhook": "{{punished}}, {{punisher}} tarafından uyarıldı.", "user/remove_avatar": "Avatarı kaldır", "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", - "user/continue_with": "{{provider}} ile devam et" + "user/continue_with": "{{provider}} ile devam et", + "admin/clone_group": "Grubu klonla" } From 1d2057fb0aecc6fd45958fbf0ad8d150031be69e Mon Sep 17 00:00:00 2001 From: Maiu Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 052/193] Translated using translate.namelessmc.com Co-authored-by: Maiu Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nb_NO/ Translation: NamelessMC/Website - Core --- custom/languages/no_NO.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/custom/languages/no_NO.json b/custom/languages/no_NO.json index c988fbe0b6..62c620184e 100644 --- a/custom/languages/no_NO.json +++ b/custom/languages/no_NO.json @@ -1014,5 +1014,10 @@ "admin/captcha_general": "Aktiver Captcha på registreringssiden?", "admin/captcha_login": "Aktiver Captcha på påloggingssiden?", "admin/dashboard": "Dashboard", - "admin/debug_link": "Feilsøkingslenke" + "admin/debug_link": "Feilsøkingslenke", + "admin/user_banned_webhook": "{{punished}} har blitt utestengt fra nettsiden av {{punisher}}.", + "admin/user_warned_webhook": "{{punished}} har fått en advarsel av {{punisher}}.", + "admin/authme_db_test_connection": "Test tilkobling", + "admin/authme_db_connection_success": "Tilkobling vellykket", + "admin/authme_db_connection_failed": "Tilkobling mislykket" } From b01611d9edc825f38703b59d08cc7b23f4f25786 Mon Sep 17 00:00:00 2001 From: Dominik Roman Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 053/193] Translated using translate.namelessmc.com Co-authored-by: Dominik Roman Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/sk/ Translation: NamelessMC/Website - Core --- custom/languages/sk_SK.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/languages/sk_SK.json b/custom/languages/sk_SK.json index 246c0bab63..c1a9f7312e 100644 --- a/custom/languages/sk_SK.json +++ b/custom/languages/sk_SK.json @@ -885,7 +885,7 @@ "time/less_than_a_minute": "pred menej ako minútou", "time/over_x_years": "pred viac ako {{count}} rokmi", "user/1_new_alert": "Máte 1 nové upozornenie", - "user/1_new_message": "Máte {{count}} novú správu", + "user/1_new_message": "Máte 1 novú správu", "user/1_reaction": "1 reakcia", "user/1_reply": "1 odpoveď", "user/about": "O užívateľovi", From 609a33b64161124293b1d080053fa7c3ae8338e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andreas=20phillip=20s=C3=B8ndergaard=20andersen?= Date: Thu, 25 May 2023 16:13:22 +0000 Subject: [PATCH 054/193] Translated using translate.namelessmc.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: andreas phillip søndergaard andersen Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/da/ Translation: NamelessMC/Website - Forum --- modules/Forum/language/da_DK.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/Forum/language/da_DK.json b/modules/Forum/language/da_DK.json index 0967ef424b..700733a6db 100644 --- a/modules/Forum/language/da_DK.json +++ b/modules/Forum/language/da_DK.json @@ -1 +1,16 @@ -{} +{ + "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere", + "forum/available_hooks": "Ledig Hooks", + "forum/topic_reply": "emne svar", + "forum/can_create_topic": "kan oprette emner?", + "forum/can_post_reply": "kan svar?", + "forum/can_view_forum": "kan se forum?", + "forum/confirm_delete_post": "Er du sikker på at du vil slette dette opslag?", + "forum/confirm_delete_topic": "Er du sikker på du vil slette dette emne?", + "forum/by": "ved", + "forum/can_edit_topic": "kan redigere deres emne?", + "forum/edit": "Redigere", + "forum/delete_topic": "slet emne", + "forum/delete_forum": "Slet forum", + "forum/delete_topics_and_posts": "Slet enme og opslag" +} From 78e6060ba23ef3d2b5be8483e8d043fe451d1992 Mon Sep 17 00:00:00 2001 From: Supercrafter100 <58982133+supercrafter100@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:08:25 +0200 Subject: [PATCH 055/193] Fix multi query (#3383) * Add id to default server * Fix multiquery --- core/classes/Minecraft/PluginQuery.php | 9 +++++---- modules/Core/module.php | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/classes/Minecraft/PluginQuery.php b/core/classes/Minecraft/PluginQuery.php index b7ea6656c9..18ca8d3d31 100644 --- a/core/classes/Minecraft/PluginQuery.php +++ b/core/classes/Minecraft/PluginQuery.php @@ -63,17 +63,18 @@ public static function multiQuery(array $servers, Language $language, bool $accu $cache->setCache('latest_query'); foreach ($servers as $server) { - $server_id = $server->id; - $data = $cache->retrieve($server_id); + $server_id = $server['id']; + if (!$cache->isCached($server_id) && $accumulate === true) { $to_return[] = [ - 'name' => Output::getClean($data['name']), + 'name' => Output::getClean($server['name']), 'status_value' => 0, 'status' => $language->get('general', 'offline'), 'server_offline' => $language->get('general', 'server_offline') ]; } else { // Server is online + $data = $cache->retrieve($server_id); if ($accumulate === false) { $to_return[] = [ 'name' => Output::getClean($server['name']), @@ -107,4 +108,4 @@ public static function multiQuery(array $servers, Language $language, bool $accu return $to_return; } -} \ No newline at end of file +} diff --git a/modules/Core/module.php b/modules/Core/module.php index d49a78a287..5796311b97 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -834,7 +834,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart } if (!is_null($default) && isset($default->ip)) { - $full_ip = ['ip' => $default->ip . (is_null($default->port) ? '' : ':' . $default->port), 'pre' => $default->pre, 'name' => $default->name]; + $full_ip = ['ip' => $default->ip . (is_null($default->port) ? '' : ':' . $default->port), 'pre' => $default->pre, 'name' => $default->name, 'id' => $default->id]; // Get query type $query_type = Util::getSetting('query_type', 'internal'); From dacb3cdf7125dd4dd7f802b4a5e1850e8a0d7f3d Mon Sep 17 00:00:00 2001 From: Supercrafter100 <58982133+supercrafter100@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:08:25 +0200 Subject: [PATCH 056/193] Fix multi query (#3383) * Add id to default server * Fix multiquery --- core/classes/Minecraft/PluginQuery.php | 9 +++++---- modules/Core/module.php | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/classes/Minecraft/PluginQuery.php b/core/classes/Minecraft/PluginQuery.php index b7ea6656c9..18ca8d3d31 100644 --- a/core/classes/Minecraft/PluginQuery.php +++ b/core/classes/Minecraft/PluginQuery.php @@ -63,17 +63,18 @@ public static function multiQuery(array $servers, Language $language, bool $accu $cache->setCache('latest_query'); foreach ($servers as $server) { - $server_id = $server->id; - $data = $cache->retrieve($server_id); + $server_id = $server['id']; + if (!$cache->isCached($server_id) && $accumulate === true) { $to_return[] = [ - 'name' => Output::getClean($data['name']), + 'name' => Output::getClean($server['name']), 'status_value' => 0, 'status' => $language->get('general', 'offline'), 'server_offline' => $language->get('general', 'server_offline') ]; } else { // Server is online + $data = $cache->retrieve($server_id); if ($accumulate === false) { $to_return[] = [ 'name' => Output::getClean($server['name']), @@ -107,4 +108,4 @@ public static function multiQuery(array $servers, Language $language, bool $accu return $to_return; } -} \ No newline at end of file +} diff --git a/modules/Core/module.php b/modules/Core/module.php index d49a78a287..5796311b97 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -834,7 +834,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart } if (!is_null($default) && isset($default->ip)) { - $full_ip = ['ip' => $default->ip . (is_null($default->port) ? '' : ':' . $default->port), 'pre' => $default->pre, 'name' => $default->name]; + $full_ip = ['ip' => $default->ip . (is_null($default->port) ? '' : ':' . $default->port), 'pre' => $default->pre, 'name' => $default->name, 'id' => $default->id]; // Get query type $query_type = Util::getSetting('query_type', 'internal'); From 016b5571421a4045aed1251a51eb723aee8e0716 Mon Sep 17 00:00:00 2001 From: PadowYT2 Date: Fri, 9 Jun 2023 04:06:38 +0300 Subject: [PATCH 057/193] Fix icon not being properly shown (#3377) --- core/classes/Misc/ErrorHandler.php | 1 + core/includes/error.tpl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/classes/Misc/ErrorHandler.php b/core/classes/Misc/ErrorHandler.php index fa9ec37198..fd74b14342 100644 --- a/core/classes/Misc/ErrorHandler.php +++ b/core/classes/Misc/ErrorHandler.php @@ -142,6 +142,7 @@ public static function catchException(?Throwable $exception, ?string $error_stri 'PRISM_CSS' => $path . 'plugins/prism/prism_light_atom.css', 'PRISM_JS' => $path . 'plugins/prism/prism.js', 'DETAILED_ERROR' => Debugging::canViewDetailedError(), + 'LOGO' => $path . 'img/namelessmc_logo.png', 'FATAL_ERROR_TITLE' => $language->get('errors', 'fatal_error_title'), 'FATAL_ERROR_MESSAGE_ADMIN' => $language->get('errors', 'fatal_error_message_admin'), 'FATAL_ERROR_MESSAGE_USER' => $language->get('errors', 'fatal_error_message_user'), diff --git a/core/includes/error.tpl b/core/includes/error.tpl index cd78d737c4..d304bf3281 100644 --- a/core/includes/error.tpl +++ b/core/includes/error.tpl @@ -19,7 +19,7 @@ {if $DETAILED_ERROR} \ No newline at end of file + From fc038e91bc3d769d91fd427608202cfe7b47b547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andreas=20phillip=20s=C3=B8ndergaard=20andersen?= Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 059/193] Translated using translate.namelessmc.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: andreas phillip søndergaard andersen Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/da/ Translation: NamelessMC/Website - Forum --- modules/Forum/language/da_DK.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/Forum/language/da_DK.json b/modules/Forum/language/da_DK.json index 700733a6db..1d5a9ef060 100644 --- a/modules/Forum/language/da_DK.json +++ b/modules/Forum/language/da_DK.json @@ -1,5 +1,5 @@ { - "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere", + "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere.", "forum/available_hooks": "Ledig Hooks", "forum/topic_reply": "emne svar", "forum/can_create_topic": "kan oprette emner?", @@ -12,5 +12,6 @@ "forum/edit": "Redigere", "forum/delete_topic": "slet emne", "forum/delete_forum": "Slet forum", - "forum/delete_topics_and_posts": "Slet enme og opslag" + "forum/delete_topics_and_posts": "Slet enme og opslag", + "forum/average_posts": "Gennemsnitligt antal brugerindlæg" } From 0dd852832747a16a16d863805d45cc42b9c662f5 Mon Sep 17 00:00:00 2001 From: NamelessMC Translations Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 060/193] Translated using translate.namelessmc.com Co-authored-by: NamelessMC Translations Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nl/ Translation: NamelessMC/Website - Core --- custom/languages/nl_NL.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/custom/languages/nl_NL.json b/custom/languages/nl_NL.json index bd0095ac24..ab0c0950a2 100644 --- a/custom/languages/nl_NL.json +++ b/custom/languages/nl_NL.json @@ -388,7 +388,7 @@ "admin/placeholders": "Placeholders", "admin/placeholders_friendly_name": "Vriendelijke Naam", "admin/placeholders_friendly_name_info": "Gebruik dit om een 'bijnaam' in te stellen op deze placeholder. De vriendelijke naam zal worden gebruikt in plaats van de onbewerkte naam.", - "admin/placeholders_info": "Placeholders laten de NamelessMC Spigot plugin toe om statistieken over elke speler naar uw website te sturen, zodat ze die kunnen weergeven op hun profiel en forumberichten.", + "admin/placeholders_info": "Placeholders laten de NamelessMC plugin statistieken over elke speler naar de website sturen, zodat ze weergeven kunnen worden op hun profiel en bij forumberichten.", "admin/placeholders_last_updated": "Laatst Geüpdatet", "admin/placeholders_name": "Naam", "admin/placeholders_none": "Er zijn geen placeholders.", @@ -739,7 +739,7 @@ "installer/install": "Installatie", "installer/installer_information": "Het installatieprogramma leidt je door het installatieproces.", "installer/installer_now_initialising_database": "De installateur is de database aan het instellen. Dit kan een tijdje duren...", - "installer/installer_welcome": "Welkom bij NamelessMC versie 2.0", + "installer/installer_welcome": "Welkom bij NamelessMC versie 2", "installer/language": "Taal", "installer/no": "Nee", "installer/no_converters_available": "Er zijn geen converters beschikbaar.", @@ -862,7 +862,7 @@ "time/less_than_a_minute": "Minder dan een minuut geleden", "time/over_x_years": "meer dan {{count}} jaar geleden", "user/1_new_alert": "U heeft 1 nieuwe melding", - "user/1_new_message": "Je hebt {{count}} nieuw bericht", + "user/1_new_message": "Je hebt 1 nieuw bericht", "user/1_reaction": "1 reactie", "user/1_reply": "1 antwoord", "user/about": "Over", @@ -1026,7 +1026,7 @@ "user/users_to_required": "Je moet minimaal 1 ontvanger invoeren", "user/validate_account_command": "Om de registratie te voltooien, run alstublieft het commando {{command}} in-spel.", "user/validation_complete": "Je account is bevestigd, je kunt nu inloggen.", - "user/validation_error": "Er was een onbekend probleem bij het bevestigen van je account, neem contact op met de beheerds.", + "user/validation_error": "Ongeldige verificatiecode, is de gebruiker al geverifieerd?", "user/view_alerts": "Bekijk meldingen", "user/view_messages": "Bekijk berichten", "user/views": "Profiel weergaven:", @@ -1110,7 +1110,7 @@ "admin/verified": "Geverifieerd", "api/integration_identifier_already_linked": "{{integration}} identificatie is al gekoppeld aan een andere gebruiker.", "general/oauth_message_continue": "Vervolg registratie met {{provider}}", - "installer/friendly_urls_info": "Vriendelijke URLs zorgen voor een betere leesbaarheid van URLs in je browser.
Bijvoorbeeld:
example.com/index.php?route=/forum
wordt dan:
example.com/forum
", + "installer/friendly_urls_info": "Vriendelijke URLs zorgen voor een betere leesbaarheid van URLs in je browser.
Bijvoorbeeld: example.com/index.php?route=/forum wordt dan:
example.com/forum
Belangrijk!
Je server moet correct geconfigureerd zijn om dit te laten werken. Je kan zien of je deze optie kunt aanzetten door hier te klikken.
", "installer/hostname_error": "Vul alstublieft een geldige hostnaam in zonder http:// of https://", "installer/support_message": "Als je hulp nodig hebt, check dan onze website {{websiteLinkStart}}hier{{websiteLinkEnd}}, of je kan ook onze {{discordLinkStart}}Discord server{{discordLinkEnd}} bezoeken of onze {{githubLinkStart}}GitHub opslagplaats{{githubLinkEnd}}.", "user/agree_t_and_c": "Ik heb de {{linkStart}}Termen en Voorwaarden{{linkEnd}} gelezen en ga akkoord.", @@ -1237,5 +1237,6 @@ "admin/emoji_joypixels": "JoyPixels", "admin/confirm_delete_placeholder": "Weet je zeker dat je deze placeholder wilt verwijderen?", "admin/discord_hook": "Discord", - "admin/emoji_twemoji": "Twemoji" + "admin/emoji_twemoji": "Twemoji", + "general/sql_query": "SQL-query" } From 8c121759ee5f119ac1e7c6bef344f3b399ccbf46 Mon Sep 17 00:00:00 2001 From: Petr Kubinec Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 061/193] Translated using translate.namelessmc.com Co-authored-by: Petr Kubinec Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/en_US/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Forum Translation: NamelessMC/Website - Members module --- custom/languages/en_US.json | 9 ++++++++- modules/Forum/language/en_US.json | 9 ++++++++- modules/Members/language/en_US.json | 18 +++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/custom/languages/en_US.json b/custom/languages/en_US.json index e61969b88a..5efe17c84e 100644 --- a/custom/languages/en_US.json +++ b/custom/languages/en_US.json @@ -1209,5 +1209,12 @@ "admin/require_minecraft_username_on_registration": "Require Minecraft Username on registration?", "user/like": "Like", "user/profile_post_reply": "Profile Post Reply", - "api/webhook_added": "The webhook has been created" + "api/webhook_added": "The webhook has been created", + "admin/user_banned_webhook": "{{punished}} has been banned from the website by {{punisher}}.", + "admin/user_warned_webhook": "{{punished}} has been warned by {{punisher}}.", + "admin/clone_group": "Clone group", + "admin/auto_language_help": "If enabled, guests & logged out users will be able to let the website automatically detect their preferred language.", + "admin/authme_db_test_connection": "Test Connection", + "admin/authme_db_connection_success": "Connection successful", + "admin/authme_db_connection_failed": "Connection failed" } diff --git a/modules/Forum/language/en_US.json b/modules/Forum/language/en_US.json index 1565620be0..bfb6a44114 100644 --- a/modules/Forum/language/en_US.json +++ b/modules/Forum/language/en_US.json @@ -176,5 +176,12 @@ "forum/topic_reply": "Topic reply", "forum/label_type_in_use": "Label type is being used, cannot be deleted.", "forum/latest_posts_widget_cached": "The latest posts widget is cached for one minute, your changes may not take effect immediately.", - "forum/latest_posts_limit": "Latest posts limit" + "forum/latest_posts_limit": "Latest posts limit", + "forum/news_items_max": "Number of news items should be at least {{max}}", + "forum/news_items_min": "Number of news items should be at least {{min}}", + "forum/news_items_front_page_limit": "Number of news items to display on front page", + "forum/reaction_score": "Reaction score", + "forum/no_posts_found": "No posts found.", + "forum/highest_reaction_scores": "Highest reaction scores", + "forum/most_posts": "Most posts" } diff --git a/modules/Members/language/en_US.json b/modules/Members/language/en_US.json index 0967ef424b..8567e72a39 100644 --- a/modules/Members/language/en_US.json +++ b/modules/Members/language/en_US.json @@ -1 +1,17 @@ -{} +{ + "members/members": "Menbers", + "members/new_members": "New members", + "members/no_members": "No members found.", + "members/member_lists": "Member Lists", + "members/member_list_hide_banned_users": "Hide banned users?", + "members/member_list_toggled_enabled": "Successfully enabled {{list}} list.", + "members/member_list_toggled_disabled": "Successfully disabled {{list}} list.", + "members/view_all": "View all", + "members/find_member": "Find member", + "members/name": "Name...", + "members/view_group": "View group", + "members/group": "Group...", + "members/no_results_header": "No results found", + "members/no_results_text": "Your search returned no results", + "members/viewable_groups": "Viewable groups" +} From 780fa2888fe2d85901f258d40bca6077b7a0ee22 Mon Sep 17 00:00:00 2001 From: untuned Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 062/193] Translated using translate.namelessmc.com Co-authored-by: untuned Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/en_US/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/en_US.json | 122 ++++++++++++++++++++++++++-- modules/Members/language/en_US.json | 4 +- 2 files changed, 116 insertions(+), 10 deletions(-) diff --git a/custom/languages/en_US.json b/custom/languages/en_US.json index 5efe17c84e..5df0d28751 100644 --- a/custom/languages/en_US.json +++ b/custom/languages/en_US.json @@ -403,7 +403,7 @@ "admin/placeholders": "Placeholders", "admin/placeholders_friendly_name": "Friendly Name", "admin/placeholders_friendly_name_info": "Use this to set a 'nickname' to this placeholder. The friendly name will be used instead of the raw name.", - "admin/placeholders_info": "Placeholders allow the NamelessMC Spigot plugin to send statistics about each player to your website so they can display them on their profile and forum posts.", + "admin/placeholders_info": "Placeholders allow the NamelessMC plugin to send statistics about each player to your website so they can display them on their profile and forum posts.", "admin/placeholders_last_updated": "Last Updated", "admin/placeholders_name": "Name", "admin/placeholders_none": "There are no placeholders.", @@ -761,7 +761,7 @@ "installer/finish": "Finish", "installer/finish_message": "Thanks for installing NamelessMC! You can now proceed to the StaffCP, where you can further configure your website.", "installer/friendly_urls": "Friendly URLs", - "installer/friendly_urls_info": "Friendly URLs will improve the readability of URLs in your browser.
For example:
example.com/index.php?route=/forum
would become:
example.com/forum
Important!
Your server must be configured correctly for this to work. You can see whether you can enable this option by clicking here.
", + "installer/friendly_urls_info": "Friendly URLs will improve the readability of URLs in your browser.
For example: example.com/index.php?route=/forum would become:
example.com/forum
Important!
Your server must be configured correctly for this to work. You can see whether you can enable this option by clicking here.
", "installer/general_configuration": "General Configuration", "installer/host": "Hostname", "installer/host_help": "The hostname is the base URL for your website. Do not include the subfolders from the Installation Path field, or http(s):// here!", @@ -770,7 +770,7 @@ "installer/install": "Install", "installer/installer_information": "The installer will guide you through the installation process.", "installer/installer_now_initialising_database": "The installer is now initializing the database. This may take a while...", - "installer/installer_welcome": "Welcome to NamelessMC version 2.0", + "installer/installer_welcome": "Welcome to NamelessMC version 2", "installer/language": "Language", "installer/no": "No", "installer/no_converters_available": "There are no converters available.", @@ -894,7 +894,7 @@ "time/less_than_a_minute": "less than a minute ago", "time/over_x_years": "over {{count}} years ago", "user/1_new_alert": "You have 1 new alert", - "user/1_new_message": "You have {{count}} new message", + "user/1_new_message": "You have 1 new message", "user/1_reaction": "1 reaction", "user/1_reply": "1 reply", "user/about": "About", @@ -906,10 +906,10 @@ "user/agree_t_and_c": "I have read and accept the {{linkStart}}Terms and Conditions{{linkEnd}}.", "user/alerts": "Alerts", "user/authme_account_linked": "Account linked successfully.", - "user/authme_email_help_1": "Finally, please enter your email address.", - "user/authme_email_help_2": "Finally, please enter your email address, and also choose a display name for your account.", + "user/authme_email_help_1": "Finally, please enter the following details.", + "user/authme_email_help_2": "Finally, please enter the following details, and also choose a display name for your account.", "user/authme_help": "Please enter your ingame AuthMe account details. If you don't already have an account ingame, join the server now and follow the instructions provided.", - "user/authme_username_exists": "Your Authme account has already been connected to the website!", + "user/authme_username_exists": "Your AuthMe account has already been connected to the website!", "user/avatar": "Avatar", "user/block_user": "Block User", "user/cant_send_to_self": "You can't send a message to yourself!", @@ -1066,7 +1066,7 @@ "user/users_to_required": "Please input some message recipients", "user/validate_account_command": "To complete registration, please execute the command {{command}} ingame.", "user/validation_complete": "Your account has been validated, you can now log in.", - "user/validation_error": "There was an unknown error validating your account, please contact a website administrator.", + "user/validation_error": "Invalid validation code, has the user already been validated?", "user/view_alerts": "View alerts", "user/view_messages": "View messages", "user/views": "Profile Views:", @@ -1216,5 +1216,109 @@ "admin/auto_language_help": "If enabled, guests & logged out users will be able to let the website automatically detect their preferred language.", "admin/authme_db_test_connection": "Test Connection", "admin/authme_db_connection_success": "Connection successful", - "admin/authme_db_connection_failed": "Connection failed" + "admin/authme_db_connection_failed": "Connection failed", + "installer/step_select_modules": "Select Modules", + "admin/og_image_updated_successfully": "OG image updated successfully.", + "admin/image": "Image", + "installer/timezone": "Timezone", + "admin/unable_to_load_outdated_module": "Unable to load outdated module {{module}}.", + "admin/unable_to_load_module": "Error {{message}} in module {{module}}.", + "admin/internal": "Internal", + "admin/external": "External", + "admin/query_type": "Query type", + "admin/emoji_native": "Native", + "admin/emoji_style": "Emoji Style", + "admin/emoji_style_help": "Change which emoji set is used:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", + "admin/emoji_joypixels": "JoyPixels", + "admin/event_supports_discord": "This event supports Discord webhooks and has a custom embed.", + "admin/query_type_help": "If the default internal server query does not work, try another option.", + "admin/mass_email_failed_check_logs": "One or more emails failed to send. Please check the email logs for more information.", + "admin/og_image_reset_successfully": "OG image reset successfully.", + "admin/fallback_og_image_x": "Fallback OG image: {{imageName}}", + "admin/panel_template_third_party": "Panel template {{name}} is a third party template. Please be aware that version compatibility is not guaranteed between minor NamelessMC updates, and issues should be redirected to the template author.", + "admin/queue_info": "The queue allows for tasks to be scheduled and performed in the background. To use the cron queue runner, create a cron job to access the below URL at the defined interval.", + "admin/queue_interval": "Queue Interval (minutes)", + "admin/queue_interval_at_least_x": "Please enter a queue interval of at least {{x}} minutes", + "admin/queue_task_action_invalid": "Invalid task action", + "admin/queue_task_fragment_next": "Task fragment next offset", + "admin/queue_task_invalid_status_to_requeue": "The task is not in a valid state for it to be requeued", + "admin/render_profile_post_hook_info": "Render profile post", + "general/joined": "Joined", + "general/oauth_email_verified_automatically": "Email will be verified automatically", + "general/unable_to_load_widget": "Unable to load widget", + "api/groups_updates_successfully": "Groups updated successfully", + "installer/select_modules_details": "Select the modules you would like to enable on your site. These can be toggled later on through the admin panel.", + "user/successful_login_synced_password": "You have successfully logged in, and your password has been synced with your AuthMe password.", + "general/registration_disabled_message_fallback": "Registration is currently disabled.", + "installer/username_min_max": "Please ensure your username is between {{minUsername}} and {{maxUsername}} characters long.", + "installer/username_required": "Please input a valid username.", + "installer/email_min_max": "Please ensure your email address is between {{minEmail}} and {{maxEmail}} characters long.", + "installer/email_required": "Please input a valid email.", + "installer/password_min_max": "Please ensure your password is between {{minPassword}} and {{maxPassword}} characters long.", + "installer/password_required": "Please input a valid password.", + "installer/module_core_description": "This module is required for NamelessMC to function correctly.", + "installer/module_cookie-consent_description": "Allows users to accept the use of cookies on your website.", + "installer/module_forum_description": "Adds a forum to your website.", + "installer/module_discord-integration_description": "Allows users to link their Discord account to their website account and perform various synchronization actions.", + "installer/module_members_description": "Adds a detailed members page and statistics to your website.", + "installer/select_modules": "Select Modules", + "user/authme_account_not_found": "That AuthMe account could not be found.", + "user/authme_sync_password": "Sync AuthMe Password", + "user/authme_sync_password_help": "You can sync your in-game password with your website password. This will allow you to log in to the forum using your in-game password.", + "user/authme_sync_password_setting": "Enable to sync your website password with your in-game password upon login. You will get a confirmation when the sync occurs.", + "user/authme_sync_password_setting_email": "Enable to sync your website password with your in-game password upon login. You will get a confirmation when the sync occurs. You may need to set your email in-game to use this feature.", + "user/continue_with": "Continue with {{provider}}", + "user/authme_not_setup": "AuthMe is not set up. Contact a site administrator.", + "user/authme_no_password": "An AuthMe account was found, but no password was stored. Please contact a site administrator.", + "general/problem_loading_widget": "There was a problem loading the widget {{widget}}", + "admin/queue": "Queue", + "admin/queue_cancel_task": "Cancel Task", + "admin/queue_cancel_task_confirm": "Are you sure you want to cancel this task?", + "admin/queue_runner_cron": "Cron", + "admin/queue_runner_one_of": "Please select a valid value for the queue runner", + "admin/queue_status": "Queue Status", + "admin/queue_status_cancelled": "Cancelled", + "admin/queue_status_completed": "Completed", + "admin/queue_status_error": "Error", + "admin/queue_status_failed": "Failed", + "admin/queue_task_attempts": "Attempts", + "admin/queue_task_fragment_total": "Task fragment total", + "admin/queue_task_invalid_status_to_cancel": "The task is not in a valid state for it to be cancelled", + "admin/sent_mass_message": "Successfully sent mass message.", + "user/username_already_exists": "Your chosen username already exists.", + "user/log_in_with": "Log In with {{provider}}", + "admin/confirm_delete_placeholder": "Are you sure you want to delete this placeholder?", + "admin/reset_og_image": "Reset OG image", + "admin/discord_hook": "Discord", + "admin/emoji_twemoji": "Twemoji", + "admin/enable_auto_language": "Enable automatic language detection?", + "admin/event_supports_normal": "This event supports normal webhooks.", + "admin/plugin": "Plugin", + "admin/player_list_limit": "Player list limit", + "admin/queue_interval_required": "Please enter a queue interval", + "admin/queue_requeue_task": "Requeue Task", + "admin/queue_requeue_task_confirm": "Are you sure you want to requeue this task?", + "admin/queue_retry_task": "Retry Task", + "admin/queue_runner": "Queue Runner", + "admin/queue_runner_ajax": "AJAX", + "admin/queue_status_in_progress": "In Progress", + "admin/queue_status_ready": "Ready", + "admin/queue_task": "Task", + "admin/queue_task_cancelled_successfully": "Task cancelled successfully.", + "admin/queue_task_data": "Task data", + "admin/queue_task_entity": "Task entity", + "admin/queue_task_entity_id": "Entity ID", + "admin/queue_task_executed_at": "Executed at", + "admin/queue_task_fragment": "Task fragmented?", + "admin/queue_task_requeued_successfully": "Task requeued successfully.", + "admin/queue_task_triggered_by": "Task triggered by", + "admin/queue_task_name": "Name", + "admin/queue_task_output": "Task output", + "admin/queue_task_scheduled_at": "Scheduled at", + "admin/queue_task_scheduled_for": "Scheduled for", + "admin/queue_task_status": "Status", + "general/oauth_email_not_verified_automatically": "Email will not be verified automatically", + "general/registered_members": "Registered members", + "general/staff_members": "Staff members", + "general/sql_query": "Query" } diff --git a/modules/Members/language/en_US.json b/modules/Members/language/en_US.json index 8567e72a39..056346e2da 100644 --- a/modules/Members/language/en_US.json +++ b/modules/Members/language/en_US.json @@ -13,5 +13,7 @@ "members/group": "Group...", "members/no_results_header": "No results found", "members/no_results_text": "Your search returned no results", - "members/viewable_groups": "Viewable groups" + "members/viewable_groups": "Viewable groups", + "members/no_overview_lists_enabled": "No overview lists are enabled.", + "members/settings_updated_successfully": "Settings updated successfully." } From d203fd2fea069243c3cec64834f526a0d5a0b39c Mon Sep 17 00:00:00 2001 From: Mert Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 063/193] Translated using translate.namelessmc.com Co-authored-by: Mert Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translation: NamelessMC/Website - Core --- custom/languages/tr_TR.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index 40c4577881..fc0bcdc256 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -1200,5 +1200,29 @@ "user/remove_avatar": "Avatarı kaldır", "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", "user/continue_with": "{{provider}} ile devam et", - "admin/clone_group": "Grubu klonla" + "admin/clone_group": "Grubu klonla", + "admin/queue_retry_task": "Görevi tekrar deneyin", + "admin/queue_task_status": "Durum", + "admin/user_password_changed_successfully": "Kullanıcı şifresi başarıyla değiştirildi", + "admin/player_list_limit": "Oyuncu listesi limiti", + "admin/plugin": "Eklenti", + "admin/queue_cancel_task": "Görevi iptal edin", + "admin/queue_cancel_task_confirm": "Bu görevi iptal etmek istediğinizden emin misiniz?", + "admin/queue_status_cancelled": "İptal edildi", + "admin/queue_status_completed": "Tamamlandı", + "admin/queue_status_error": "Hata", + "admin/queue_status_failed": "Başarısız oldu", + "admin/queue_status_in_progress": "İşlemde", + "admin/queue_task_cancelled_successfully": "Görev başarıyla iptal edildi.", + "admin/queue_task_executed_at": "Şurada çalıştırıldı", + "admin/emoji_style": "Emoji Türü", + "admin/discord_hook": "Discord", + "admin/enable_auto_language": "Otomatik dil tetikleyicisini aç", + "admin/event_supports_discord": "Bu etkinlik discord web kancalarını ve özel gömülü mesajlarını destekliyor.", + "admin/event_supports_normal": "Bu etkinlik normal web kancalarını destekliyor.", + "admin/queue_status_ready": "Hazır", + "admin/queue_task": "Görev", + "admin/queue_task_data": "Görev bilgileri", + "admin/queue_task_name": "İsim", + "admin/queue_task_output": "Görevi çıkışı" } From 2010a6ab3ebeacaa1143f7fc8da55754b2d8eb94 Mon Sep 17 00:00:00 2001 From: PadowYT2 Date: Fri, 9 Jun 2023 04:06:38 +0300 Subject: [PATCH 064/193] Fix icon not being properly shown (#3377) --- core/classes/Misc/ErrorHandler.php | 1 + core/includes/error.tpl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/classes/Misc/ErrorHandler.php b/core/classes/Misc/ErrorHandler.php index fa9ec37198..fd74b14342 100644 --- a/core/classes/Misc/ErrorHandler.php +++ b/core/classes/Misc/ErrorHandler.php @@ -142,6 +142,7 @@ public static function catchException(?Throwable $exception, ?string $error_stri 'PRISM_CSS' => $path . 'plugins/prism/prism_light_atom.css', 'PRISM_JS' => $path . 'plugins/prism/prism.js', 'DETAILED_ERROR' => Debugging::canViewDetailedError(), + 'LOGO' => $path . 'img/namelessmc_logo.png', 'FATAL_ERROR_TITLE' => $language->get('errors', 'fatal_error_title'), 'FATAL_ERROR_MESSAGE_ADMIN' => $language->get('errors', 'fatal_error_message_admin'), 'FATAL_ERROR_MESSAGE_USER' => $language->get('errors', 'fatal_error_message_user'), diff --git a/core/includes/error.tpl b/core/includes/error.tpl index cd78d737c4..d304bf3281 100644 --- a/core/includes/error.tpl +++ b/core/includes/error.tpl @@ -19,7 +19,7 @@ {if $DETAILED_ERROR} \ No newline at end of file + From 12e62fed61203243504642ebbff12c66003c2dc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andreas=20phillip=20s=C3=B8ndergaard=20andersen?= Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 066/193] Translated using translate.namelessmc.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: andreas phillip søndergaard andersen Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/da/ Translation: NamelessMC/Website - Forum --- modules/Forum/language/da_DK.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/Forum/language/da_DK.json b/modules/Forum/language/da_DK.json index 700733a6db..1d5a9ef060 100644 --- a/modules/Forum/language/da_DK.json +++ b/modules/Forum/language/da_DK.json @@ -1,5 +1,5 @@ { - "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere", + "forum/all_topics_unfollowed": "Alle emner bliver ikke flugt mere.", "forum/available_hooks": "Ledig Hooks", "forum/topic_reply": "emne svar", "forum/can_create_topic": "kan oprette emner?", @@ -12,5 +12,6 @@ "forum/edit": "Redigere", "forum/delete_topic": "slet emne", "forum/delete_forum": "Slet forum", - "forum/delete_topics_and_posts": "Slet enme og opslag" + "forum/delete_topics_and_posts": "Slet enme og opslag", + "forum/average_posts": "Gennemsnitligt antal brugerindlæg" } From 6b2b1ccb9e3f1fcce82421ece4549b26017379b2 Mon Sep 17 00:00:00 2001 From: NamelessMC Translations Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 067/193] Translated using translate.namelessmc.com Co-authored-by: NamelessMC Translations Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/nl/ Translation: NamelessMC/Website - Core --- custom/languages/nl_NL.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/custom/languages/nl_NL.json b/custom/languages/nl_NL.json index bd0095ac24..ab0c0950a2 100644 --- a/custom/languages/nl_NL.json +++ b/custom/languages/nl_NL.json @@ -388,7 +388,7 @@ "admin/placeholders": "Placeholders", "admin/placeholders_friendly_name": "Vriendelijke Naam", "admin/placeholders_friendly_name_info": "Gebruik dit om een 'bijnaam' in te stellen op deze placeholder. De vriendelijke naam zal worden gebruikt in plaats van de onbewerkte naam.", - "admin/placeholders_info": "Placeholders laten de NamelessMC Spigot plugin toe om statistieken over elke speler naar uw website te sturen, zodat ze die kunnen weergeven op hun profiel en forumberichten.", + "admin/placeholders_info": "Placeholders laten de NamelessMC plugin statistieken over elke speler naar de website sturen, zodat ze weergeven kunnen worden op hun profiel en bij forumberichten.", "admin/placeholders_last_updated": "Laatst Geüpdatet", "admin/placeholders_name": "Naam", "admin/placeholders_none": "Er zijn geen placeholders.", @@ -739,7 +739,7 @@ "installer/install": "Installatie", "installer/installer_information": "Het installatieprogramma leidt je door het installatieproces.", "installer/installer_now_initialising_database": "De installateur is de database aan het instellen. Dit kan een tijdje duren...", - "installer/installer_welcome": "Welkom bij NamelessMC versie 2.0", + "installer/installer_welcome": "Welkom bij NamelessMC versie 2", "installer/language": "Taal", "installer/no": "Nee", "installer/no_converters_available": "Er zijn geen converters beschikbaar.", @@ -862,7 +862,7 @@ "time/less_than_a_minute": "Minder dan een minuut geleden", "time/over_x_years": "meer dan {{count}} jaar geleden", "user/1_new_alert": "U heeft 1 nieuwe melding", - "user/1_new_message": "Je hebt {{count}} nieuw bericht", + "user/1_new_message": "Je hebt 1 nieuw bericht", "user/1_reaction": "1 reactie", "user/1_reply": "1 antwoord", "user/about": "Over", @@ -1026,7 +1026,7 @@ "user/users_to_required": "Je moet minimaal 1 ontvanger invoeren", "user/validate_account_command": "Om de registratie te voltooien, run alstublieft het commando {{command}} in-spel.", "user/validation_complete": "Je account is bevestigd, je kunt nu inloggen.", - "user/validation_error": "Er was een onbekend probleem bij het bevestigen van je account, neem contact op met de beheerds.", + "user/validation_error": "Ongeldige verificatiecode, is de gebruiker al geverifieerd?", "user/view_alerts": "Bekijk meldingen", "user/view_messages": "Bekijk berichten", "user/views": "Profiel weergaven:", @@ -1110,7 +1110,7 @@ "admin/verified": "Geverifieerd", "api/integration_identifier_already_linked": "{{integration}} identificatie is al gekoppeld aan een andere gebruiker.", "general/oauth_message_continue": "Vervolg registratie met {{provider}}", - "installer/friendly_urls_info": "Vriendelijke URLs zorgen voor een betere leesbaarheid van URLs in je browser.
Bijvoorbeeld:
example.com/index.php?route=/forum
wordt dan:
example.com/forum
", + "installer/friendly_urls_info": "Vriendelijke URLs zorgen voor een betere leesbaarheid van URLs in je browser.
Bijvoorbeeld: example.com/index.php?route=/forum wordt dan:
example.com/forum
Belangrijk!
Je server moet correct geconfigureerd zijn om dit te laten werken. Je kan zien of je deze optie kunt aanzetten door hier te klikken.
", "installer/hostname_error": "Vul alstublieft een geldige hostnaam in zonder http:// of https://", "installer/support_message": "Als je hulp nodig hebt, check dan onze website {{websiteLinkStart}}hier{{websiteLinkEnd}}, of je kan ook onze {{discordLinkStart}}Discord server{{discordLinkEnd}} bezoeken of onze {{githubLinkStart}}GitHub opslagplaats{{githubLinkEnd}}.", "user/agree_t_and_c": "Ik heb de {{linkStart}}Termen en Voorwaarden{{linkEnd}} gelezen en ga akkoord.", @@ -1237,5 +1237,6 @@ "admin/emoji_joypixels": "JoyPixels", "admin/confirm_delete_placeholder": "Weet je zeker dat je deze placeholder wilt verwijderen?", "admin/discord_hook": "Discord", - "admin/emoji_twemoji": "Twemoji" + "admin/emoji_twemoji": "Twemoji", + "general/sql_query": "SQL-query" } From 80522dd99a515ae07b7a0409afd7136ea4412435 Mon Sep 17 00:00:00 2001 From: Petr Kubinec Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 068/193] Translated using translate.namelessmc.com Co-authored-by: Petr Kubinec Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-forum/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/en_US/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Forum Translation: NamelessMC/Website - Members module --- custom/languages/en_US.json | 9 ++++++++- modules/Forum/language/en_US.json | 9 ++++++++- modules/Members/language/en_US.json | 18 +++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/custom/languages/en_US.json b/custom/languages/en_US.json index e61969b88a..5efe17c84e 100644 --- a/custom/languages/en_US.json +++ b/custom/languages/en_US.json @@ -1209,5 +1209,12 @@ "admin/require_minecraft_username_on_registration": "Require Minecraft Username on registration?", "user/like": "Like", "user/profile_post_reply": "Profile Post Reply", - "api/webhook_added": "The webhook has been created" + "api/webhook_added": "The webhook has been created", + "admin/user_banned_webhook": "{{punished}} has been banned from the website by {{punisher}}.", + "admin/user_warned_webhook": "{{punished}} has been warned by {{punisher}}.", + "admin/clone_group": "Clone group", + "admin/auto_language_help": "If enabled, guests & logged out users will be able to let the website automatically detect their preferred language.", + "admin/authme_db_test_connection": "Test Connection", + "admin/authme_db_connection_success": "Connection successful", + "admin/authme_db_connection_failed": "Connection failed" } diff --git a/modules/Forum/language/en_US.json b/modules/Forum/language/en_US.json index 1565620be0..bfb6a44114 100644 --- a/modules/Forum/language/en_US.json +++ b/modules/Forum/language/en_US.json @@ -176,5 +176,12 @@ "forum/topic_reply": "Topic reply", "forum/label_type_in_use": "Label type is being used, cannot be deleted.", "forum/latest_posts_widget_cached": "The latest posts widget is cached for one minute, your changes may not take effect immediately.", - "forum/latest_posts_limit": "Latest posts limit" + "forum/latest_posts_limit": "Latest posts limit", + "forum/news_items_max": "Number of news items should be at least {{max}}", + "forum/news_items_min": "Number of news items should be at least {{min}}", + "forum/news_items_front_page_limit": "Number of news items to display on front page", + "forum/reaction_score": "Reaction score", + "forum/no_posts_found": "No posts found.", + "forum/highest_reaction_scores": "Highest reaction scores", + "forum/most_posts": "Most posts" } diff --git a/modules/Members/language/en_US.json b/modules/Members/language/en_US.json index 0967ef424b..8567e72a39 100644 --- a/modules/Members/language/en_US.json +++ b/modules/Members/language/en_US.json @@ -1 +1,17 @@ -{} +{ + "members/members": "Menbers", + "members/new_members": "New members", + "members/no_members": "No members found.", + "members/member_lists": "Member Lists", + "members/member_list_hide_banned_users": "Hide banned users?", + "members/member_list_toggled_enabled": "Successfully enabled {{list}} list.", + "members/member_list_toggled_disabled": "Successfully disabled {{list}} list.", + "members/view_all": "View all", + "members/find_member": "Find member", + "members/name": "Name...", + "members/view_group": "View group", + "members/group": "Group...", + "members/no_results_header": "No results found", + "members/no_results_text": "Your search returned no results", + "members/viewable_groups": "Viewable groups" +} From d6814dcbe58240bc2c53ed73fdd382c6bf65cd0c Mon Sep 17 00:00:00 2001 From: untuned Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 069/193] Translated using translate.namelessmc.com Co-authored-by: untuned Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/en_US/ Translate-URL: https://translate.namelessmc.com/projects/namelessmc/website-members-module/en_US/ Translation: NamelessMC/Website - Core Translation: NamelessMC/Website - Members module --- custom/languages/en_US.json | 122 ++++++++++++++++++++++++++-- modules/Members/language/en_US.json | 4 +- 2 files changed, 116 insertions(+), 10 deletions(-) diff --git a/custom/languages/en_US.json b/custom/languages/en_US.json index 5efe17c84e..5df0d28751 100644 --- a/custom/languages/en_US.json +++ b/custom/languages/en_US.json @@ -403,7 +403,7 @@ "admin/placeholders": "Placeholders", "admin/placeholders_friendly_name": "Friendly Name", "admin/placeholders_friendly_name_info": "Use this to set a 'nickname' to this placeholder. The friendly name will be used instead of the raw name.", - "admin/placeholders_info": "Placeholders allow the NamelessMC Spigot plugin to send statistics about each player to your website so they can display them on their profile and forum posts.", + "admin/placeholders_info": "Placeholders allow the NamelessMC plugin to send statistics about each player to your website so they can display them on their profile and forum posts.", "admin/placeholders_last_updated": "Last Updated", "admin/placeholders_name": "Name", "admin/placeholders_none": "There are no placeholders.", @@ -761,7 +761,7 @@ "installer/finish": "Finish", "installer/finish_message": "Thanks for installing NamelessMC! You can now proceed to the StaffCP, where you can further configure your website.", "installer/friendly_urls": "Friendly URLs", - "installer/friendly_urls_info": "Friendly URLs will improve the readability of URLs in your browser.
For example:
example.com/index.php?route=/forum
would become:
example.com/forum
Important!
Your server must be configured correctly for this to work. You can see whether you can enable this option by clicking here.
", + "installer/friendly_urls_info": "Friendly URLs will improve the readability of URLs in your browser.
For example: example.com/index.php?route=/forum would become:
example.com/forum
Important!
Your server must be configured correctly for this to work. You can see whether you can enable this option by clicking here.
", "installer/general_configuration": "General Configuration", "installer/host": "Hostname", "installer/host_help": "The hostname is the base URL for your website. Do not include the subfolders from the Installation Path field, or http(s):// here!", @@ -770,7 +770,7 @@ "installer/install": "Install", "installer/installer_information": "The installer will guide you through the installation process.", "installer/installer_now_initialising_database": "The installer is now initializing the database. This may take a while...", - "installer/installer_welcome": "Welcome to NamelessMC version 2.0", + "installer/installer_welcome": "Welcome to NamelessMC version 2", "installer/language": "Language", "installer/no": "No", "installer/no_converters_available": "There are no converters available.", @@ -894,7 +894,7 @@ "time/less_than_a_minute": "less than a minute ago", "time/over_x_years": "over {{count}} years ago", "user/1_new_alert": "You have 1 new alert", - "user/1_new_message": "You have {{count}} new message", + "user/1_new_message": "You have 1 new message", "user/1_reaction": "1 reaction", "user/1_reply": "1 reply", "user/about": "About", @@ -906,10 +906,10 @@ "user/agree_t_and_c": "I have read and accept the {{linkStart}}Terms and Conditions{{linkEnd}}.", "user/alerts": "Alerts", "user/authme_account_linked": "Account linked successfully.", - "user/authme_email_help_1": "Finally, please enter your email address.", - "user/authme_email_help_2": "Finally, please enter your email address, and also choose a display name for your account.", + "user/authme_email_help_1": "Finally, please enter the following details.", + "user/authme_email_help_2": "Finally, please enter the following details, and also choose a display name for your account.", "user/authme_help": "Please enter your ingame AuthMe account details. If you don't already have an account ingame, join the server now and follow the instructions provided.", - "user/authme_username_exists": "Your Authme account has already been connected to the website!", + "user/authme_username_exists": "Your AuthMe account has already been connected to the website!", "user/avatar": "Avatar", "user/block_user": "Block User", "user/cant_send_to_self": "You can't send a message to yourself!", @@ -1066,7 +1066,7 @@ "user/users_to_required": "Please input some message recipients", "user/validate_account_command": "To complete registration, please execute the command {{command}} ingame.", "user/validation_complete": "Your account has been validated, you can now log in.", - "user/validation_error": "There was an unknown error validating your account, please contact a website administrator.", + "user/validation_error": "Invalid validation code, has the user already been validated?", "user/view_alerts": "View alerts", "user/view_messages": "View messages", "user/views": "Profile Views:", @@ -1216,5 +1216,109 @@ "admin/auto_language_help": "If enabled, guests & logged out users will be able to let the website automatically detect their preferred language.", "admin/authme_db_test_connection": "Test Connection", "admin/authme_db_connection_success": "Connection successful", - "admin/authme_db_connection_failed": "Connection failed" + "admin/authme_db_connection_failed": "Connection failed", + "installer/step_select_modules": "Select Modules", + "admin/og_image_updated_successfully": "OG image updated successfully.", + "admin/image": "Image", + "installer/timezone": "Timezone", + "admin/unable_to_load_outdated_module": "Unable to load outdated module {{module}}.", + "admin/unable_to_load_module": "Error {{message}} in module {{module}}.", + "admin/internal": "Internal", + "admin/external": "External", + "admin/query_type": "Query type", + "admin/emoji_native": "Native", + "admin/emoji_style": "Emoji Style", + "admin/emoji_style_help": "Change which emoji set is used:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", + "admin/emoji_joypixels": "JoyPixels", + "admin/event_supports_discord": "This event supports Discord webhooks and has a custom embed.", + "admin/query_type_help": "If the default internal server query does not work, try another option.", + "admin/mass_email_failed_check_logs": "One or more emails failed to send. Please check the email logs for more information.", + "admin/og_image_reset_successfully": "OG image reset successfully.", + "admin/fallback_og_image_x": "Fallback OG image: {{imageName}}", + "admin/panel_template_third_party": "Panel template {{name}} is a third party template. Please be aware that version compatibility is not guaranteed between minor NamelessMC updates, and issues should be redirected to the template author.", + "admin/queue_info": "The queue allows for tasks to be scheduled and performed in the background. To use the cron queue runner, create a cron job to access the below URL at the defined interval.", + "admin/queue_interval": "Queue Interval (minutes)", + "admin/queue_interval_at_least_x": "Please enter a queue interval of at least {{x}} minutes", + "admin/queue_task_action_invalid": "Invalid task action", + "admin/queue_task_fragment_next": "Task fragment next offset", + "admin/queue_task_invalid_status_to_requeue": "The task is not in a valid state for it to be requeued", + "admin/render_profile_post_hook_info": "Render profile post", + "general/joined": "Joined", + "general/oauth_email_verified_automatically": "Email will be verified automatically", + "general/unable_to_load_widget": "Unable to load widget", + "api/groups_updates_successfully": "Groups updated successfully", + "installer/select_modules_details": "Select the modules you would like to enable on your site. These can be toggled later on through the admin panel.", + "user/successful_login_synced_password": "You have successfully logged in, and your password has been synced with your AuthMe password.", + "general/registration_disabled_message_fallback": "Registration is currently disabled.", + "installer/username_min_max": "Please ensure your username is between {{minUsername}} and {{maxUsername}} characters long.", + "installer/username_required": "Please input a valid username.", + "installer/email_min_max": "Please ensure your email address is between {{minEmail}} and {{maxEmail}} characters long.", + "installer/email_required": "Please input a valid email.", + "installer/password_min_max": "Please ensure your password is between {{minPassword}} and {{maxPassword}} characters long.", + "installer/password_required": "Please input a valid password.", + "installer/module_core_description": "This module is required for NamelessMC to function correctly.", + "installer/module_cookie-consent_description": "Allows users to accept the use of cookies on your website.", + "installer/module_forum_description": "Adds a forum to your website.", + "installer/module_discord-integration_description": "Allows users to link their Discord account to their website account and perform various synchronization actions.", + "installer/module_members_description": "Adds a detailed members page and statistics to your website.", + "installer/select_modules": "Select Modules", + "user/authme_account_not_found": "That AuthMe account could not be found.", + "user/authme_sync_password": "Sync AuthMe Password", + "user/authme_sync_password_help": "You can sync your in-game password with your website password. This will allow you to log in to the forum using your in-game password.", + "user/authme_sync_password_setting": "Enable to sync your website password with your in-game password upon login. You will get a confirmation when the sync occurs.", + "user/authme_sync_password_setting_email": "Enable to sync your website password with your in-game password upon login. You will get a confirmation when the sync occurs. You may need to set your email in-game to use this feature.", + "user/continue_with": "Continue with {{provider}}", + "user/authme_not_setup": "AuthMe is not set up. Contact a site administrator.", + "user/authme_no_password": "An AuthMe account was found, but no password was stored. Please contact a site administrator.", + "general/problem_loading_widget": "There was a problem loading the widget {{widget}}", + "admin/queue": "Queue", + "admin/queue_cancel_task": "Cancel Task", + "admin/queue_cancel_task_confirm": "Are you sure you want to cancel this task?", + "admin/queue_runner_cron": "Cron", + "admin/queue_runner_one_of": "Please select a valid value for the queue runner", + "admin/queue_status": "Queue Status", + "admin/queue_status_cancelled": "Cancelled", + "admin/queue_status_completed": "Completed", + "admin/queue_status_error": "Error", + "admin/queue_status_failed": "Failed", + "admin/queue_task_attempts": "Attempts", + "admin/queue_task_fragment_total": "Task fragment total", + "admin/queue_task_invalid_status_to_cancel": "The task is not in a valid state for it to be cancelled", + "admin/sent_mass_message": "Successfully sent mass message.", + "user/username_already_exists": "Your chosen username already exists.", + "user/log_in_with": "Log In with {{provider}}", + "admin/confirm_delete_placeholder": "Are you sure you want to delete this placeholder?", + "admin/reset_og_image": "Reset OG image", + "admin/discord_hook": "Discord", + "admin/emoji_twemoji": "Twemoji", + "admin/enable_auto_language": "Enable automatic language detection?", + "admin/event_supports_normal": "This event supports normal webhooks.", + "admin/plugin": "Plugin", + "admin/player_list_limit": "Player list limit", + "admin/queue_interval_required": "Please enter a queue interval", + "admin/queue_requeue_task": "Requeue Task", + "admin/queue_requeue_task_confirm": "Are you sure you want to requeue this task?", + "admin/queue_retry_task": "Retry Task", + "admin/queue_runner": "Queue Runner", + "admin/queue_runner_ajax": "AJAX", + "admin/queue_status_in_progress": "In Progress", + "admin/queue_status_ready": "Ready", + "admin/queue_task": "Task", + "admin/queue_task_cancelled_successfully": "Task cancelled successfully.", + "admin/queue_task_data": "Task data", + "admin/queue_task_entity": "Task entity", + "admin/queue_task_entity_id": "Entity ID", + "admin/queue_task_executed_at": "Executed at", + "admin/queue_task_fragment": "Task fragmented?", + "admin/queue_task_requeued_successfully": "Task requeued successfully.", + "admin/queue_task_triggered_by": "Task triggered by", + "admin/queue_task_name": "Name", + "admin/queue_task_output": "Task output", + "admin/queue_task_scheduled_at": "Scheduled at", + "admin/queue_task_scheduled_for": "Scheduled for", + "admin/queue_task_status": "Status", + "general/oauth_email_not_verified_automatically": "Email will not be verified automatically", + "general/registered_members": "Registered members", + "general/staff_members": "Staff members", + "general/sql_query": "Query" } diff --git a/modules/Members/language/en_US.json b/modules/Members/language/en_US.json index 8567e72a39..056346e2da 100644 --- a/modules/Members/language/en_US.json +++ b/modules/Members/language/en_US.json @@ -13,5 +13,7 @@ "members/group": "Group...", "members/no_results_header": "No results found", "members/no_results_text": "Your search returned no results", - "members/viewable_groups": "Viewable groups" + "members/viewable_groups": "Viewable groups", + "members/no_overview_lists_enabled": "No overview lists are enabled.", + "members/settings_updated_successfully": "Settings updated successfully." } From 0f97a92856bbfe2ff64babe51e0fde9e8b325214 Mon Sep 17 00:00:00 2001 From: Mert Date: Tue, 6 Jun 2023 15:13:23 +0000 Subject: [PATCH 070/193] Translated using translate.namelessmc.com Co-authored-by: Mert Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/tr/ Translation: NamelessMC/Website - Core --- custom/languages/tr_TR.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/custom/languages/tr_TR.json b/custom/languages/tr_TR.json index 40c4577881..fc0bcdc256 100644 --- a/custom/languages/tr_TR.json +++ b/custom/languages/tr_TR.json @@ -1200,5 +1200,29 @@ "user/remove_avatar": "Avatarı kaldır", "user/username_already_exists": "Seçtiğiniz kullanıcı adı zaten var.", "user/continue_with": "{{provider}} ile devam et", - "admin/clone_group": "Grubu klonla" + "admin/clone_group": "Grubu klonla", + "admin/queue_retry_task": "Görevi tekrar deneyin", + "admin/queue_task_status": "Durum", + "admin/user_password_changed_successfully": "Kullanıcı şifresi başarıyla değiştirildi", + "admin/player_list_limit": "Oyuncu listesi limiti", + "admin/plugin": "Eklenti", + "admin/queue_cancel_task": "Görevi iptal edin", + "admin/queue_cancel_task_confirm": "Bu görevi iptal etmek istediğinizden emin misiniz?", + "admin/queue_status_cancelled": "İptal edildi", + "admin/queue_status_completed": "Tamamlandı", + "admin/queue_status_error": "Hata", + "admin/queue_status_failed": "Başarısız oldu", + "admin/queue_status_in_progress": "İşlemde", + "admin/queue_task_cancelled_successfully": "Görev başarıyla iptal edildi.", + "admin/queue_task_executed_at": "Şurada çalıştırıldı", + "admin/emoji_style": "Emoji Türü", + "admin/discord_hook": "Discord", + "admin/enable_auto_language": "Otomatik dil tetikleyicisini aç", + "admin/event_supports_discord": "Bu etkinlik discord web kancalarını ve özel gömülü mesajlarını destekliyor.", + "admin/event_supports_normal": "Bu etkinlik normal web kancalarını destekliyor.", + "admin/queue_status_ready": "Hazır", + "admin/queue_task": "Görev", + "admin/queue_task_data": "Görev bilgileri", + "admin/queue_task_name": "İsim", + "admin/queue_task_output": "Görevi çıkışı" } From c6da0a2d681a09948a1c7ed7bce7fd12b5b6db9f Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Sat, 10 Jun 2023 00:57:29 +0000 Subject: [PATCH 071/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index 4e55ce601d..ca7bfeddc7 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -12,7 +12,7 @@ "admin/allow_custom_avatars": "Eigene Avatare erlauben?", "admin/announcement_hook_info": "Ankündigungs erstellung", "admin/announcement_icon_instructions": "Du kannst hier auch jeder Ankündigung ein Symbol hinzufügen, z. B. {{faLink}}, {{semLink}}.", - "admin/announcement_info": "Erstelle Ankündigungen, um eine Nachricht für bestimmte Gruppen auf bestimmten Seiten Deiner Website anzuzeigen.", + "admin/announcement_info": "Erstelle Ankündigungen, um eine Nachricht für bestimmte Gruppen auf bestimmten Seiten deiner Website anzuzeigen.", "admin/announcement_order": "Anordnung", "admin/announcements": "Ankündigungen", "admin/api": "API", @@ -29,7 +29,7 @@ "admin/authme_db_name": "AuthMe Datenbank Name", "admin/authme_db_password": "AuthMe Datenbank Passwort", "admin/authme_db_port": "AuthMe Datenbank Port", - "admin/authme_db_table": "AuthMe User Tabelle", + "admin/authme_db_table": "AuthMe Benutzer Tabelle", "admin/authme_db_user": "AuthMe Datenbank Username", "admin/authme_hash_algorithm": "AuthMe Hash Algorithmus", "admin/authme_integration": "AuthMe Integration", @@ -85,7 +85,7 @@ "admin/creating_announcement_success": "Ankündigung erfolgreich erstellt.", "admin/creating_group": "Neue Gruppe erstellen", "admin/creating_new_hook": "Neuen Webhook erstellen", - "admin/creating_new_page": "Erstelle Seite", + "admin/creating_new_page": "Seite erstellen", "admin/creating_profile_field": "Erstelle Profilfeld", "admin/creating_reaction": "Erstelle Reaktion", "admin/current_version_x": "Aktuelle Version: {{version}}", @@ -99,7 +99,7 @@ "admin/debugging_settings_updated_successfully": "Debugging Einstellungen wurden gespeichert.", "admin/default": "Standard", "admin/default_avatar": "Standard Avatar", - "admin/default_group": "Ist diese Gruppe die Standard Gruppe (Für neue User)??", + "admin/default_group": "Ist diese Gruppe die Standard Gruppe (Für neue Benutzer)??", "admin/default_language": "Standardsprache", "admin/default_language_help": "Die Benutzer können aus allen installierten Sprachen wählen. {{docLinkStart}}Weiterlesen \"{{docLinkEnd}}", "admin/default_server": "Standardserver", @@ -110,7 +110,7 @@ "admin/delete_group": "Gruppe löschen", "admin/delete_hook": "Bist du sicher, dass du diesen Haken löschen willst?", "admin/delete_hook_info": "Benutzer Löschung", - "admin/delete_user": "User Löschen", + "admin/delete_user": "Benutzer löschen", "admin/deleted_announcement_success": "Ankündigung erfolgreich gelöscht.", "admin/description": "Beschreibung", "admin/description_max_500": "Die Beschreibung darf höchstens 500 Zeichen lang sein.", @@ -250,8 +250,8 @@ "admin/icon": "Icon", "admin/identifier": "Kennung", "admin/images": "Bilder", - "admin/include_in_sitemap": "In Sitemap aufnehmen?", - "admin/include_staff_in_user_widget": "Teammitglieder in User-Widget aufnehmen?", + "admin/include_in_sitemap": "In die Sitemap aufnehmen?", + "admin/include_staff_in_user_widget": "Teammitglieder in Benutzer-Widget aufnehmen?", "admin/ingame_group_maximum": "Bitte stelle sicher, dass Dein Gruppenname maximal 64 Zeichen lang ist.", "admin/install": "Installieren", "admin/install_confirm": "Stelle sicher, dass du die Dateien zuerst hochgeladen hast!", @@ -300,7 +300,7 @@ "admin/module_enabled": "Modul aktiviert.", "admin/module_outdated": "Wir haben festgestellt, dass dieses Modul für die Nameless-Version {{intendedVersion}} gedacht ist, du jedoch die Nameless-Version {{actualVersion}} ausführst", "admin/module_x": "Modul: {{module}}", - "admin/modules": "Modul", + "admin/modules": "Module", "admin/modules_installed_successfully": "Alle neuen Module wurden erfolgreich installiert.", "admin/name": "Name", "admin/name_maximum_16": "Der Name darf nicht länger als 16 Zeichen sein", @@ -309,7 +309,7 @@ "admin/navbar_colour": "Navbar Farbe", "admin/navbar_icon": "Symbol für die Navigationsleiste", "admin/navbar_icon_instructions": "Du kannst hier auch jedem Navigationsleistenelement ein Symbol hinzufügen, z. B. mithilfe von {{faLink}}, {{semLink}}.", - "admin/navbar_order": "Navbar Ordnen", + "admin/navbar_order": "Navigationsleistenposition", "admin/navbar_order_instructions": "Jedem Element kann eine positive Nummer zugewiesen werden, wobei die niedrigste Nummer zuerst in der Navigationsleiste erscheint und höhere Nummern danach folgen.", "admin/navigation": "Navigation", "admin/navigation_settings_updated_successfully": "Navigations Einstellungen wurden gespeichert.", @@ -483,7 +483,7 @@ "admin/stats": "Stats", "admin/status_page": "Status Seite aktivieren?", "admin/status_query_help": "Wenn dies aktiviert ist, zeigt die Statusseite diesen Server als online oder offline an.", - "admin/styles": "Styles", + "admin/styles": "Stile", "admin/successfully_updated": "Erfolgreich geupdatet", "admin/support": "Support", "admin/template": "Template", @@ -523,10 +523,10 @@ "admin/unable_to_retrieve_nameless_news": "Die neuesten Nachrichten konnten nicht abgerufen werden", "admin/unable_to_retrieve_templates": "Templates können nicht abgerufen werden", "admin/unknown": "Unbekannt", - "admin/unlink": "Unlink", + "admin/unlink": "Entlinken", "admin/unlink_account_confirm": "Bist du sicher, dass du diesen Anbieter zwangsweise von diesem Benutzer trennen willst?", "admin/unlink_account_success": "Erfolgreich ihr Konto von {{provider}} entkoppelt.", - "admin/unsafe_html": "Erlaube unsicheres HTML?", + "admin/unsafe_html": "Unsicheres HTML zulassen?", "admin/unsafe_html_warning": "Wenn du diese Option aktivierst, kann jeder HTML-Code auf der Seite verwendet werden, auch potenziell gefährliches JavaScript. Aktiviere diese Option nur, wenn du sicher bist, dass dein HTML sicher ist.", "admin/up_to_date": "Deine NamelessMC Version ist aktuell!", "admin/update": "Update", @@ -537,7 +537,7 @@ "admin/upload_new_image": "Neues Bild hochladen", "admin/use_friendly_urls": "Benutzerfreundliche URLs", "admin/use_friendly_urls_help": "Wenn diese Funktion aktiviert ist, werden sauberer aussehende Webadressen verwendet. Du musst die Verwendung von mod_rewrite und .htaccess-Dateien erlauben, damit dies funktioniert. {{docLinkStart}}Weiterlesen \"{{docLinkEnd}}", - "admin/user": "Nutzer", + "admin/user": "Benutzer", "admin/user_deleted": "Benutzer wurde erfolgreich gelöscht.", "admin/user_management": "Benutzerverwaltung", "admin/user_updated_successfully": "Benutzer erfolgreich aktualisiert.", @@ -641,7 +641,7 @@ "general/no": "Nein", "general/no_default_server": "Es existiert kein Standardserver. Bitte wähle einen in der Registerkarte StaffCP -> Integrationen -> Minecraft aus.", "general/no_online_staff": "Derzeit sind keine Teammitglieder online.", - "general/no_online_users": "Es sind keine User online.", + "general/no_online_users": "Es sind keine Benutzer online.", "general/no_players_online": "Es sind keine Spieler Online.", "general/no_servers": "Es existieren keine Server, die angezeigt werden können. Der Website-Administrator kann einen Minecraft-Server unter StaffCP > Integrationen > Minecraft > Minecraft-Server hinzufügen.", "general/none": "Nichts", @@ -650,7 +650,7 @@ "general/online": "Online", "general/online_guests": "Gäste online", "general/online_staff": "Aktive Teammitglieder", - "general/online_users": "Aktive User", + "general/online_users": "Aktive Benutzer", "general/origin_api": "API", "general/origin_website": "Website", "general/page_loaded_in": "Seite wurde in {{time}} Sekunden geladen", @@ -676,7 +676,7 @@ "general/success": "Erfolgreich", "general/total_online": "Insgesamt online", "general/total_online_staff": "Teammitglieder online: {{count}}", - "general/total_online_users": "Total User online: {{count}}", + "general/total_online_users": "Online-Benutzer insgesamt: {{count}}", "general/total_posts": "Beiträge insgesamt", "general/total_threads": "Gesamtanzahl der Threads", "general/unlink": "Verknüpfung aufheben", @@ -712,7 +712,7 @@ "installer/email_invalid": "Deine E-Mail-Adresse ist ungültig.", "installer/enabled": "Aktiviert", "installer/enter_admin_details": "Bitte gib die Details für das Admin-Konto ein.", - "installer/finish": "Abschliessen", + "installer/finish": "Abschließen", "installer/finish_message": "Danke für die Installation von NamelessMC! Du kannst jetzt zum StaffCP gehen, wo du deine Website weiter konfigurieren kannst.", "installer/friendly_urls": "Freundliche URLs", "installer/friendly_urls_info": "Freundliche URLs verbessern die Lesbarkeit von URLs in deinem Browser.
Ein Beispiel: beispiel.com/index.php?route=/forumwäre dann:
beispiel.com/forum
Wichtig!
Dein Server muss richtig konfiguriert sein, damit dies funktioniert. Du kannst sehen, ob du diese Option aktivieren kannst, indem du hier klickst.
", @@ -882,7 +882,7 @@ "user/couldnt_find_that_user": "Konnte den Benutzer nicht finden.", "user/create_an_account": "Erstelle einen Account", "user/current_password": "Aktuelles Passwort", - "user/delete_all": "Alle Löschen", + "user/delete_all": "Alle löschen", "user/disable": "Deaktivieren", "user/disabled": "Deaktiviert", "user/email": "Email", @@ -1072,7 +1072,7 @@ "admin/acp_logins": "StaffCP-Anmeldungen", "admin/authme_db_password_hidden": "Das Passwort der AuthMe-Datenbank ist aus Sicherheitsgründen verborgen.", "admin/bedrock_help": "Wähle diese Option, wenn der Server ein Bedrock-Server ist.", - "admin/can_unlink_integration": "Können Nutzer die Integration aufheben?", + "admin/can_unlink_integration": "Können Benutzer die Integration aufheben?", "admin/email_language_info": "Du siehst deine Sprache nicht? Vergewisser dich, dass die Sprachdatei in /custom/languages/ für deinen Webserver schreibbar ist.", "admin/enable_placeholders": "Platzhalter aktivieren?", "admin/group_order": "Gruppen Sortiertung", @@ -1245,13 +1245,13 @@ "admin/emoji_joypixels": "JoyPixels", "admin/emoji_style": "Emoji Style", "admin/emoji_style_help": "Ändere dein Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", - "admin/emoji_native": "Native", + "admin/emoji_native": "Nativ", "admin/emoji_twemoji": "Twemoji", "general/joined": "Beigetreten", - "general/registered_members": "Registrierte Mitgliedern", + "general/registered_members": "Registrierte Mitglieder", "general/staff_members": "Teammitglied", "installer/module_forum_description": "Füge ein Forum zu deiner Webseite hinzu.", - "installer/module_core_description": "Dieser Modul ist erforderlich für NamelessMC damit es korrekt funktioniert.", + "installer/module_core_description": "Dieses Modul ist erforderlich, damit NamelessMC korrekt funktioniert.", "installer/module_cookie-consent_description": "Erlaube den Nutzern die Akzeptierung von Cookies auf deiner Webseite.", "installer/module_discord-integration_description": "Ermöglicht es Nutzern, ihr Discord-Konto mit ihrem Website-Konto zu verknüpfen und verschiedene Synchronisierungsaktionen durchzuführen.", "installer/module_members_description": "Fügt eine detaillierte Mitgliederseite und Statistiken zu deiner Website hinzu.", @@ -1300,7 +1300,7 @@ "admin/queue_task_cancelled_successfully": "Aufgabe erfolgreich abgebrochen.", "admin/queue_task_data": "Daten der Aufgabe", "admin/queue_task_entity": "Aufgabensteller", - "admin/queue_task_entity_id": "Entity ID", + "admin/queue_task_entity_id": "Entitäts-ID", "admin/queue_task_executed_at": "Ausgeführt am", "admin/queue_task_fragment": "Aufgabe fragmentiert?", "admin/queue_task_fragment_next": "Nächster Offset des Aufgabenfragments", From 6f80651c563096be13cec8416b28b0656f2b5810 Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Sat, 10 Jun 2023 00:57:29 +0000 Subject: [PATCH 072/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index 4e55ce601d..ca7bfeddc7 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -12,7 +12,7 @@ "admin/allow_custom_avatars": "Eigene Avatare erlauben?", "admin/announcement_hook_info": "Ankündigungs erstellung", "admin/announcement_icon_instructions": "Du kannst hier auch jeder Ankündigung ein Symbol hinzufügen, z. B. {{faLink}}, {{semLink}}.", - "admin/announcement_info": "Erstelle Ankündigungen, um eine Nachricht für bestimmte Gruppen auf bestimmten Seiten Deiner Website anzuzeigen.", + "admin/announcement_info": "Erstelle Ankündigungen, um eine Nachricht für bestimmte Gruppen auf bestimmten Seiten deiner Website anzuzeigen.", "admin/announcement_order": "Anordnung", "admin/announcements": "Ankündigungen", "admin/api": "API", @@ -29,7 +29,7 @@ "admin/authme_db_name": "AuthMe Datenbank Name", "admin/authme_db_password": "AuthMe Datenbank Passwort", "admin/authme_db_port": "AuthMe Datenbank Port", - "admin/authme_db_table": "AuthMe User Tabelle", + "admin/authme_db_table": "AuthMe Benutzer Tabelle", "admin/authme_db_user": "AuthMe Datenbank Username", "admin/authme_hash_algorithm": "AuthMe Hash Algorithmus", "admin/authme_integration": "AuthMe Integration", @@ -85,7 +85,7 @@ "admin/creating_announcement_success": "Ankündigung erfolgreich erstellt.", "admin/creating_group": "Neue Gruppe erstellen", "admin/creating_new_hook": "Neuen Webhook erstellen", - "admin/creating_new_page": "Erstelle Seite", + "admin/creating_new_page": "Seite erstellen", "admin/creating_profile_field": "Erstelle Profilfeld", "admin/creating_reaction": "Erstelle Reaktion", "admin/current_version_x": "Aktuelle Version: {{version}}", @@ -99,7 +99,7 @@ "admin/debugging_settings_updated_successfully": "Debugging Einstellungen wurden gespeichert.", "admin/default": "Standard", "admin/default_avatar": "Standard Avatar", - "admin/default_group": "Ist diese Gruppe die Standard Gruppe (Für neue User)??", + "admin/default_group": "Ist diese Gruppe die Standard Gruppe (Für neue Benutzer)??", "admin/default_language": "Standardsprache", "admin/default_language_help": "Die Benutzer können aus allen installierten Sprachen wählen. {{docLinkStart}}Weiterlesen \"{{docLinkEnd}}", "admin/default_server": "Standardserver", @@ -110,7 +110,7 @@ "admin/delete_group": "Gruppe löschen", "admin/delete_hook": "Bist du sicher, dass du diesen Haken löschen willst?", "admin/delete_hook_info": "Benutzer Löschung", - "admin/delete_user": "User Löschen", + "admin/delete_user": "Benutzer löschen", "admin/deleted_announcement_success": "Ankündigung erfolgreich gelöscht.", "admin/description": "Beschreibung", "admin/description_max_500": "Die Beschreibung darf höchstens 500 Zeichen lang sein.", @@ -250,8 +250,8 @@ "admin/icon": "Icon", "admin/identifier": "Kennung", "admin/images": "Bilder", - "admin/include_in_sitemap": "In Sitemap aufnehmen?", - "admin/include_staff_in_user_widget": "Teammitglieder in User-Widget aufnehmen?", + "admin/include_in_sitemap": "In die Sitemap aufnehmen?", + "admin/include_staff_in_user_widget": "Teammitglieder in Benutzer-Widget aufnehmen?", "admin/ingame_group_maximum": "Bitte stelle sicher, dass Dein Gruppenname maximal 64 Zeichen lang ist.", "admin/install": "Installieren", "admin/install_confirm": "Stelle sicher, dass du die Dateien zuerst hochgeladen hast!", @@ -300,7 +300,7 @@ "admin/module_enabled": "Modul aktiviert.", "admin/module_outdated": "Wir haben festgestellt, dass dieses Modul für die Nameless-Version {{intendedVersion}} gedacht ist, du jedoch die Nameless-Version {{actualVersion}} ausführst", "admin/module_x": "Modul: {{module}}", - "admin/modules": "Modul", + "admin/modules": "Module", "admin/modules_installed_successfully": "Alle neuen Module wurden erfolgreich installiert.", "admin/name": "Name", "admin/name_maximum_16": "Der Name darf nicht länger als 16 Zeichen sein", @@ -309,7 +309,7 @@ "admin/navbar_colour": "Navbar Farbe", "admin/navbar_icon": "Symbol für die Navigationsleiste", "admin/navbar_icon_instructions": "Du kannst hier auch jedem Navigationsleistenelement ein Symbol hinzufügen, z. B. mithilfe von {{faLink}}, {{semLink}}.", - "admin/navbar_order": "Navbar Ordnen", + "admin/navbar_order": "Navigationsleistenposition", "admin/navbar_order_instructions": "Jedem Element kann eine positive Nummer zugewiesen werden, wobei die niedrigste Nummer zuerst in der Navigationsleiste erscheint und höhere Nummern danach folgen.", "admin/navigation": "Navigation", "admin/navigation_settings_updated_successfully": "Navigations Einstellungen wurden gespeichert.", @@ -483,7 +483,7 @@ "admin/stats": "Stats", "admin/status_page": "Status Seite aktivieren?", "admin/status_query_help": "Wenn dies aktiviert ist, zeigt die Statusseite diesen Server als online oder offline an.", - "admin/styles": "Styles", + "admin/styles": "Stile", "admin/successfully_updated": "Erfolgreich geupdatet", "admin/support": "Support", "admin/template": "Template", @@ -523,10 +523,10 @@ "admin/unable_to_retrieve_nameless_news": "Die neuesten Nachrichten konnten nicht abgerufen werden", "admin/unable_to_retrieve_templates": "Templates können nicht abgerufen werden", "admin/unknown": "Unbekannt", - "admin/unlink": "Unlink", + "admin/unlink": "Entlinken", "admin/unlink_account_confirm": "Bist du sicher, dass du diesen Anbieter zwangsweise von diesem Benutzer trennen willst?", "admin/unlink_account_success": "Erfolgreich ihr Konto von {{provider}} entkoppelt.", - "admin/unsafe_html": "Erlaube unsicheres HTML?", + "admin/unsafe_html": "Unsicheres HTML zulassen?", "admin/unsafe_html_warning": "Wenn du diese Option aktivierst, kann jeder HTML-Code auf der Seite verwendet werden, auch potenziell gefährliches JavaScript. Aktiviere diese Option nur, wenn du sicher bist, dass dein HTML sicher ist.", "admin/up_to_date": "Deine NamelessMC Version ist aktuell!", "admin/update": "Update", @@ -537,7 +537,7 @@ "admin/upload_new_image": "Neues Bild hochladen", "admin/use_friendly_urls": "Benutzerfreundliche URLs", "admin/use_friendly_urls_help": "Wenn diese Funktion aktiviert ist, werden sauberer aussehende Webadressen verwendet. Du musst die Verwendung von mod_rewrite und .htaccess-Dateien erlauben, damit dies funktioniert. {{docLinkStart}}Weiterlesen \"{{docLinkEnd}}", - "admin/user": "Nutzer", + "admin/user": "Benutzer", "admin/user_deleted": "Benutzer wurde erfolgreich gelöscht.", "admin/user_management": "Benutzerverwaltung", "admin/user_updated_successfully": "Benutzer erfolgreich aktualisiert.", @@ -641,7 +641,7 @@ "general/no": "Nein", "general/no_default_server": "Es existiert kein Standardserver. Bitte wähle einen in der Registerkarte StaffCP -> Integrationen -> Minecraft aus.", "general/no_online_staff": "Derzeit sind keine Teammitglieder online.", - "general/no_online_users": "Es sind keine User online.", + "general/no_online_users": "Es sind keine Benutzer online.", "general/no_players_online": "Es sind keine Spieler Online.", "general/no_servers": "Es existieren keine Server, die angezeigt werden können. Der Website-Administrator kann einen Minecraft-Server unter StaffCP > Integrationen > Minecraft > Minecraft-Server hinzufügen.", "general/none": "Nichts", @@ -650,7 +650,7 @@ "general/online": "Online", "general/online_guests": "Gäste online", "general/online_staff": "Aktive Teammitglieder", - "general/online_users": "Aktive User", + "general/online_users": "Aktive Benutzer", "general/origin_api": "API", "general/origin_website": "Website", "general/page_loaded_in": "Seite wurde in {{time}} Sekunden geladen", @@ -676,7 +676,7 @@ "general/success": "Erfolgreich", "general/total_online": "Insgesamt online", "general/total_online_staff": "Teammitglieder online: {{count}}", - "general/total_online_users": "Total User online: {{count}}", + "general/total_online_users": "Online-Benutzer insgesamt: {{count}}", "general/total_posts": "Beiträge insgesamt", "general/total_threads": "Gesamtanzahl der Threads", "general/unlink": "Verknüpfung aufheben", @@ -712,7 +712,7 @@ "installer/email_invalid": "Deine E-Mail-Adresse ist ungültig.", "installer/enabled": "Aktiviert", "installer/enter_admin_details": "Bitte gib die Details für das Admin-Konto ein.", - "installer/finish": "Abschliessen", + "installer/finish": "Abschließen", "installer/finish_message": "Danke für die Installation von NamelessMC! Du kannst jetzt zum StaffCP gehen, wo du deine Website weiter konfigurieren kannst.", "installer/friendly_urls": "Freundliche URLs", "installer/friendly_urls_info": "Freundliche URLs verbessern die Lesbarkeit von URLs in deinem Browser.
Ein Beispiel: beispiel.com/index.php?route=/forumwäre dann:
beispiel.com/forum
Wichtig!
Dein Server muss richtig konfiguriert sein, damit dies funktioniert. Du kannst sehen, ob du diese Option aktivieren kannst, indem du hier klickst.
", @@ -882,7 +882,7 @@ "user/couldnt_find_that_user": "Konnte den Benutzer nicht finden.", "user/create_an_account": "Erstelle einen Account", "user/current_password": "Aktuelles Passwort", - "user/delete_all": "Alle Löschen", + "user/delete_all": "Alle löschen", "user/disable": "Deaktivieren", "user/disabled": "Deaktiviert", "user/email": "Email", @@ -1072,7 +1072,7 @@ "admin/acp_logins": "StaffCP-Anmeldungen", "admin/authme_db_password_hidden": "Das Passwort der AuthMe-Datenbank ist aus Sicherheitsgründen verborgen.", "admin/bedrock_help": "Wähle diese Option, wenn der Server ein Bedrock-Server ist.", - "admin/can_unlink_integration": "Können Nutzer die Integration aufheben?", + "admin/can_unlink_integration": "Können Benutzer die Integration aufheben?", "admin/email_language_info": "Du siehst deine Sprache nicht? Vergewisser dich, dass die Sprachdatei in /custom/languages/ für deinen Webserver schreibbar ist.", "admin/enable_placeholders": "Platzhalter aktivieren?", "admin/group_order": "Gruppen Sortiertung", @@ -1245,13 +1245,13 @@ "admin/emoji_joypixels": "JoyPixels", "admin/emoji_style": "Emoji Style", "admin/emoji_style_help": "Ändere dein Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", - "admin/emoji_native": "Native", + "admin/emoji_native": "Nativ", "admin/emoji_twemoji": "Twemoji", "general/joined": "Beigetreten", - "general/registered_members": "Registrierte Mitgliedern", + "general/registered_members": "Registrierte Mitglieder", "general/staff_members": "Teammitglied", "installer/module_forum_description": "Füge ein Forum zu deiner Webseite hinzu.", - "installer/module_core_description": "Dieser Modul ist erforderlich für NamelessMC damit es korrekt funktioniert.", + "installer/module_core_description": "Dieses Modul ist erforderlich, damit NamelessMC korrekt funktioniert.", "installer/module_cookie-consent_description": "Erlaube den Nutzern die Akzeptierung von Cookies auf deiner Webseite.", "installer/module_discord-integration_description": "Ermöglicht es Nutzern, ihr Discord-Konto mit ihrem Website-Konto zu verknüpfen und verschiedene Synchronisierungsaktionen durchzuführen.", "installer/module_members_description": "Fügt eine detaillierte Mitgliederseite und Statistiken zu deiner Website hinzu.", @@ -1300,7 +1300,7 @@ "admin/queue_task_cancelled_successfully": "Aufgabe erfolgreich abgebrochen.", "admin/queue_task_data": "Daten der Aufgabe", "admin/queue_task_entity": "Aufgabensteller", - "admin/queue_task_entity_id": "Entity ID", + "admin/queue_task_entity_id": "Entitäts-ID", "admin/queue_task_executed_at": "Ausgeführt am", "admin/queue_task_fragment": "Aufgabe fragmentiert?", "admin/queue_task_fragment_next": "Nächster Offset des Aufgabenfragments", From 20396e19adc5e455e0fe9644a704c556ef2343df Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 10 Jun 2023 17:38:20 +0100 Subject: [PATCH 073/193] Support custom migration tables (#3380) * Support custom migration tables * Allow specifying custom migrations directory * PHP 7.4 fix * Consistent parameters and add rollback function * Update Phinx and fix migrations * Tidy strtolower * Phinx feature flags --- composer.json | 2 +- core/classes/Database/PhinxAdapter.php | 106 +++++++++++++++++++- core/classes/Misc/UpgradeScript.php | 2 +- core/init.php | 2 +- core/installation/steps/ajax_initialise.php | 2 +- core/migrations/phinx.php | 11 +- dev/scripts/cli_install.php | 2 +- 7 files changed, 115 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index c8f4b7727b..3318a8e695 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "ircmaxell/password-compat": "^1.0.4", "astrotomic/php-twemoji": "^0.2.2", "samerton/i18next": "^1.0.1", - "robmorgan/phinx": "^0.12.13", + "robmorgan/phinx": "^0.13.4", "symfony/http-foundation": "^5.4.17", "joypixels/emoji-toolkit": "^7.0", "php-di/php-di": "^6.4" diff --git a/core/classes/Database/PhinxAdapter.php b/core/classes/Database/PhinxAdapter.php index 49c117a48a..e421ccc99b 100644 --- a/core/classes/Database/PhinxAdapter.php +++ b/core/classes/Database/PhinxAdapter.php @@ -6,16 +6,39 @@ class PhinxAdapter { * Checks the number of existing migration files compared to executed migrations in the database. * Alternatively we could check the output of a Phinx command, but that takes ~8x as long to execute. * - * @throws RuntimeException If these numbers don't match. + * TODO: return type as array|never (8.1) + * + * @param string $module Module name + * @param ?string $migrationDir Migration directory + * @param bool $returnResults If true the results will be returned - otherwise script execution is ended + * + * @return array|void */ - public static function ensureUpToDate(): void { + public static function ensureUpToDate( + string $module, + ?string $migrationDir = null, + bool $returnResults = false + ) { + $module = strtolower($module); + + if ($module === 'core') { + $table = 'nl2_phinxlog'; + } else { + $module = preg_replace('/[^a-zA-Z]+$/', '', $module); + $table = "nl2_phinxlog_$module"; + } + + if (!$migrationDir) { + $migrationDir = __DIR__ . '/../../migrations'; + } + $migration_files = array_map( static function ($file_name) { [$version, $migration_name] = explode('_', $file_name, 2); $migration_name = str_replace(['.php', '_'], '', ucwords($migration_name, '_')); return $version . '_' . $migration_name; }, - array_filter(scandir(__DIR__ . '/../../migrations'), static function ($file_name) { + array_filter(scandir($migrationDir), static function ($file_name) { // Pattern that matches Phinx migration file names (eg: 20230403000000_create_stroopwafel_table.php) return preg_match('/^\d{14}_\w+\.php$/', $file_name); }), @@ -23,11 +46,18 @@ static function ($file_name) { $migration_database_entries = array_map(static function ($row) { return $row->version . '_' . $row->migration_name; - }, DB::getInstance()->query('SELECT version, migration_name FROM nl2_phinxlog')->results()); + }, DB::getInstance()->query("SELECT version, migration_name FROM $table")->results()); $missing = array_diff($migration_files, $migration_database_entries); $extra = array_diff($migration_database_entries, $migration_files); + if ($returnResults) { + return [ + 'missing' => count($missing), + 'extra' => count($extra) + ]; + } + // Likely a pull from the repo dev branch or migrations // weren't run during an upgrade script. if (($missing_count = count($missing)) > 0) { @@ -58,9 +88,27 @@ static function ($file_name) { * Runs any pending migrations. Used for installation and upgrades. Resource heavy, only call when needed. * Logs output of Phinx to other-log.log file * + * @param string $module Module name + * @param ?string $migrationDir Migration directory to use + * * @return string Output of the migration command from Phinx as if it was executed in the console. */ - public static function migrate(): string { + public static function migrate( + string $module, + ?string $migrationDir = null + ): string { + $module = strtolower($module); + + if ($module === 'core') { + $table = 'nl2_phinxlog'; + } else { + $module = preg_replace('/[^a-zA-Z]+$/', '', $module); + $table = "nl2_phinxlog_$module"; + } + + define('PHINX_DB_TABLE', $table); + define('PHINX_MIGRATIONS_DIR', $migrationDir ?? (__DIR__ . '/../../migrations')); + $output = (new Phinx\Wrapper\TextWrapper( new Phinx\Console\PhinxApplication(), [ @@ -73,4 +121,52 @@ public static function migrate(): string { return $output; } + /** + * Rolls back migrations + * Logs output of Phinx to other-log.log file + * + * @param string $module Module name + * @param string $migrationDir Migration directory to use + * @param int $since Version of earliest migration to rollback, default 0 for all + * + * @return string Output of the migration command from Phinx as if it was executed in the console. + * + * @throws Exception If unable to rollback + */ + public static function rollback( + string $module, + string $migrationDir, + int $since = 0 + ): string { + $module = strtolower($module); + + if ($module === 'core') { + $table = 'nl2_phinxlog'; + } else { + $module = preg_replace('/[^a-zA-Z]+$/', '', $module); + $table = "nl2_phinxlog_$module"; + } + + if ( + $table === 'nl2_phinxlog' || + strtolower($migrationDir) === (__DIR__ . '/../../migrations') + ) { + throw new Exception('Cannot rollback core migrations'); + } + + define('PHINX_DB_TABLE', $table); + define('PHINX_MIGRATIONS_DIR', $migrationDir); + + $output = (new Phinx\Wrapper\TextWrapper( + new Phinx\Console\PhinxApplication(), + [ + 'configuration' => __DIR__ . '/../../migrations/phinx.php', + ] + ))->getRollback(null, $since); + + ErrorHandler::logCustomError($output); + + return $output; + } + } diff --git a/core/classes/Misc/UpgradeScript.php b/core/classes/Misc/UpgradeScript.php index 5253c23c6e..a593f5f2eb 100644 --- a/core/classes/Misc/UpgradeScript.php +++ b/core/classes/Misc/UpgradeScript.php @@ -145,7 +145,7 @@ protected function deleteFiles($paths): void { * Execute any pending database migrations. */ protected function runMigrations(): void { - PhinxAdapter::migrate(); + PhinxAdapter::migrate('Core'); } /** diff --git a/core/init.php b/core/init.php index 686350d8fa..ad6d288d93 100644 --- a/core/init.php +++ b/core/init.php @@ -107,7 +107,7 @@ } // Ensure database is up-to-date - PhinxAdapter::ensureUpToDate(); + PhinxAdapter::ensureUpToDate('Core'); // Error reporting if (!defined('DEBUGGING')) { diff --git a/core/installation/steps/ajax_initialise.php b/core/installation/steps/ajax_initialise.php index 3b42aeb996..ef3a637e77 100644 --- a/core/installation/steps/ajax_initialise.php +++ b/core/installation/steps/ajax_initialise.php @@ -2,7 +2,7 @@ if (isset($_POST['perform']) && $_POST['perform'] == 'true') { try { if ($_GET['initialise'] === 'db') { - $message = PhinxAdapter::migrate(); + $message = PhinxAdapter::migrate('Core'); $json = [ 'message' => $language->get('installer', 'database_configured'), 'redirect_url' => '?step=site_configuration', diff --git a/core/migrations/phinx.php b/core/migrations/phinx.php index 88a22bce5b..c5f47cc8bf 100644 --- a/core/migrations/phinx.php +++ b/core/migrations/phinx.php @@ -6,9 +6,12 @@ $config = Config::get('mysql'); +$dir = defined('PHINX_MIGRATIONS_DIR') ? PHINX_MIGRATIONS_DIR : __DIR__ ; +$table = defined('PHINX_DB_TABLE') ? PHINX_DB_TABLE : 'nl2_phinxlog'; + return [ 'paths' => [ - 'migrations' => __DIR__, + 'migrations' => $dir, ], 'environments' => [ 'nameless' => [ @@ -20,7 +23,11 @@ 'port' => $config['port'], 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', - 'default_migration_table' => 'nl2_phinxlog', + 'default_migration_table' => $table, ], ], + 'feature_flags' => [ + 'column_null_default' => false, + 'unsigned_primary_keys' => false, + ], ]; diff --git a/dev/scripts/cli_install.php b/dev/scripts/cli_install.php index 256e4c86cb..0b5bc54533 100644 --- a/dev/scripts/cli_install.php +++ b/dev/scripts/cli_install.php @@ -144,7 +144,7 @@ function getEnvVar(string $name, string $fallback = null, array $valid_values = print('✍️ Creating tables...' . PHP_EOL); -$message = PhinxAdapter::migrate(); +$message = PhinxAdapter::migrate('Core'); if (!str_contains($message, 'All Done')) { print($message); From d0fba0cbe93fa97f47fff28019b33a84e90c3b5c Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Mon, 12 Jun 2023 10:30:49 -0600 Subject: [PATCH 074/193] Replace `Util::getSetting`/`Util::setSetting` usages (#3387) --- core/classes/Avatars/AvatarSource.php | 2 +- core/classes/Core/Configuration.php | 2 +- core/classes/Core/Email.php | 6 +- core/classes/Core/User.php | 4 +- core/classes/Core/Util.php | 4 +- core/classes/Database/DatabaseInitialiser.php | 72 +++++++++---------- core/classes/Endpoints/KeyAuthEndpoint.php | 2 +- core/classes/Minecraft/PluginQuery.php | 2 +- core/classes/Misc/CaptchaBase.php | 2 +- core/classes/Misc/Text.php | 2 +- core/classes/Misc/UpgradeScript.php | 4 +- core/includes/maintenance.php | 2 +- core/includes/updates/203.php | 8 +-- core/init.php | 49 ++++++------- .../installation/steps/site_configuration.php | 6 +- core/templates/footer.php | 8 +-- core/templates/frontend_init.php | 2 +- custom/templates/DefaultRevamp/template.php | 2 +- .../template_settings/settings.php | 4 +- dev/scripts/cli_install.php | 8 +-- .../Group_Sync/MinecraftGroupSyncInjector.php | 2 +- .../Integrations/MinecraftIntegration.php | 10 +-- modules/Core/classes/Misc/Core_Sitemap.php | 2 +- modules/Core/classes/Misc/Nameless2API.php | 2 +- .../Core/classes/Tasks/GenerateSitemap.php | 6 +- .../includes/admin_integrations/minecraft.php | 10 +-- .../Core/includes/endpoints/InfoEndpoint.php | 10 +-- .../includes/endpoints/RegisterEndpoint.php | 2 +- .../includes/endpoints/ServerInfoEndpoint.php | 10 +-- .../endpoints/UpdateGroupsEndpoint.php | 2 +- .../endpoints/UpdateUsernameEndpoint.php | 2 +- modules/Core/module.php | 40 +++++------ modules/Core/pages/authme_connector.php | 8 +-- modules/Core/pages/complete_signup.php | 2 +- modules/Core/pages/home.php | 4 +- modules/Core/pages/index.php | 2 +- modules/Core/pages/leaderboards.php | 2 +- modules/Core/pages/login.php | 6 +- modules/Core/pages/minecraft/banner.php | 2 +- modules/Core/pages/panel/api.php | 12 ++-- modules/Core/pages/panel/avatars.php | 18 ++--- .../pages/panel/debugging_and_maintenance.php | 14 ++-- modules/Core/pages/panel/emails.php | 8 +-- .../Core/pages/panel/emails_mass_message.php | 4 +- modules/Core/pages/panel/general_settings.php | 34 ++++----- modules/Core/pages/panel/minecraft.php | 8 +-- modules/Core/pages/panel/minecraft_authme.php | 6 +- .../Core/pages/panel/minecraft_servers.php | 24 +++---- modules/Core/pages/panel/placeholders.php | 4 +- .../Core/pages/panel/privacy_and_terms.php | 4 +- modules/Core/pages/panel/queue.php | 14 ++-- modules/Core/pages/panel/registration.php | 44 ++++++------ modules/Core/pages/panel/seo.php | 4 +- modules/Core/pages/panel/social_media.php | 16 ++--- modules/Core/pages/panel/users_edit.php | 8 +-- modules/Core/pages/privacy.php | 2 +- modules/Core/pages/register.php | 14 ++-- modules/Core/pages/status.php | 2 +- modules/Core/pages/terms.php | 4 +- modules/Core/pages/user/placeholders.php | 2 +- modules/Core/pages/user/settings.php | 8 +-- modules/Core/queries/debug_link.php | 18 ++--- modules/Core/queries/queue.php | 6 +- modules/Core/queries/server.php | 2 +- modules/Core/queries/servers.php | 6 +- .../Discord Integration/classes/Discord.php | 6 +- .../classes/DiscordIntegration.php | 4 +- .../includes/admin_integrations/discord.php | 6 +- .../UpdateDiscordBotSettingsEndpoint.php | 10 +-- modules/Discord Integration/module.php | 4 +- .../pages/panel/discord.php | 8 +-- modules/Forum/front_page.php | 2 +- modules/Forum/pages/forum/reactions.php | 2 +- modules/Forum/pages/forum/view_topic.php | 2 +- modules/Forum/pages/panel/forums.php | 2 +- modules/Forum/pages/panel/settings.php | 8 +-- modules/Forum/widgets/LatestPostsWidget.php | 2 +- modules/Forum/widgets/admin/latest_posts.php | 6 +- .../Members/classes/MemberListProvider.php | 4 +- modules/Members/pages/members.php | 6 +- modules/Members/pages/panel/settings.php | 8 +-- modules/Members/queries/member_list.php | 2 +- 82 files changed, 339 insertions(+), 344 deletions(-) diff --git a/core/classes/Avatars/AvatarSource.php b/core/classes/Avatars/AvatarSource.php index 1f7ce43501..fc647fe956 100644 --- a/core/classes/Avatars/AvatarSource.php +++ b/core/classes/Avatars/AvatarSource.php @@ -69,7 +69,7 @@ public static function getAvatarFromUserData(object $data, bool $allow_gifs = fa } // Attempt to get their MC avatar if Minecraft integration is enabled - if (Util::getSetting('mc_integration')) { + if (Settings::get('mc_integration')) { if ($data->uuid != null && $data->uuid != 'none') { $uuid = $data->uuid; } else { diff --git a/core/classes/Core/Configuration.php b/core/classes/Core/Configuration.php index 6b8b3933b0..232a699aee 100644 --- a/core/classes/Core/Configuration.php +++ b/core/classes/Core/Configuration.php @@ -6,7 +6,7 @@ * @author Partydragen * @version 2.0.0-pr8 * @license MIT - * @deprecated Use Util::getSetting and Util::setSetting with $module parameter instead + * @deprecated Use Util::getSetting and Util::setSetting with $module parameter instead. Will be removed in 2.2.0 */ class Configuration { diff --git a/core/classes/Core/Email.php b/core/classes/Core/Email.php index 05ba9c1098..b5ef3ccbbd 100644 --- a/core/classes/Core/Email.php +++ b/core/classes/Core/Email.php @@ -43,7 +43,7 @@ public static function send(array $recipient, string $subject, string $message, 'replyto' => $reply_to ?? self::getReplyTo(), ]; - if (Util::getSetting('phpmailer') == '1') { + if (Settings::get('phpmailer') == '1') { return self::sendMailer($email); } @@ -56,7 +56,7 @@ public static function send(array $recipient, string $subject, string $message, */ public static function getReplyTo(): array { return [ - 'email' => Util::getSetting('incoming_email'), + 'email' => Settings::get('incoming_email'), 'name' => SITE_NAME ]; } @@ -69,7 +69,7 @@ public static function getReplyTo(): array { private static function sendPHP(array $email) { error_clear_last(); - $outgoing_email = Util::getSetting('outgoing_email'); + $outgoing_email = Settings::get('outgoing_email'); $incoming_email = $email['replyto']['email']; $encoded_subject = '=?UTF-8?B?' . base64_encode($email['subject']) . '?='; diff --git a/core/classes/Core/User.php b/core/classes/Core/User.php index b689b32dc5..6cb28f8e59 100644 --- a/core/classes/Core/User.php +++ b/core/classes/Core/User.php @@ -993,7 +993,7 @@ public function getProfileViews(): int { * @return bool Whether profile privatizing is allowed and if they have permission to use it. */ public function canPrivateProfile(): bool { - return Util::getSetting('private_profile') === '1' && $this->hasPermission('usercp.private_profile'); + return Settings::get('private_profile') === '1' && $this->hasPermission('usercp.private_profile'); } /** @@ -1002,7 +1002,7 @@ public function canPrivateProfile(): bool { * @return bool Whether the user can bypass private profiles */ public function canBypassPrivateProfile(): bool { - return Util::getSetting('private_profile') === '1' && $this->hasPermission('profile.private.bypass'); + return Settings::get('private_profile') === '1' && $this->hasPermission('profile.private.bypass'); } /** diff --git a/core/classes/Core/Util.php b/core/classes/Core/Util.php index 2d208c8fd5..03f1ce6f1a 100644 --- a/core/classes/Core/Util.php +++ b/core/classes/Core/Util.php @@ -171,7 +171,7 @@ public static function getLatestNews(): string { * @param string $module Module name to keep settings separate from other modules. Set module * to 'Core' for global settings. * @return ?string Setting from DB or $fallback. - * @deprecated Use Settings::get() instead. + * @deprecated Use Settings::get() instead. Will be removed in 2.2.0 */ public static function getSetting(string $setting, ?string $fallback = null, string $module = 'core'): ?string { return Settings::get($setting, $fallback, $module); @@ -184,7 +184,7 @@ public static function getSetting(string $setting, ?string $fallback = null, str * @param string|null $new_value New setting value, or null to delete * @param string $module Module name to keep settings separate from other modules. Set module * to 'Core' for global settings. - * @deprecated Use Settings::set() instead. + * @deprecated Use Settings::set() instead. Will be removed in 2.2.0 */ public static function setSetting(string $setting, ?string $new_value, string $module = 'core'): void { Settings::set($setting, $new_value, $module); diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 55845eea9f..7002ff4ae8 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -65,7 +65,7 @@ private function initialiseGroups(): void { 'order' => 4 ]); - Util::setSetting('member_list_viewable_groups', json_encode([1, 2, 3, 4]), 'Members'); + Settings::set('member_list_viewable_groups', json_encode([1, 2, 3, 4]), 'Members'); } private function initialiseLanguages(): void { @@ -176,40 +176,40 @@ private function initialiseReactions(): void { } private function initialiseSettings(): void { - Util::setSetting('registration_enabled', '1'); - Util::setSetting('displaynames', '0'); - Util::setSetting('uuid_linking', '1'); - Util::setSetting('recaptcha', '0'); - Util::setSetting('recaptcha_type', 'Recaptcha3'); - Util::setSetting('recaptcha_login', '0'); - Util::setSetting('email_verification', '1'); - Util::setSetting('nameless_version', '2.1.0'); - Util::setSetting('version_checked', date('U')); - Util::setSetting('phpmailer', '0'); - Util::setSetting('user_avatars', '0'); - Util::setSetting('avatar_site', 'cravatar'); - Util::setSetting(Settings::MINECRAFT_INTEGRATION, '1'); - Util::setSetting('discord_integration', '0'); - Util::setSetting('avatar_type', 'helmavatar'); - Util::setSetting('home_type', 'news'); - Util::setSetting('forum_reactions', '1'); - Util::setSetting('error_reporting', '0'); - Util::setSetting('page_loading', '0'); - Util::setSetting('unique_id', substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 62)); - Util::setSetting('use_api', 0); - Util::setSetting('mc_api_key', SecureRandom::alphanumeric()); - Util::setSetting('query_type', 'internal'); - Util::setSetting('player_list_limit', '20'); - Util::setSetting('timezone', $_SESSION['install_timezone']); - Util::setSetting('maintenance', '0'); - Util::setSetting('maintenance_message', 'This website is currently in maintenance mode.'); - Util::setSetting('default_avatar_type', 'minecraft'); - Util::setSetting('private_profile', '1'); - Util::setSetting('validate_user_action', '{"action":"promote","group":1}'); - Util::setSetting('login_method', 'email'); - Util::setSetting('username_sync', '1'); - Util::setSetting('status_page', '0'); - Util::setSetting('placeholders', '0'); + Settings::set('registration_enabled', '1'); + Settings::set('displaynames', '0'); + Settings::set('uuid_linking', '1'); + Settings::set('recaptcha', '0'); + Settings::set('recaptcha_type', 'Recaptcha3'); + Settings::set('recaptcha_login', '0'); + Settings::set('email_verification', '1'); + Settings::set('nameless_version', '2.1.0'); + Settings::set('version_checked', date('U')); + Settings::set('phpmailer', '0'); + Settings::set('user_avatars', '0'); + Settings::set('avatar_site', 'cravatar'); + Settings::set(Settings::MINECRAFT_INTEGRATION, '1'); + Settings::set('discord_integration', '0'); + Settings::set('avatar_type', 'helmavatar'); + Settings::set('home_type', 'news'); + Settings::set('forum_reactions', '1'); + Settings::set('error_reporting', '0'); + Settings::set('page_loading', '0'); + Settings::set('unique_id', substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 62)); + Settings::set('use_api', 0); + Settings::set('mc_api_key', SecureRandom::alphanumeric()); + Settings::set('query_type', 'internal'); + Settings::set('player_list_limit', '20'); + Settings::set('timezone', $_SESSION['install_timezone']); + Settings::set('maintenance', '0'); + Settings::set('maintenance_message', 'This website is currently in maintenance mode.'); + Settings::set('default_avatar_type', 'minecraft'); + Settings::set('private_profile', '1'); + Settings::set('validate_user_action', '{"action":"promote","group":1}'); + Settings::set('login_method', 'email'); + Settings::set('username_sync', '1'); + Settings::set('status_page', '0'); + Settings::set('placeholders', '0'); $this->_db->insert('privacy_terms', [ 'name' => 'terms', @@ -232,7 +232,7 @@ private function initialiseSettings(): void { 'for any loss of data which may come about, for example a hacking attempt. ' . 'The website is run independently from the software creators, and any content' . ' is the responsibility of the website administration.'; - Util::setSetting('t_and_c', 'By registering on our website, you agree to the following:

' . $nameless_terms . '

'); + Settings::set('t_and_c', 'By registering on our website, you agree to the following:

' . $nameless_terms . '

'); } private function initialiseTasks(): void { diff --git a/core/classes/Endpoints/KeyAuthEndpoint.php b/core/classes/Endpoints/KeyAuthEndpoint.php index bb37485298..8ea22bcc9a 100644 --- a/core/classes/Endpoints/KeyAuthEndpoint.php +++ b/core/classes/Endpoints/KeyAuthEndpoint.php @@ -48,7 +48,7 @@ final public function isAuthorised(Nameless2API $api): bool { * @return bool Whether it matches or not. */ private function validateKey(Nameless2API $api, string $api_key): bool { - $correct_key = Util::getSetting('mc_api_key'); + $correct_key = Settings::get('mc_api_key'); if ($correct_key === null) { die('API key is null'); } diff --git a/core/classes/Minecraft/PluginQuery.php b/core/classes/Minecraft/PluginQuery.php index 18ca8d3d31..4d38ae3e54 100644 --- a/core/classes/Minecraft/PluginQuery.php +++ b/core/classes/Minecraft/PluginQuery.php @@ -18,7 +18,7 @@ class PluginQuery { */ public static function singleQuery(int $server_id, Language $language): array { - $player_list_limit = Util::getSetting('player_list_limit', 20); + $player_list_limit = Settings::get('player_list_limit', 20); $cache = new Cache(['name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/']); $cache->setCache('latest_query'); diff --git a/core/classes/Misc/CaptchaBase.php b/core/classes/Misc/CaptchaBase.php index 517bfd7c4f..e9a0e8f1db 100644 --- a/core/classes/Misc/CaptchaBase.php +++ b/core/classes/Misc/CaptchaBase.php @@ -81,7 +81,7 @@ public static function isCaptchaEnabled(string $key = 'recaptcha'): bool { return false; } - return Util::getSetting($key) === '1'; + return Settings::get($key) === '1'; } /** diff --git a/core/classes/Misc/Text.php b/core/classes/Misc/Text.php index f524f751ad..1a12bd6bc9 100644 --- a/core/classes/Misc/Text.php +++ b/core/classes/Misc/Text.php @@ -140,7 +140,7 @@ public static function bold(string $text): string { * @return string Text with emojis replaced with URLs to their Twemoji equivalent. */ public static function renderEmojis(string $text, string $force_style = null): string { - $style = $force_style ?? Util::getSetting('emoji_style', 'twemoji'); + $style = $force_style ?? Settings::get('emoji_style', 'twemoji'); switch ($style) { case 'twemoji': return Twemoji::text($text)->toHtml(); diff --git a/core/classes/Misc/UpgradeScript.php b/core/classes/Misc/UpgradeScript.php index a593f5f2eb..94b6b83be3 100644 --- a/core/classes/Misc/UpgradeScript.php +++ b/core/classes/Misc/UpgradeScript.php @@ -154,7 +154,7 @@ protected function runMigrations(): void { * @param string $version Version to set */ protected function setVersion(string $version): void { - Util::setSetting('nameless_version', $version); - Util::setSetting('version_update', null); + Settings::set('nameless_version', $version); + Settings::set('version_update', null); } } diff --git a/core/includes/maintenance.php b/core/includes/maintenance.php index c4027427b5..56d80c6717 100644 --- a/core/includes/maintenance.php +++ b/core/includes/maintenance.php @@ -28,7 +28,7 @@ $smarty->assign( [ 'MAINTENANCE_TITLE' => $language->get('errors', 'maintenance_title'), - 'MAINTENANCE_MESSAGE' => Output::getPurified(Util::getSetting('maintenance_message', 'Maintenance mode is enabled.')), + 'MAINTENANCE_MESSAGE' => Output::getPurified(Settings::get('maintenance_message', 'Maintenance mode is enabled.')), 'RETRY' => $language->get('errors', 'maintenance_retry') ] ); diff --git a/core/includes/updates/203.php b/core/includes/updates/203.php index 8ef34408f5..ef584aa098 100644 --- a/core/includes/updates/203.php +++ b/core/includes/updates/203.php @@ -14,12 +14,12 @@ public function run(): void { // Default to 10 $query_interval = 10; } - Util::setSetting('minecraft_query_interval', $query_interval); + Settings::set('minecraft_query_interval', $query_interval); } // Replace `external_query` with `query_type` - Util::setSetting('query_type', Util::getSetting('external_query') == 1 ? 'external' : 'internal'); - Util::setSetting('external_query', null); + Settings::set('query_type', Settings::get('external_query') == 1 ? 'external' : 'internal'); + Settings::set('external_query', null); // Forum post conversion ConvertForumPostTask::schedule(); @@ -28,7 +28,7 @@ public function run(): void { GenerateSitemap::schedule(new Language('core', 'en_UK')); // Add all groups to member list selectable groups - Util::setSetting('member_list_viewable_groups', json_encode(array_map(static fn (Group $group) => $group->id, Group::all())), 'Members'); + Settings::set('member_list_viewable_groups', json_encode(array_map(static fn (Group $group) => $group->id, Group::all())), 'Members'); Config::set('core.installed', true); diff --git a/core/init.php b/core/init.php index ad6d288d93..6694467572 100644 --- a/core/init.php +++ b/core/init.php @@ -69,16 +69,15 @@ */ $container = new \DI\Container(); - $container->set('Cache', \DI\create()->constructor( - [ + $container->set(Cache::class, function () { + return new Cache([ 'name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/' - ] - )); + ]); + }); - /** @var Cache $cache */ - $cache = $container->get('Cache'); + $cache = $container->get(Cache::class); // Friendly URLs? define('FRIENDLY_URLS', Config::get('core.friendly') == 'true'); @@ -111,7 +110,7 @@ // Error reporting if (!defined('DEBUGGING')) { - if (Util::getSetting('error_reporting') === '1') { + if (Settings::get('error_reporting') === '1') { ini_set('display_startup_errors', 1); ini_set('display_errors', 1); error_reporting(-1); @@ -123,8 +122,7 @@ } } - /** @var Smarty $smarty */ - $smarty = $container->get('Smarty'); + $smarty = $container->get(Smarty::class); if ((defined('DEBUGGING') && DEBUGGING) && class_exists('DebugBar\DebugBar')) { define('PHPDEBUGBAR', true); @@ -132,7 +130,7 @@ } // Get the Nameless version - define('NAMELESS_VERSION', Util::getSetting('nameless_version')); + define('NAMELESS_VERSION', Settings::get('nameless_version')); // Set the date format define('DATE_FORMAT', Config::get('core.date_format') ?: 'd M Y, H:i'); @@ -183,7 +181,7 @@ } // Set timezone - define('TIMEZONE', $user->isLoggedIn() ? $user->data()->timezone : Util::getSetting('timezone', 'Europe/London')); + define('TIMEZONE', $user->isLoggedIn() ? $user->data()->timezone : Settings::get('timezone', 'Europe/London')); date_default_timezone_set(TIMEZONE); // Language @@ -203,7 +201,7 @@ define('DEFAULT_LANGUAGE', $default_language); if (!$user->isLoggedIn() || !($user->data()->language_id)) { - if (Util::getSetting('auto_language_detection') && (!Cookie::exists('auto_language') || Cookie::get('auto_language') === 'true')) { + if (Settings::get('auto_language_detection') && (!Cookie::exists('auto_language') || Cookie::get('auto_language') === 'true')) { // Attempt to get the requested language from the browser if it exists $automatic_locale = Language::acceptFromHttp(HttpUtils::getHeader('Accept-Language') ?? ''); if ($automatic_locale !== false) { @@ -224,13 +222,14 @@ define('LANGUAGE', $language[0]->short_code); } } - $container->set('Language', \DI\create()->constructor('core', LANGUAGE)); + $container->set(Language::class, function () { + return new Language('core', LANGUAGE); + }); - /** @var Language $language */ - $language = $container->get('Language'); + $language = $container->get(Language::class); // Site name - $sitename = Util::getSetting('sitename'); + $sitename = Settings::get('sitename'); if ($sitename === null) { die('No sitename in settings table'); } @@ -376,8 +375,7 @@ define('DEFAULT_AVATAR_PERSPECTIVE', 'face'); } - /** @var Widgets $widgets */ - $widgets = $container->get('Widgets'); + $widgets = $container->get(Widgets::class); // Navbar links $navigation = new Navigation(); @@ -393,7 +391,7 @@ $cc_nav->add('cc_oauth', $language->get('admin', 'oauth'), URL::build('/user/oauth')); // Placeholders enabled? - if (Util::getSetting('placeholders') === '1') { + if (Settings::get('placeholders') === '1') { $cc_nav->add('cc_placeholders', $language->get('user', 'placeholders'), URL::build('/user/placeholders')); } @@ -417,11 +415,8 @@ $navigation->add('index', $language->get('general', 'home'), URL::build('/'), 'top', null, $home_order, $home_icon); - /** @var Endpoints $endpoints */ - $endpoints = $container->get('Endpoints'); - - /** @var Announcements $announcements */ - $announcements = $container->get('Announcements'); + $endpoints = $container->get(Endpoints::class); + $announcements = $container->get(Announcements::class); // Modules $cache->setCache('modulescache'); @@ -447,7 +442,7 @@ ]; } - $pages = $container->get('Pages'); + $pages = $container->get(Pages::class); // Sort by priority usort($enabled_modules, static function ($a, $b) { @@ -461,7 +456,7 @@ } // Maintenance mode? - if (Util::getSetting('maintenance') === '1') { + if (Settings::get('maintenance') === '1') { // Enabled // Admins only beyond this point if (!$user->isLoggedIn() || !$user->canViewStaffCP()) { @@ -652,7 +647,7 @@ } // Auto language enabled? - if (Util::getSetting('auto_language_detection')) { + if (Settings::get('auto_language_detection')) { $smarty->assign('AUTO_LANGUAGE', true); } } diff --git a/core/installation/steps/site_configuration.php b/core/installation/steps/site_configuration.php index 1107cac92b..25a15dd5d8 100644 --- a/core/installation/steps/site_configuration.php +++ b/core/installation/steps/site_configuration.php @@ -41,9 +41,9 @@ } else { try { - Util::setSetting('sitename', Input::get('sitename')); - Util::setSetting('incoming_email', Input::get('incoming')); - Util::setSetting('outgoing_email', Input::get('outgoing')); + Settings::set('sitename', Input::get('sitename')); + Settings::set('incoming_email', Input::get('incoming')); + Settings::set('outgoing_email', Input::get('outgoing')); $_SESSION['default_language'] = Input::get('language'); diff --git a/core/templates/footer.php b/core/templates/footer.php index 27f21b2a1c..966c51fc74 100644 --- a/core/templates/footer.php +++ b/core/templates/footer.php @@ -14,7 +14,7 @@ $social_media_icons = []; // Facebook -$social_media = Util::getSetting('fb_url'); +$social_media = Settings::get('fb_url'); if ($social_media != null) { $social_media_icons[] = [ 'short' => 'fb', @@ -25,7 +25,7 @@ } // Twitter -$social_media = Util::getSetting('twitter_url'); +$social_media = Settings::get('twitter_url'); if ($social_media != null) { $social_media_icons[] = [ 'short' => 'tw', @@ -36,7 +36,7 @@ } // Youtube -$social_media = Util::getSetting('youtube_url'); +$social_media = Settings::get('youtube_url'); if ($social_media != null) { $social_media_icons[] = [ 'short' => 'gp', @@ -50,7 +50,7 @@ // Assign to Smarty variables $smarty->assign([ 'SOCIAL_MEDIA_ICONS' => $social_media_icons, - 'PAGE_LOAD_TIME' => Util::getSetting('page_loading'), + 'PAGE_LOAD_TIME' => Settings::get('page_loading'), 'FOOTER_NAVIGATION' => $navigation->returnNav('footer') ]); diff --git a/core/templates/frontend_init.php b/core/templates/frontend_init.php index 6229b8bd4d..d5f4819891 100644 --- a/core/templates/frontend_init.php +++ b/core/templates/frontend_init.php @@ -148,7 +148,7 @@ $smarty->assign('FAVICON', Output::getClean($favicon_image)); } -$analytics_id = Util::getSetting('ga_script'); +$analytics_id = Settings::get('ga_script'); if ($analytics_id) { $smarty->assign('ANALYTICS_ID', Output::getClean($analytics_id)); } diff --git a/custom/templates/DefaultRevamp/template.php b/custom/templates/DefaultRevamp/template.php index 2ac3ddf288..b9c0ca1c70 100755 --- a/custom/templates/DefaultRevamp/template.php +++ b/custom/templates/DefaultRevamp/template.php @@ -109,7 +109,7 @@ public function onPageLoad() { 'debugging' => (defined('DEBUGGING') && DEBUGGING == 1) ? '1' : '0', 'loggedIn' => $this->_user->isLoggedIn() ? '1' : '0', 'cookie' => defined('COOKIE_NOTICE') ? '1' : '0', - 'loadingTime' => Util::getSetting('page_loading') === '1' ? PAGE_LOAD_TIME : '', + 'loadingTime' => Settings::get('page_loading') === '1' ? PAGE_LOAD_TIME : '', 'route' => $route, 'csrfToken' => Token::get(), ]; diff --git a/custom/templates/DefaultRevamp/template_settings/settings.php b/custom/templates/DefaultRevamp/template_settings/settings.php index 34b87b807d..10a3d4d639 100644 --- a/custom/templates/DefaultRevamp/template_settings/settings.php +++ b/custom/templates/DefaultRevamp/template_settings/settings.php @@ -21,7 +21,7 @@ $cache->store('navbarColour', $_POST['navbarColour']); } - Util::setSetting('home_custom_content', Input::get('home_custom_content')); + Settings::set('home_custom_content', Input::get('home_custom_content')); Session::flash('admin_templates', $language->get('admin', 'successfully_updated')); } else { @@ -117,7 +117,7 @@ AssetTree::TINYMCE, ]); -$current_template->addJSScript(Input::createTinyEditor($language, 'inputHomeCustomContent', Util::getSetting('home_custom_content'))); +$current_template->addJSScript(Input::createTinyEditor($language, 'inputHomeCustomContent', Settings::get('home_custom_content'))); $smarty->assign([ 'SUBMIT' => $language->get('general', 'submit'), diff --git a/dev/scripts/cli_install.php b/dev/scripts/cli_install.php index 0b5bc54533..35d6ab5282 100644 --- a/dev/scripts/cli_install.php +++ b/dev/scripts/cli_install.php @@ -161,10 +161,10 @@ function getEnvVar(string $name, string $fallback = null, array $valid_values = DatabaseInitialiser::runPreUser(); -Util::setSetting('sitename', getEnvVar('NAMELESS_SITE_NAME')); -Util::setSetting('incoming_email', getEnvVar('NAMELESS_SITE_CONTACT_EMAIL')); -Util::setSetting('outgoing_email', getEnvVar('NAMELESS_SITE_OUTGOING_EMAIL')); -Util::setSetting('email_verification', getEnvVar('NAMELESS_EMAIL_VERIFICATION', '1', ['0', '1'])); +Settings::set('sitename', getEnvVar('NAMELESS_SITE_NAME')); +Settings::set('incoming_email', getEnvVar('NAMELESS_SITE_CONTACT_EMAIL')); +Settings::set('outgoing_email', getEnvVar('NAMELESS_SITE_OUTGOING_EMAIL')); +Settings::set('email_verification', getEnvVar('NAMELESS_EMAIL_VERIFICATION', '1', ['0', '1'])); print('👮 Creating admin account...' . PHP_EOL); diff --git a/modules/Core/classes/Group_Sync/MinecraftGroupSyncInjector.php b/modules/Core/classes/Group_Sync/MinecraftGroupSyncInjector.php index 75cbc411a1..11c9d86d42 100644 --- a/modules/Core/classes/Group_Sync/MinecraftGroupSyncInjector.php +++ b/modules/Core/classes/Group_Sync/MinecraftGroupSyncInjector.php @@ -32,7 +32,7 @@ public function shouldEnable(): bool { public function getSelectionOptions(): array { $row = DB::getInstance()->query( 'SELECT `groups` FROM `nl2_query_results` WHERE `server_id` = ? ORDER BY `id` DESC LIMIT 1', - [Util::getSetting('group_sync_mc_server')] + [Settings::get('group_sync_mc_server')] )->first(); if ($row === null) { diff --git a/modules/Core/classes/Integrations/MinecraftIntegration.php b/modules/Core/classes/Integrations/MinecraftIntegration.php index cc468ceca4..c98ffa0dea 100644 --- a/modules/Core/classes/Integrations/MinecraftIntegration.php +++ b/modules/Core/classes/Integrations/MinecraftIntegration.php @@ -22,7 +22,7 @@ public function __construct(Language $language) { } private function flashVerifyCommand(string $verification_code): void { - $verification_command = Output::getClean(Util::getSetting('minecraft_verify_command', '/verify')); + $verification_command = Output::getClean(Settings::get('minecraft_verify_command', '/verify')); $message = $this->_language->get('user', 'validate_account_command', ['command' => $verification_command . ' ' . $verification_code]); Session::flash('connections_success', $message); } @@ -145,7 +145,7 @@ public function validateIdentifier(string $identifier, int $integration_user_id } public function onRegistrationPageLoad(Fields $fields) { - if (Util::getSetting('mc_username_registration', '1', 'Minecraft Integration') != '1') { + if (Settings::get('mc_username_registration', '1', 'Minecraft Integration') != '1') { return; } @@ -159,7 +159,7 @@ public function beforeRegistrationValidation(Validate $validate) { } public function afterRegistrationValidation() { - if (Util::getSetting('mc_username_registration', '1', 'Minecraft Integration') != '1') { + if (Settings::get('mc_username_registration', '1', 'Minecraft Integration') != '1') { return; } @@ -184,7 +184,7 @@ public function afterRegistrationValidation() { } public function successfulRegistration(User $user) { - if (Util::getSetting('mc_username_registration', '1', 'Minecraft Integration') != '1') { + if (Settings::get('mc_username_registration', '1', 'Minecraft Integration') != '1') { return; } @@ -220,7 +220,7 @@ public function syncIntegrationUser(IntegrationUser $integration_user): bool { * @return array */ public function getUuidByUsername(string $username): array { - if (Util::getSetting('uuid_linking')) { + if (Settings::get('uuid_linking')) { return $this->getOnlineModeUuid($username); } diff --git a/modules/Core/classes/Misc/Core_Sitemap.php b/modules/Core/classes/Misc/Core_Sitemap.php index 46646911d2..8391cb7a15 100644 --- a/modules/Core/classes/Misc/Core_Sitemap.php +++ b/modules/Core/classes/Misc/Core_Sitemap.php @@ -20,7 +20,7 @@ public static function generateSitemap(Sitemap $sitemap): void { $sitemap->addItem(URL::build('/login'), 0.8); $sitemap->addItem(URL::build('/register')); - $home_type = Util::getSetting('home_type'); + $home_type = Settings::get('home_type'); if ($home_type === 'portal') { $sitemap->addItem(URL::build('/home'), 0.9); diff --git a/modules/Core/classes/Misc/Nameless2API.php b/modules/Core/classes/Misc/Nameless2API.php index 0f1565f7d2..f3dfb3b1fb 100644 --- a/modules/Core/classes/Misc/Nameless2API.php +++ b/modules/Core/classes/Misc/Nameless2API.php @@ -36,7 +36,7 @@ public function __construct(string $route, Language $api_language, Endpoints $en $this->_db = DB::getInstance(); // Ensure API is actually enabled - if (!Util::getSetting('use_api')) { + if (!Settings::get('use_api')) { $this->throwError(self::ERROR_API_DISABLED); } diff --git a/modules/Core/classes/Tasks/GenerateSitemap.php b/modules/Core/classes/Tasks/GenerateSitemap.php index 61906f046d..ff4fc8ab66 100644 --- a/modules/Core/classes/Tasks/GenerateSitemap.php +++ b/modules/Core/classes/Tasks/GenerateSitemap.php @@ -3,9 +3,9 @@ class GenerateSitemap extends Task { public function run(): string { - $cache = $this->_container->get('Cache'); - $language = $this->_container->get('Language'); - $pages = $this->_container->get('Pages'); + $cache = $this->_container->get(Cache::class); + $language = $this->_container->get(Language::class); + $pages = $this->_container->get(Pages::class); $errors = []; $index = rtrim(URL::getSelfURL(), '/') . diff --git a/modules/Core/includes/admin_integrations/minecraft.php b/modules/Core/includes/admin_integrations/minecraft.php index 8f49b5b2eb..9f49dc474a 100644 --- a/modules/Core/includes/admin_integrations/minecraft.php +++ b/modules/Core/includes/admin_integrations/minecraft.php @@ -3,10 +3,10 @@ if (Token::check()) { if (Input::get('action') === 'integration_settings') { $premium_account = isset($_POST['premium_account']) && $_POST['premium_account'] == 'on' ? '1' : '0'; - Util::setSetting('uuid_linking', $premium_account); + Settings::set('uuid_linking', $premium_account); $username_registration = isset($_POST['username_registration']) && $_POST['username_registration'] == 'on' ? '1' : '0'; - Util::setSetting('mc_username_registration', $username_registration, 'Minecraft Integration'); + Settings::set('mc_username_registration', $username_registration, 'Minecraft Integration'); Session::flash('integrations_success', $language->get('admin', 'integration_updated_successfully')); Redirect::to(URL::build('/panel/core/integrations/', 'integration=' . $integration->getName())); @@ -18,8 +18,8 @@ $smarty->assign([ 'PREMIUM_ACCOUNTS' => $language->get('admin', 'force_premium_accounts'), - 'PREMIUM_ACCOUNTS_VALUE' => Util::getSetting('uuid_linking'), + 'PREMIUM_ACCOUNTS_VALUE' => Settings::get('uuid_linking'), 'REQUIRE_USERNAME_REGISTRATION' => $language->get('admin', 'require_minecraft_username_on_registration'), - 'REQUIRE_USERNAME_REGISTRATION_VALUE' => Util::getSetting('mc_username_registration', '1', 'Minecraft Integration'), + 'REQUIRE_USERNAME_REGISTRATION_VALUE' => Settings::get('mc_username_registration', '1', 'Minecraft Integration'), 'SETTINGS_TEMPLATE' => 'integrations/minecraft/integration_settings.tpl' -]); \ No newline at end of file +]); diff --git a/modules/Core/includes/endpoints/InfoEndpoint.php b/modules/Core/includes/endpoints/InfoEndpoint.php index 1e7ed5bbc0..626935b9e9 100644 --- a/modules/Core/includes/endpoints/InfoEndpoint.php +++ b/modules/Core/includes/endpoints/InfoEndpoint.php @@ -16,7 +16,7 @@ public function __construct() { public function execute(Nameless2API $api): void { - $site_id = Util::getSetting('unique_id'); + $site_id = Settings::get('unique_id'); if ($site_id === null) { $api->throwError(Nameless2API::ERROR_NO_SITE_UID); @@ -24,13 +24,13 @@ public function execute(Nameless2API $api): void { $ret = []; - $ret['nameless_version'] = Util::getSetting('nameless_version'); + $ret['nameless_version'] = Settings::get('nameless_version'); - if (Util::getSetting('version_update') === 'urgent' || Util::getSetting('version_update') === 'true') { + if (Settings::get('version_update') === 'urgent' || Settings::get('version_update') === 'true') { $ret['version_update'] = [ 'update' => true, - 'version' => Util::getSetting('new_version'), - 'urgent' => Util::getSetting('version_update') === 'urgent', + 'version' => Settings::get('new_version'), + 'urgent' => Settings::get('version_update') === 'urgent', ]; } diff --git a/modules/Core/includes/endpoints/RegisterEndpoint.php b/modules/Core/includes/endpoints/RegisterEndpoint.php index d4556693db..3f5a30698d 100644 --- a/modules/Core/includes/endpoints/RegisterEndpoint.php +++ b/modules/Core/includes/endpoints/RegisterEndpoint.php @@ -67,7 +67,7 @@ public function execute(Nameless2API $api): void { $api->throwError(CoreApiErrors::ERROR_EMAIL_ALREADY_EXISTS); } - if (Util::getSetting('email_verification') === '1') { + if (Settings::get('email_verification') === '1') { // Send email to verify $this->sendRegistrationEmail($api, $_POST['username'], $_POST['email']); } else { diff --git a/modules/Core/includes/endpoints/ServerInfoEndpoint.php b/modules/Core/includes/endpoints/ServerInfoEndpoint.php index 214086de1a..88a4fa2334 100644 --- a/modules/Core/includes/endpoints/ServerInfoEndpoint.php +++ b/modules/Core/includes/endpoints/ServerInfoEndpoint.php @@ -24,7 +24,7 @@ public function execute(Nameless2API $api): void { } if (isset($_POST['verify_command'])) { - Util::setSetting('minecraft_verify_command', $_POST['verify_command']); + Settings::set('minecraft_verify_command', $_POST['verify_command']); } try { @@ -64,7 +64,7 @@ public function execute(Nameless2API $api): void { $api->throwError(CoreApiErrors::ERROR_UNABLE_TO_UPDATE_SERVER_INFO, $e->getMessage(), 500); } - if (Util::getSetting('mc_integration')) { + if (Settings::get('mc_integration')) { try { $integration = Integrations::getInstance()->getIntegration('Minecraft'); @@ -85,7 +85,7 @@ public function execute(Nameless2API $api): void { // Server query try { - $query_type = Util::getSetting('query_type', 'internal'); + $query_type = Settings::get('query_type', 'internal'); if ($query_type == 'plugin') { $players_list = []; foreach ($_POST['players'] as $uuid => $player) { @@ -115,14 +115,14 @@ private function updateUsername(IntegrationUser $integrationUser, array $player) ]); } - if (Util::getSetting('username_sync')) { + if (Settings::get('username_sync')) { $user = $integrationUser->getUser(); if (!$user->exists() || $player['name'] == $user->data()->username) { return; } // Update username - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { $user->update([ 'username' => $player['name'] ]); diff --git a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php index 4a8fe0f396..fa2373f40a 100644 --- a/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateGroupsEndpoint.php @@ -15,7 +15,7 @@ public function execute(Nameless2API $api): void { $server_id = $_POST['server_id']; $group_sync_log = []; - if (Util::getSetting('mc_integration') && $server_id == Util::getSetting('group_sync_mc_server')) { + if (Settings::get('mc_integration') && $server_id == Settings::get('group_sync_mc_server')) { $integration = Integrations::getInstance()->getIntegration('Minecraft'); foreach ($_POST['player_groups'] as $uuid => $groups) { diff --git a/modules/Core/includes/endpoints/UpdateUsernameEndpoint.php b/modules/Core/includes/endpoints/UpdateUsernameEndpoint.php index be817c389e..97ddd925e7 100644 --- a/modules/Core/includes/endpoints/UpdateUsernameEndpoint.php +++ b/modules/Core/includes/endpoints/UpdateUsernameEndpoint.php @@ -20,7 +20,7 @@ public function execute(Nameless2API $api, User $user): void { $fields = ['username' => $_POST['username']]; - if (Util::getSetting('displaynames') !== '1') { + if (Settings::get('displaynames') !== '1') { $fields['nickname'] = $_POST['username']; } diff --git a/modules/Core/module.php b/modules/Core/module.php index 5796311b97..53d1463e2d 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -57,7 +57,7 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga $pages->add('Core', '/forgot_password', 'pages/forgot_password.php'); $pages->add('Core', '/complete_signup', 'pages/complete_signup.php'); $pages->add('Core', '/status', 'pages/status.php', 'status'); - if (Util::getSetting('mc_integration')) { + if (Settings::get('mc_integration')) { $pages->add('Core', '/leaderboards', 'pages/leaderboards.php', 'leaderboards'); } $pages->add('Core', '/oauth', 'pages/oauth.php'); @@ -121,7 +121,7 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga // Ajax GET requests $pages->addAjaxScript(URL::build('/queries/servers')); - if (Util::getSetting('queue_runner', 'ajax') == 'ajax') { + if (Settings::get('queue_runner', 'ajax') == 'ajax') { $pages->addAjaxScript(URL::build('/queries/queue')); } @@ -425,9 +425,9 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga ]); // Captcha - $captchaPublicKey = Util::getSetting('recaptcha_key', ''); - $captchaPrivateKey = Util::getSetting('recaptcha_secret', ''); - $activeCaptcha = Util::getSetting('recaptcha_type', 'Recaptcha3'); + $captchaPublicKey = Settings::get('recaptcha_key', ''); + $captchaPrivateKey = Settings::get('recaptcha_secret', ''); + $activeCaptcha = Settings::get('recaptcha_type', 'Recaptcha3'); CaptchaBase::addProvider(new hCaptcha($captchaPrivateKey, $captchaPublicKey)); CaptchaBase::addProvider(new Recaptcha2($captchaPrivateKey, $captchaPublicKey)); @@ -505,7 +505,7 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga }); // Minecraft Integration - if (Util::getSetting('mc_integration')) { + if (Settings::get('mc_integration')) { Integrations::getInstance()->registerIntegration(new MinecraftIntegration($language)); } @@ -672,16 +672,16 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart if ($pages->getActivePage()['widgets'] || (defined('PANEL_PAGE') && str_contains(PANEL_PAGE, 'widget'))) { // Facebook $cache->setCache('social_media'); - $fb_url = Util::getSetting('fb_url'); + $fb_url = Settings::get('fb_url'); if ($fb_url) { $widgets->add(new FacebookWidget($smarty, $fb_url)); } // Twitter - $twitter = Util::getSetting('twitter_url'); + $twitter = Settings::get('twitter_url'); if ($twitter) { - $theme = Util::getSetting('twitter_style'); + $theme = Settings::get('twitter_style'); $widgets->add(new TwitterWidget($smarty, $twitter, $theme)); } @@ -702,7 +702,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart } // Validate user hook - $validate_action = Util::getSetting('validate_user_action'); + $validate_action = Settings::get('validate_user_action'); $validate_action = json_decode($validate_action, true); if ($validate_action['action'] == 'promote') { @@ -754,7 +754,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart } } - if (Util::getSetting('mc_integration') && Util::getSetting('status_page')) { + if (Settings::get('mc_integration') && Settings::get('status_page')) { // Add status link to navbar $cache->setCache('navbar_order'); if (!$cache->isCached('status_order')) { @@ -775,7 +775,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart } // Only add leaderboard link if there is at least one enabled placeholder and MC integration enabled - if (Util::getSetting('mc_integration') && Util::getSetting('placeholders') === '1') { + if (Settings::get('mc_integration') && Settings::get('placeholders') === '1') { $leaderboard_placeholders = Placeholders::getInstance()->getLeaderboardPlaceholders(); if (count($leaderboard_placeholders)) { @@ -801,7 +801,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart // Check page type (frontend or backend) if (defined('FRONT_END')) { // Minecraft integration? - if (Util::getSetting('mc_integration')) { + if (Settings::get('mc_integration')) { // Query main server $cache->setCache('mc_default_server'); @@ -837,7 +837,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart $full_ip = ['ip' => $default->ip . (is_null($default->port) ? '' : ':' . $default->port), 'pre' => $default->pre, 'name' => $default->name, 'id' => $default->id]; // Get query type - $query_type = Util::getSetting('query_type', 'internal'); + $query_type = Settings::get('query_type', 'internal'); if (isset($sub_servers) && count($sub_servers)) { $servers = [$full_ip]; @@ -938,7 +938,7 @@ public function onPageLoad(User $user, Pages $pages, Cache $cache, Smarty $smart 'REGISTERED_DATE' => date(DATE_FORMAT, $user_query->joined), ]); - if ($user->canBypassPrivateProfile() || (!Util::getSetting('private_profile') || !$user_query->private_profile)) { + if ($user->canBypassPrivateProfile() || (!Settings::get('private_profile') || !$user_query->private_profile)) { $smarty->assign([ 'LAST_SEEN' => $language->get('user', 'last_seen_x', [ 'lastSeenAt' => $timeago->inWords($user_query->last_online, $language), @@ -1566,7 +1566,7 @@ public static function addUserAction($title, $link): void { public function getDebugInfo(): array { $servers = []; - $group_sync_server_id = Util::getSetting('group_sync_mc_server'); + $group_sync_server_id = Settings::get('group_sync_mc_server'); foreach (DB::getInstance()->get('mc_servers', ['id', '<>', 0])->results() as $server) { $servers[(int)$server->id] = [ 'id' => (int)$server->id, @@ -1582,10 +1582,10 @@ public function getDebugInfo(): array { return [ 'minecraft' => [ - 'mc_integration' => (bool)Util::getSetting(Settings::MINECRAFT_INTEGRATION), - 'uuid_linking' => (bool)Util::getSetting('uuid_linking'), - 'username_sync' => (bool)Util::getSetting('username_sync'), - 'query_type' => Util::getSetting('query_type', 'internal'), + 'mc_integration' => (bool)Settings::get(Settings::MINECRAFT_INTEGRATION), + 'uuid_linking' => (bool)Settings::get('uuid_linking'), + 'username_sync' => (bool)Settings::get('username_sync'), + 'query_type' => Settings::get('query_type', 'internal'), 'servers' => $servers, ] ]; diff --git a/modules/Core/pages/authme_connector.php b/modules/Core/pages/authme_connector.php index acf757f8cc..a73c54c5c7 100644 --- a/modules/Core/pages/authme_connector.php +++ b/modules/Core/pages/authme_connector.php @@ -43,7 +43,7 @@ ]; // Are custom usernames enabled? - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { $to_validation['nickname'] = [ Validate::REQUIRED => true, Validate::MIN => 3, @@ -117,7 +117,7 @@ } $mcname = Output::getClean($_SESSION['authme']['username']); - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { $nickname = Input::get('nickname'); } else { $nickname = $mcname; @@ -197,7 +197,7 @@ unset($_SESSION['authme']); - if (Util::getSetting('email_verification') === '1') { + if (Settings::get('email_verification') === '1') { // Send registration email sendRegisterEmail($language, $email, $mcname, $user_id, $code); @@ -400,7 +400,7 @@ $fields = new Fields(); // Step 2 // Are custom usernames enabled? - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { $info = $language->get('user', 'authme_email_help_2'); $fields->add('nickname', Fields::TEXT, $language->get('user', 'nickname'), true, Output::getClean(Input::get('nickname'))); } else { diff --git a/modules/Core/pages/complete_signup.php b/modules/Core/pages/complete_signup.php index 971a15bfa6..eec7b35baa 100644 --- a/modules/Core/pages/complete_signup.php +++ b/modules/Core/pages/complete_signup.php @@ -24,7 +24,7 @@ } // Ensure API is enabled -if (Util::getSetting('use_api') !== '1') { +if (Settings::get('use_api') !== '1') { die('API is disabled'); } diff --git a/modules/Core/pages/home.php b/modules/Core/pages/home.php index 781157c773..9e310399fb 100644 --- a/modules/Core/pages/home.php +++ b/modules/Core/pages/home.php @@ -31,7 +31,7 @@ $smarty->assign('ERROR_TITLE', $language->get('general', 'error')); } -$home_type = Util::getSetting('home_type'); +$home_type = Settings::get('home_type'); $smarty->assign('HOME_TYPE', $home_type); @@ -40,7 +40,7 @@ require(ROOT_PATH . '/' . $module); } } else if ($home_type === 'custom') { - $smarty->assign('CUSTOM_HOME_CONTENT', Util::getSetting('home_custom_content')); + $smarty->assign('CUSTOM_HOME_CONTENT', Settings::get('home_custom_content')); } // Assign to Smarty variables diff --git a/modules/Core/pages/index.php b/modules/Core/pages/index.php index 9202b5651e..506a3a3224 100644 --- a/modules/Core/pages/index.php +++ b/modules/Core/pages/index.php @@ -10,7 +10,7 @@ */ // Home page or portal? -if (Util::getSetting('home_type') === 'portal') { +if (Settings::get('home_type') === 'portal') { require('portal.php'); } else { require('home.php'); diff --git a/modules/Core/pages/leaderboards.php b/modules/Core/pages/leaderboards.php index d15d3ead5e..43cdba603e 100644 --- a/modules/Core/pages/leaderboards.php +++ b/modules/Core/pages/leaderboards.php @@ -10,7 +10,7 @@ */ // MC integration and Placeholders enabled? -if (!Util::getSetting('mc_integration') || Util::getSetting('placeholders') !== '1') { +if (!Settings::get('mc_integration') || Settings::get('placeholders') !== '1') { require_once(ROOT_PATH . '/404.php'); die(); } diff --git a/modules/Core/pages/login.php b/modules/Core/pages/login.php index 1b44082c80..edc0613ed9 100644 --- a/modules/Core/pages/login.php +++ b/modules/Core/pages/login.php @@ -20,7 +20,7 @@ } // Get login method -$login_method = Util::getSetting('login_method'); +$login_method = Settings::get('login_method'); $captcha = CaptchaBase::isCaptchaEnabled('recaptcha_login'); @@ -160,7 +160,7 @@ // Sync AuthMe password $authme_db = Config::get('authme'); - if (Util::getSetting('mc_integration') && Util::getSetting('authme') && DB::getInstance()->get('users', ['id', $user_id])->first()->authme_sync_password) { + if (Settings::get('mc_integration') && Settings::get('authme') && DB::getInstance()->get('users', ['id', $user_id])->first()->authme_sync_password) { try { // Check user exists in database and validate password $authme_conn = DB::getCustomInstance($authme_db['address'], $authme_db['db'], $authme_db['user'], $authme_db['pass'], $authme_db['port']); @@ -251,7 +251,7 @@ $smarty->assign('EMAIL', $language->get('user', 'email')); } else if ($login_method == 'email_or_username') { $smarty->assign('USERNAME', $language->get('user', 'email_or_username')); -} else if (Util::getSetting('mc_integration')) { +} else if (Settings::get('mc_integration')) { $smarty->assign('USERNAME', $language->get('user', 'minecraft_username')); } else { $smarty->assign('USERNAME', $language->get('user', 'username')); diff --git a/modules/Core/pages/minecraft/banner.php b/modules/Core/pages/minecraft/banner.php index 4ff55fd510..befa638f7d 100644 --- a/modules/Core/pages/minecraft/banner.php +++ b/modules/Core/pages/minecraft/banner.php @@ -16,7 +16,7 @@ } // Minecraft integration? -if (Util::getSetting('mc_integration')) { +if (Settings::get('mc_integration')) { if (isset($directories[count($directories) - 1]) && !empty($directories[count($directories) - 1])) { // Server specified $banner = $directories[count($directories) - 1]; diff --git a/modules/Core/pages/panel/api.php b/modules/Core/pages/panel/api.php index a4e5203ecd..28ba2b71e5 100644 --- a/modules/Core/pages/panel/api.php +++ b/modules/Core/pages/panel/api.php @@ -31,7 +31,7 @@ $new_api_key = SecureRandom::alphanumeric(); // Update key - Util::setSetting('mc_api_key', $new_api_key); + Settings::set('mc_api_key', $new_api_key); // Cache file_put_contents(ROOT_PATH . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . sha1('apicache') . '.cache', $new_api_key); @@ -41,11 +41,11 @@ Redirect::to(URL::build('/panel/core/api')); } - Util::setSetting('use_api', Input::get('enable_api')); + Settings::set('use_api', Input::get('enable_api')); // Update Username sync $username_sync = isset($_POST['username_sync']) && $_POST['username_sync'] == 'on' ? '1' : '0'; - Util::setSetting('username_sync', $username_sync); + Settings::set('username_sync', $username_sync); Session::flash('api_success', $language->get('admin', 'api_settings_updated_successfully')); Redirect::to(URL::build('/panel/core/api')); @@ -172,7 +172,7 @@ if (!isset($_GET['view'])) { // Is the API enabled? - $api_enabled = Util::getSetting('use_api'); + $api_enabled = Settings::get('use_api'); $smarty->assign( [ @@ -191,7 +191,7 @@ 'ENABLE_API' => $language->get('admin', 'enable_api'), 'API_ENABLED' => $api_enabled, 'API_KEY' => $language->get('admin', 'api_key'), - 'API_KEY_VALUE' => Util::getSetting('mc_api_key'), + 'API_KEY_VALUE' => Settings::get('mc_api_key'), 'API_KEY_REGEN_URL' => URL::build('/panel/core/api/', 'action=api_regen'), 'ARE_YOU_SURE' => $language->get('general', 'are_you_sure'), 'CONFIRM_API_REGEN' => $language->get('admin', 'confirm_api_regen'), @@ -204,7 +204,7 @@ 'COPY' => $language->get('admin', 'copy'), 'USERNAME_SYNC' => $language->get('admin', 'enable_username_sync'), 'USERNAME_SYNC_INFO' => $language->get('admin', 'enable_username_sync_info'), - 'USERNAME_SYNC_VALUE' => Util::getSetting('username_sync') === '1', + 'USERNAME_SYNC_VALUE' => Settings::get('username_sync') === '1', 'TOKEN' => Token::get(), 'SUBMIT' => $language->get('general', 'submit'), 'COPIED' => $language->get('general', 'copied'), diff --git a/modules/Core/pages/panel/avatars.php b/modules/Core/pages/panel/avatars.php index 158c720d95..73afcfb58c 100644 --- a/modules/Core/pages/panel/avatars.php +++ b/modules/Core/pages/panel/avatars.php @@ -25,10 +25,10 @@ if (Token::check()) { if (isset($_POST['avatar_source'])) { try { - Util::setSetting('user_avatars', $custom_avatars = (isset($_POST['custom_avatars']) && $_POST['custom_avatars']) ? '1' : '0'); - Util::setSetting('default_avatar_type', Input::get('default_avatar')); - Util::setSetting('avatar_site', Input::get('avatar_source')); - Util::setSetting('avatar_type', Input::get('avatar_perspective')); + Settings::set('user_avatars', $custom_avatars = (isset($_POST['custom_avatars']) && $_POST['custom_avatars']) ? '1' : '0'); + Settings::set('default_avatar_type', Input::get('default_avatar')); + Settings::set('avatar_site', Input::get('avatar_source')); + Settings::set('avatar_type', Input::get('avatar_perspective')); $cache->setCache('avatar_settings_cache'); $cache->store('custom_avatars', $custom_avatars); @@ -42,7 +42,7 @@ if (isset($_POST['avatar'])) { // Selecting a new default avatar try { - Util::setSetting('custom_default_avatar', Input::get('avatar')); + Settings::set('custom_default_avatar', Input::get('avatar')); $cache->setCache('avatar_settings_cache'); $cache->store('default_avatar_image', Input::get('avatar')); } catch (Exception $e) { @@ -114,14 +114,14 @@ 'CUSTOM_AVATARS' => $language->get('admin', 'allow_custom_avatars'), 'CUSTOM_AVATARS_VALUE' => defined('CUSTOM_AVATARS'), 'DEFAULT_AVATAR' => $language->get('admin', 'default_avatar'), - 'DEFAULT_AVATAR_VALUE' => Util::getSetting('default_avatar_type'), + 'DEFAULT_AVATAR_VALUE' => Settings::get('default_avatar_type'), 'MINECRAFT_AVATAR' => $language->get('admin', 'minecraft_avatar'), 'CUSTOM_AVATAR' => $language->get('admin', 'custom_avatar'), 'MINECRAFT_AVATAR_SOURCE' => $language->get('admin', 'minecraft_avatar_source'), 'MINECRAFT_AVATAR_VALUES' => AvatarSource::getAllSourceNames(), - 'MINECRAFT_AVATAR_VALUE' => Util::getSetting('avatar_site'), + 'MINECRAFT_AVATAR_VALUE' => Settings::get('avatar_site'), 'MINECRAFT_AVATAR_PERSPECTIVE' => $language->get('admin', 'minecraft_avatar_perspective'), - 'MINECRAFT_AVATAR_PERSPECTIVE_VALUE' => Util::getSetting('avatar_type'), + 'MINECRAFT_AVATAR_PERSPECTIVE_VALUE' => Settings::get('avatar_type'), 'MINECRAFT_AVATAR_PERSPECTIVE_VALUES' => AvatarSource::getAllPerspectives(), 'HEAD' => $language->get('admin', 'head'), 'FACE' => $language->get('admin', 'face'), @@ -129,7 +129,7 @@ 'SELECT_DEFAULT_AVATAR' => $language->get('admin', 'select_default_avatar'), 'IMAGES' => $template_images, 'NO_AVATARS' => $language->get('admin', 'no_avatars_available'), - 'DEFAULT_AVATAR_IMAGE' => Util::getSetting('custom_default_avatar'), + 'DEFAULT_AVATAR_IMAGE' => Settings::get('custom_default_avatar'), 'UPLOAD_NEW_IMAGE' => $language->get('admin', 'upload_new_image'), 'UPLOAD_FORM_ACTION' => (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/core/includes/image_upload.php', 'DRAG_FILES_HERE' => $language->get('admin', 'drag_files_here'), diff --git a/modules/Core/pages/panel/debugging_and_maintenance.php b/modules/Core/pages/panel/debugging_and_maintenance.php index 2d483b159e..df95e28f76 100644 --- a/modules/Core/pages/panel/debugging_and_maintenance.php +++ b/modules/Core/pages/panel/debugging_and_maintenance.php @@ -36,16 +36,16 @@ if ($validation->passed()) { // Update database // Is debug mode enabled or not? - Util::setSetting('error_reporting', (isset($_POST['enable_debugging']) && $_POST['enable_debugging']) ? '1' : '0'); + Settings::set('error_reporting', (isset($_POST['enable_debugging']) && $_POST['enable_debugging']) ? '1' : '0'); // Maintenance mode - Util::setSetting('maintenance', (isset($_POST['enable_maintenance']) && $_POST['enable_maintenance']) ? '1' : '0'); - Util::setSetting('maintenance_message', (isset($_POST['message']) && !empty($_POST['message'])) ? $_POST['message'] : 'Maintenance mode is enabled.'); + Settings::set('maintenance', (isset($_POST['enable_maintenance']) && $_POST['enable_maintenance']) ? '1' : '0'); + Settings::set('maintenance_message', (isset($_POST['message']) && !empty($_POST['message'])) ? $_POST['message'] : 'Maintenance mode is enabled.'); // Log::getInstance()->log(Log::Action('admin/core/maintenance/update')); // Page load timer - Util::setSetting('page_loading', isset($_POST['enable_page_load_timer']) && $_POST['enable_page_load_timer'] == 1 ? '1' : '0'); + Settings::set('page_loading', isset($_POST['enable_page_load_timer']) && $_POST['enable_page_load_timer'] == 1 ? '1' : '0'); // Reload to update debugging Session::flash('debugging_success', $language->get('admin', 'debugging_settings_updated_successfully')); @@ -94,11 +94,11 @@ 'ENABLE_DEBUG_MODE' => $language->get('admin', 'enable_debug_mode'), 'ENABLE_DEBUG_MODE_VALUE' => (defined('DEBUGGING') ? DEBUGGING : 0), 'ENABLE_MAINTENANCE_MODE' => $language->get('admin', 'enable_maintenance_mode'), - 'ENABLE_MAINTENANCE_MODE_VALUE' => Util::getSetting('maintenance'), + 'ENABLE_MAINTENANCE_MODE_VALUE' => Settings::get('maintenance'), 'ENABLE_PAGE_LOAD_TIMER' => $language->get('admin', 'enable_page_load_timer'), - 'ENABLE_PAGE_LOAD_TIMER_VALUE' => Util::getSetting('page_loading'), + 'ENABLE_PAGE_LOAD_TIMER_VALUE' => Settings::get('page_loading'), 'MAINTENANCE_MODE_MESSAGE' => $language->get('admin', 'maintenance_mode_message'), - 'MAINTENANCE_MODE_MESSAGE_VALUE' => Output::getPurified(Util::getSetting('maintenance_message')), + 'MAINTENANCE_MODE_MESSAGE_VALUE' => Output::getPurified(Settings::get('maintenance_message')), 'CANCEL' => $language->get('general', 'cancel'), 'DEBUG_LINK' => $language->get('admin', 'debug_link'), 'DEBUG_LINK_INFO' => $language->get('admin', 'debug_link_info'), diff --git a/modules/Core/pages/panel/emails.php b/modules/Core/pages/panel/emails.php index a325f36672..275b8dcc97 100644 --- a/modules/Core/pages/panel/emails.php +++ b/modules/Core/pages/panel/emails.php @@ -155,10 +155,10 @@ Session::flash('emails_success', $language->get('admin', 'email_settings_updated_successfully')); Redirect::to(URL::build('/panel/core/emails', 'action=edit_messages')); } else { - Util::setSetting('phpmailer', (isset($_POST['enable_mailer']) && $_POST['enable_mailer']) ? '1' : '0'); + Settings::set('phpmailer', (isset($_POST['enable_mailer']) && $_POST['enable_mailer']) ? '1' : '0'); if (!empty($_POST['email'])) { - Util::setSetting('outgoing_email', $_POST['email']); + Settings::set('outgoing_email', $_POST['email']); } if ($_POST['port'] && !is_numeric($_POST['port'])) { @@ -202,7 +202,7 @@ 'EMAIL_ERRORS' => $language->get('admin', 'email_errors'), 'EMAIL_ERRORS_LINK' => URL::build('/panel/core/emails/errors'), 'ENABLE_MAILER' => $language->get('admin', 'use_external_mail_server'), - 'ENABLE_MAILER_VALUE' => Util::getSetting('phpmailer'), + 'ENABLE_MAILER_VALUE' => Settings::get('phpmailer'), 'INFO' => $language->get('general', 'info'), 'ENABLE_MAILER_HELP' => $language->get('admin', 'enable_mailer_help', [ 'docLinkStart' => "", @@ -210,7 +210,7 @@ ]), 'OUTGOING_EMAIL' => $language->get('admin', 'outgoing_email'), 'OUTGOING_EMAIL_INFO' => $language->get('admin', 'outgoing_email_info'), - 'OUTGOING_EMAIL_VALUE' => Output::getClean(Util::getSetting('outgoing_email')), + 'OUTGOING_EMAIL_VALUE' => Output::getClean(Settings::get('outgoing_email')), 'USERNAME' => $language->get('user', 'username'), 'USERNAME_VALUE' => Output::getClean(Config::get('email.username', '')), 'PASSWORD' => $language->get('user', 'password'), diff --git a/modules/Core/pages/panel/emails_mass_message.php b/modules/Core/pages/panel/emails_mass_message.php index 97ab5eee70..d1e29fac65 100644 --- a/modules/Core/pages/panel/emails_mass_message.php +++ b/modules/Core/pages/panel/emails_mass_message.php @@ -72,8 +72,8 @@ } } -$php_mailer = Util::getSetting('phpmailer'); -$outgoing_email = Util::getSetting('outgoing_email'); +$php_mailer = Settings::get('phpmailer'); +$outgoing_email = Settings::get('outgoing_email'); $smarty->assign([ 'SENDING_MASS_MESSAGE' => $language->get('admin', 'sending_mass_message'), diff --git a/modules/Core/pages/panel/general_settings.php b/modules/Core/pages/panel/general_settings.php index 8e9d2545a1..bebd0a7afb 100644 --- a/modules/Core/pages/panel/general_settings.php +++ b/modules/Core/pages/panel/general_settings.php @@ -80,10 +80,10 @@ if ($validation->passed()) { // Update settings // Sitename - Util::setSetting('sitename', Input::get('sitename')); + Settings::set('sitename', Input::get('sitename')); // Email address - Util::setSetting('incoming_email', Input::get('contact_email')); + Settings::set('incoming_email', Input::get('contact_email')); // Language // Get current default language @@ -105,7 +105,7 @@ // Timezone try { - Util::setSetting('timezone', $_POST['timezone']); + Settings::set('timezone', $_POST['timezone']); } catch (Exception $e) { $errors = [$e->getMessage()]; } @@ -120,16 +120,16 @@ } // TODO allow to select a custom page to use content as homepage - Util::setSetting('home_type', $home_type); + Settings::set('home_type', $home_type); // Private profile - Util::setSetting('private_profile', $_POST['privateProfile'] ? '1' : '0'); + Settings::set('private_profile', $_POST['privateProfile'] ? '1' : '0'); // Registration displaynames - Util::setSetting('displaynames', (isset($_POST['displaynames']) && $_POST['displaynames'] == 'true') ? '1' : '0'); + Settings::set('displaynames', (isset($_POST['displaynames']) && $_POST['displaynames'] == 'true') ? '1' : '0'); // Emoji style - Util::setSetting('emoji_style', $_POST['emoji_style']); + Settings::set('emoji_style', $_POST['emoji_style']); // Friendly URLs $friendly = Input::get('friendlyURL') == 'true'; @@ -160,10 +160,10 @@ } // Login method - Util::setSetting('login_method', $_POST['login_method']); + Settings::set('login_method', $_POST['login_method']); // Auto language - Util::setSetting('auto_language_detection', $_POST['auto_language'] === 'true' ? 1 : 0); + Settings::set('auto_language_detection', $_POST['auto_language'] === 'true' ? 1 : 0); Log::getInstance()->log(Log::Action('admin/core/general')); @@ -209,7 +209,7 @@ } // Get form values -$contact_email = Output::getClean(Util::getSetting('incoming_email')); +$contact_email = Output::getClean(Settings::get('incoming_email')); $languages = DB::getInstance()->get('languages', ['id', '<>', 0])->results(); $count = count($languages); @@ -220,10 +220,10 @@ } } -$timezone = Util::getSetting('timezone'); -$private_profile = Util::getSetting('private_profile'); -$displaynames = Util::getSetting('displaynames'); -$method = Util::getSetting('login_method'); +$timezone = Settings::get('timezone'); +$private_profile = Settings::get('private_profile'); +$displaynames = Settings::get('displaynames'); +$method = Settings::get('login_method'); $smarty->assign([ 'PARENT_PAGE' => PARENT_PAGE, @@ -258,7 +258,7 @@ 'HOMEPAGE_NEWS' => $language->get('admin', 'homepage_news'), 'HOMEPAGE_PORTAL' => $language->get('admin', 'portal'), 'HOMEPAGE_CUSTOM' => $language->get('admin', 'custom_content'), - 'HOMEPAGE_VALUE' => Util::getSetting('home_type'), + 'HOMEPAGE_VALUE' => Settings::get('home_type'), 'USE_FRIENDLY_URLS' => $language->get('admin', 'use_friendly_urls'), 'USE_FRIENDLY_URLS_VALUE' => Config::get('core.friendly'), 'USE_FRIENDLY_URLS_HELP' => $language->get('admin', 'use_friendly_urls_help', [ @@ -287,11 +287,11 @@ 'twemojiExample' => Text::renderEmojis('😀', 'twemoji'), 'joypixelsExample' => Text::renderEmojis('😀', 'joypixels'), ]), - 'EMOJI_STYLE_VALUE' => Util::getSetting('emoji_style', 'twemoji'), + 'EMOJI_STYLE_VALUE' => Settings::get('emoji_style', 'twemoji'), 'NATIVE' => $language->get('admin', 'emoji_native'), 'TWEMOJI' => $language->get('admin', 'emoji_twemoji'), 'JOYPIXELS' => $language->get('admin', 'emoji_joypixels'), - 'AUTO_LANGUAGE_VALUE' => Util::getSetting('auto_language_detection'), + 'AUTO_LANGUAGE_VALUE' => Settings::get('auto_language_detection'), 'ENABLE_AUTO_LANGUAGE' => $language->get('admin', 'enable_auto_language'), 'AUTO_LANGUAGE_HELP' => $language->get('admin', 'auto_language_help'), ]); diff --git a/modules/Core/pages/panel/minecraft.php b/modules/Core/pages/panel/minecraft.php index 9d90d884fe..656a530536 100644 --- a/modules/Core/pages/panel/minecraft.php +++ b/modules/Core/pages/panel/minecraft.php @@ -27,9 +27,9 @@ // Process input if (isset($_POST['enable_minecraft'])) { // Either enable or disable Minecraft integration - Util::setSetting(Settings::MINECRAFT_INTEGRATION, Input::get('enable_minecraft')); + Settings::set(Settings::MINECRAFT_INTEGRATION, Input::get('enable_minecraft')); } else if (isset($_POST['premium'])) { - Util::setSetting('uuid_linking', Input::get('enable_premium_accounts')); + Settings::set('uuid_linking', Input::get('enable_premium_accounts')); } } else { // Invalid token @@ -55,8 +55,8 @@ } // Check if Minecraft integration is enabled -$minecraft_enabled = Util::getSetting(Settings::MINECRAFT_INTEGRATION); -$uuid_linking = Util::getSetting('uuid_linking'); +$minecraft_enabled = Settings::get(Settings::MINECRAFT_INTEGRATION); +$uuid_linking = Settings::get('uuid_linking'); $smarty->assign([ 'PARENT_PAGE' => PARENT_PAGE, diff --git a/modules/Core/pages/panel/minecraft_authme.php b/modules/Core/pages/panel/minecraft_authme.php index 46e0a9f113..9306db059d 100644 --- a/modules/Core/pages/panel/minecraft_authme.php +++ b/modules/Core/pages/panel/minecraft_authme.php @@ -28,7 +28,7 @@ if (Token::check()) { if (isset($_POST['enable_authme'])) { // Either enable or disable Authme integration - Util::setSetting('authme', Input::get('enable_authme')); + Settings::set('authme', Input::get('enable_authme')); } else { // AuthMe config settings $validation = Validate::check($_POST, [ @@ -105,7 +105,7 @@ } // Is AuthMe enabled? -if (Util::getSetting('authme')) { +if (Settings::get('authme')) { // Retrieve AuthMe database details $authme_db = Config::get('authme', []); @@ -137,7 +137,7 @@ 'AUTHME_INFO' => $language->get('admin', 'authme_integration_info'), 'INFO' => $language->get('general', 'info'), 'ENABLE_AUTHME' => $language->get('admin', 'enable_authme'), - 'ENABLE_AUTHME_VALUE' => (Util::getSetting('authme') == '1'), + 'ENABLE_AUTHME_VALUE' => (Settings::get('authme') == '1'), 'AUTHME' => $language->get('admin', 'authme_integration'), 'MINECRAFT_LINK' => URL::build('/panel/minecraft') ]); diff --git a/modules/Core/pages/panel/minecraft_servers.php b/modules/Core/pages/panel/minecraft_servers.php index 8fee81154a..b8b5005a75 100644 --- a/modules/Core/pages/panel/minecraft_servers.php +++ b/modules/Core/pages/panel/minecraft_servers.php @@ -182,7 +182,7 @@ $available_parent_servers = DB::getInstance()->get('mc_servers', ['parent_server', 0])->results(); // Display query information alert only if external query is selected - $query_type = Util::getSetting('query_type', 'internal'); + $query_type = Settings::get('query_type', 'internal'); if ($query_type === 'external') { $smarty->assign('SERVER_QUERY_INFORMATION', $language->get('admin', 'server_query_information')); } @@ -391,7 +391,7 @@ $available_parent_servers = DB::getInstance()->get('mc_servers', ['parent_server', 0])->results(); // Display query information alert only if external query is selected - $query_type = Util::getSetting('query_type', 'internal'); + $query_type = Settings::get('query_type', 'internal'); if ($query_type == 'external') { $smarty->assign('SERVER_QUERY_INFORMATION', $language->get('admin', 'server_query_information')); @@ -532,22 +532,22 @@ } // Group sync server - Util::setSetting('group_sync_mc_server', $new_group_sync_server); + Settings::set('group_sync_mc_server', $new_group_sync_server); // Query type - Util::setSetting('query_type', $query_type); + Settings::set('query_type', $query_type); // Player list limit if ($player_list_limit != null) { // In case the field is hidden, we don't want to change this value - Util::setSetting('player_list_limit', $player_list_limit); + Settings::set('player_list_limit', $player_list_limit); } // Status page - Util::setSetting('status_page', $status); + Settings::set('status_page', $status); // Query interval if (isset($_POST['interval']) && is_numeric($_POST['interval']) && $_POST['interval'] <= 60 && $_POST['interval'] >= 5) { - Util::setSetting('minecraft_query_interval', $_POST['interval']); + Settings::set('minecraft_query_interval', $_POST['interval']); } $success = $language->get('admin', 'minecraft_settings_updated_successfully'); @@ -589,10 +589,10 @@ } // Settings - $query_type = Util::getSetting('query_type', 'internal'); - $status_page = Util::getSetting('status_page'); - $group_sync_server = Util::getSetting('group_sync_mc_server'); - $player_list_limit = Util::getSetting('player_list_limit', '20'); + $query_type = Settings::get('query_type', 'internal'); + $status_page = Settings::get('status_page'); + $group_sync_server = Settings::get('group_sync_mc_server'); + $player_list_limit = Settings::get('player_list_limit', '20'); $smarty->assign([ 'NEW_SERVER' => $language->get('admin', 'add_server'), @@ -615,7 +615,7 @@ 'INTERNAL' => $language->get('admin', 'internal'), 'EXTERNAL' => $language->get('admin', 'external'), 'PLUGIN' => $language->get('admin', 'plugin'), - 'QUERY_INTERVAL_VALUE' => Util::getSetting('minecraft_query_interval'), + 'QUERY_INTERVAL_VALUE' => Settings::get('minecraft_query_interval'), 'EXTERNAL_QUERY' => $language->get('admin', 'external_query'), 'INFO' => $language->get('general', 'info'), 'QUERY_TYPE_INFO' => $language->get('admin', 'query_type_help'), diff --git a/modules/Core/pages/panel/placeholders.php b/modules/Core/pages/panel/placeholders.php index 549eb25bbf..49d4cae809 100644 --- a/modules/Core/pages/panel/placeholders.php +++ b/modules/Core/pages/panel/placeholders.php @@ -93,7 +93,7 @@ if (Input::get('action') === 'settings') { // Update placeholders value - Util::setSetting('placeholders', (isset($_POST['placeholders_enabled']) && $_POST['placeholders_enabled'] == 'on') ? '1' : '0'); + Settings::set('placeholders', (isset($_POST['placeholders_enabled']) && $_POST['placeholders_enabled'] == 'on') ? '1' : '0'); foreach ($all_placeholders as $placeholder) { $friendly_name_input = Input::get('friendly_name-' . $placeholder->name . '-server-' . $placeholder->server_id); @@ -161,7 +161,7 @@ 'MINECRAFT' => $language->get('admin', 'minecraft'), 'MINECRAFT_LINK' => URL::build('/panel/minecraft'), 'ENABLE_PLACEHOLDERS' => $language->get('admin', 'enable_placeholders'), - 'ENABLE_PLACEHOLDERS_VALUE' => Util::getSetting('placeholders') === '1', + 'ENABLE_PLACEHOLDERS_VALUE' => Settings::get('placeholders') === '1', 'DELETE' => $language->get('admin', 'delete'), 'CONFIRM_DELETE_PLACEHOLDER' => $language->get('admin', 'confirm_delete_placeholder'), 'ARE_YOU_SURE' => $language->get('general', 'are_you_sure'), diff --git a/modules/Core/pages/panel/privacy_and_terms.php b/modules/Core/pages/panel/privacy_and_terms.php index 339815f643..372beff36c 100644 --- a/modules/Core/pages/panel/privacy_and_terms.php +++ b/modules/Core/pages/panel/privacy_and_terms.php @@ -100,14 +100,14 @@ // Get privacy policy + terms $site_terms = DB::getInstance()->get('privacy_terms', ['name', 'terms'])->results(); if (!count($site_terms)) { - $site_terms = Util::getSetting('t_and_c_site'); + $site_terms = Settings::get('t_and_c_site'); } else { $site_terms = $site_terms[0]->value; } $site_privacy = DB::getInstance()->get('privacy_terms', ['name', 'privacy'])->results(); if (!count($site_privacy)) { - $site_privacy = Util::getSetting('privacy_policy'); + $site_privacy = Settings::get('privacy_policy'); } else { $site_privacy = $site_privacy[0]->value; } diff --git a/modules/Core/pages/panel/queue.php b/modules/Core/pages/panel/queue.php index 0d53c14bca..f6df3e122e 100644 --- a/modules/Core/pages/panel/queue.php +++ b/modules/Core/pages/panel/queue.php @@ -259,8 +259,8 @@ ]); if ($validation->passed()) { - Util::setSetting('queue_runner', Input::get('runner')); - Util::setSetting('queue_interval', floatval(Input::get('interval'))); + Settings::set('queue_runner', Input::get('runner')); + Settings::set('queue_interval', floatval(Input::get('interval'))); Session::flash('queue_success', $language->get('user', 'settings_updated_successfully')); } else { @@ -279,19 +279,19 @@ $runners = [ [ 'label' => $language->get('admin', 'queue_runner_ajax'), - 'selected' => Util::getSetting('queue_runner') == 'ajax', + 'selected' => Settings::get('queue_runner') == 'ajax', 'value' => 'ajax', ], [ 'label' => $language->get('admin', 'queue_runner_cron'), - 'selected' => Util::getSetting('queue_runner') == 'cron', + 'selected' => Settings::get('queue_runner') == 'cron', 'value' => 'cron', ], ]; - if (!($cron_key = Util::getSetting('cron_key'))) { + if (!($cron_key = Settings::get('cron_key'))) { $cron_key = SecureRandom::alphanumeric(); - Util::setSetting('cron_key', $cron_key); + Settings::set('cron_key', $cron_key); } $smarty->assign([ @@ -300,7 +300,7 @@ 'QUEUE_INFO' => $language->get('admin', 'queue_info'), 'QUEUE_CRON_URL' => rtrim(URL::getSelfURL(), '/') . URL::build('/queries/queue', 'cron&key=' . $cron_key), 'QUEUE_INTERVAL' => $language->get('admin', 'queue_interval'), - 'QUEUE_INTERVAL_VALUE' => Util::getSetting('queue_interval', 1), + 'QUEUE_INTERVAL_VALUE' => Settings::get('queue_interval', 1), 'QUEUE_RUNNER' => $language->get('admin', 'queue_runner'), 'QUEUE_RUNNERS' => $runners, 'QUEUE_STATUS_LINK' => URL::build('/panel/core/queue', 'view=status'), diff --git a/modules/Core/pages/panel/registration.php b/modules/Core/pages/panel/registration.php index f96268e278..91bbda8baa 100644 --- a/modules/Core/pages/panel/registration.php +++ b/modules/Core/pages/panel/registration.php @@ -30,7 +30,7 @@ // Process input if (isset($_POST['enable_registration'])) { // Either enable or disable registration - Util::setSetting('registration_enabled', Input::get('enable_registration')); + Settings::set('registration_enabled', Input::get('enable_registration')); } else { // Registration settings @@ -50,13 +50,13 @@ } else { // Email verification - Util::setSetting('email_verification', (isset($_POST['verification']) && $_POST['verification'] == 'on') ? '1' : '0'); + Settings::set('email_verification', (isset($_POST['verification']) && $_POST['verification'] == 'on') ? '1' : '0'); // Registration disabled message - Util::setSetting('registration_disabled_message', (isset($_POST['message']) && !empty($_POST['message'])) ? $_POST['message'] : 'Website registration is disabled.'); + Settings::set('registration_disabled_message', (isset($_POST['message']) && !empty($_POST['message'])) ? $_POST['message'] : 'Website registration is disabled.'); // reCAPTCHA type - Util::setSetting('recaptcha_type', Input::get('captcha_type')); + Settings::set('recaptcha_type', Input::get('captcha_type')); // Validate captcha key and secret key if (!empty(Input::get('recaptcha_key')) || !empty(Input::get('recaptcha_secret')) || Input::get('enable_recaptcha') == 1 || Input::get('enable_recaptcha_login') == 1) { @@ -69,16 +69,16 @@ ]); } - Util::setSetting('recaptcha_key', Input::get('recaptcha')); - Util::setSetting('recaptcha_secret', Input::get('recaptcha_secret')); + Settings::set('recaptcha_key', Input::get('recaptcha')); + Settings::set('recaptcha_secret', Input::get('recaptcha_secret')); } else if (empty(Input::get('recaptcha_key')) && empty(Input::get('recaptcha_secret'))) { - Util::setSetting('recaptcha_key', ''); - Util::setSetting('recaptcha_secret', ''); + Settings::set('recaptcha_key', ''); + Settings::set('recaptcha_secret', ''); } - Util::setSetting('recaptcha', (isset($_POST['enable_recaptcha']) && $_POST['enable_recaptcha'] == '1') ? '1' : '0'); - Util::setSetting('recaptcha_login', (isset($_POST['enable_recaptcha_login']) && $_POST['enable_recaptcha_login'] == '1') ? '1' : '0'); + Settings::set('recaptcha', (isset($_POST['enable_recaptcha']) && $_POST['enable_recaptcha'] == '1') ? '1' : '0'); + Settings::set('recaptcha_login', (isset($_POST['enable_recaptcha_login']) && $_POST['enable_recaptcha_login'] == '1') ? '1' : '0'); // Config value if (Input::get('enable_recaptcha') == 1 || Input::get('enable_recaptcha_login') == 1) { @@ -90,9 +90,9 @@ } // Validation group - $validation_action = json_decode(Util::getSetting('validate_user_action'), true); + $validation_action = json_decode(Settings::get('validate_user_action'), true); $new_value = json_encode(['action' => $validation_action['action'] ?? 'promote', 'group' => $_POST['promote_group']]); - Util::setSetting('validate_user_action', $new_value); + Settings::set('validate_user_action', $new_value); } } @@ -135,16 +135,16 @@ } // Check if registration is enabled -$registration_enabled = Util::getSetting('registration_enabled'); +$registration_enabled = Settings::get('registration_enabled'); // Validation group -$validation_group = Util::getSetting('validate_user_action'); +$validation_group = Settings::get('validate_user_action'); $validation_group = json_decode($validation_group, true); $validation_group = $validation_group['group'] ?? 1; $all_captcha_options = CaptchaBase::getAllProviders(); $captcha_options = []; -$active_option = Util::getSetting('recaptcha_type'); +$active_option = Settings::get('recaptcha_type'); $active_option_name = $active_option ?: ''; foreach ($all_captcha_options as $option) { @@ -169,19 +169,19 @@ $smarty->assign([ 'EMAIL_VERIFICATION' => $language->get('admin', 'email_verification'), - 'EMAIL_VERIFICATION_VALUE' => Util::getSetting('email_verification') === '1', + 'EMAIL_VERIFICATION_VALUE' => Settings::get('email_verification') === '1', 'CAPTCHA_GENERAL' => $language->get('admin', 'captcha_general'), - 'CAPTCHA_GENERAL_VALUE' => Util::getSetting('recaptcha'), + 'CAPTCHA_GENERAL_VALUE' => Settings::get('recaptcha'), 'CAPTCHA_LOGIN' => $language->get('admin', 'captcha_login'), - 'CAPTCHA_LOGIN_VALUE' => Util::getSetting('recaptcha_login'), + 'CAPTCHA_LOGIN_VALUE' => Settings::get('recaptcha_login'), 'CAPTCHA_TYPE' => $language->get('admin', 'captcha_type'), - 'CAPTCHA_TYPE_VALUE' => Util::getSetting('recaptcha_type', 'Recaptcha2'), + 'CAPTCHA_TYPE_VALUE' => Settings::get('recaptcha_type', 'Recaptcha2'), 'CAPTCHA_SITE_KEY' => $language->get('admin', 'captcha_site_key'), - 'CAPTCHA_SITE_KEY_VALUE' => Output::getClean(Util::getSetting('recaptcha_key')), + 'CAPTCHA_SITE_KEY_VALUE' => Output::getClean(Settings::get('recaptcha_key')), 'CAPTCHA_SECRET_KEY' => $language->get('admin', 'captcha_secret_key'), - 'CAPTCHA_SECRET_KEY_VALUE' => Output::getClean(Util::getSetting('recaptcha_secret')), + 'CAPTCHA_SECRET_KEY_VALUE' => Output::getClean(Settings::get('recaptcha_secret')), 'REGISTRATION_DISABLED_MESSAGE' => $language->get('admin', 'registration_disabled_message'), - 'REGISTRATION_DISABLED_MESSAGE_VALUE' => Output::getPurified(Util::getSetting('registration_disabled_message')), + 'REGISTRATION_DISABLED_MESSAGE_VALUE' => Output::getPurified(Settings::get('registration_disabled_message')), 'VALIDATE_PROMOTE_GROUP' => $language->get('admin', 'validation_promote_group'), 'VALIDATE_PROMOTE_GROUP_INFO' => $language->get('admin', 'validation_promote_group_info'), 'INFO' => $language->get('general', 'info'), diff --git a/modules/Core/pages/panel/seo.php b/modules/Core/pages/panel/seo.php index c1ce85f59b..6cff9eaecf 100644 --- a/modules/Core/pages/panel/seo.php +++ b/modules/Core/pages/panel/seo.php @@ -62,7 +62,7 @@ $success = $language->get('admin', 'sitemap_generated'); } else { if (Input::get('type') == 'google_analytics') { - Util::setSetting('ga_script', Input::get('analyticsid')); + Settings::set('ga_script', Input::get('analyticsid')); $success = $language->get('admin', 'seo_settings_updated_successfully'); } } @@ -226,7 +226,7 @@ 'PAGE' => PANEL_PAGE, 'TOKEN' => Token::get(), 'GENERATE' => $language->get('admin', 'generate_sitemap'), - 'GOOGLE_ANALYTICS_VALUE' => Util::getSetting('ga_script'), + 'GOOGLE_ANALYTICS_VALUE' => Settings::get('ga_script'), 'PAGE_TITLE' => $language->get('admin', 'page'), 'PAGE_LIST' => $pages->returnPages(), 'EDIT_LINK' => URL::build('/panel/core/seo/', 'metadata={x}'), diff --git a/modules/Core/pages/panel/social_media.php b/modules/Core/pages/panel/social_media.php index c4d16111b3..3cd34b5b54 100644 --- a/modules/Core/pages/panel/social_media.php +++ b/modules/Core/pages/panel/social_media.php @@ -27,10 +27,10 @@ if (Token::check()) { // Update database values // Youtube URL - Util::setSetting('youtube_url', Input::get('youtubeurl')); + Settings::set('youtube_url', Input::get('youtubeurl')); // Twitter URL - Util::setSetting('twitter_url', Input::get('twitterurl')); + Settings::set('twitter_url', Input::get('twitterurl')); // Twitter dark theme if (isset($_POST['twitter_dark_theme']) && $_POST['twitter_dark_theme'] == 1) { @@ -39,10 +39,10 @@ $theme = 'light'; } - Util::setSetting('twitter_style', $theme); + Settings::set('twitter_style', $theme); // Facebook URL - Util::setSetting('fb_url', Input::get('fburl')); + Settings::set('fb_url', Input::get('fburl')); Session::flash('social_success', $language->get('admin', 'social_media_settings_updated')); Redirect::to(URL::build('/panel/core/social_media')); @@ -74,10 +74,10 @@ } // Get values from database -$youtube_url = Util::getSetting('youtube_url'); -$twitter_url = Util::getSetting('twitter_url'); -$twitter_style = Util::getSetting('twitter_style'); -$fb_url = Util::getSetting('fb_url'); +$youtube_url = Settings::get('youtube_url'); +$twitter_url = Settings::get('twitter_url'); +$twitter_style = Settings::get('twitter_style'); +$fb_url = Settings::get('fb_url'); $smarty->assign([ 'PARENT_PAGE' => PARENT_PAGE, diff --git a/modules/Core/pages/panel/users_edit.php b/modules/Core/pages/panel/users_edit.php index 73dffa77d0..107d88172b 100644 --- a/modules/Core/pages/panel/users_edit.php +++ b/modules/Core/pages/panel/users_edit.php @@ -139,7 +139,7 @@ if ($validation->passed() && $passed) { try { - $private_profile_active = Util::getSetting('private_profile'); + $private_profile_active = Settings::get('private_profile'); $private_profile = 0; if ($private_profile_active) { @@ -161,7 +161,7 @@ // Nicknames? $username = Input::get('username'); - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { $nickname = Input::get('nickname'); } else { $nickname = Input::get('username'); @@ -322,7 +322,7 @@ $limit_groups = true; } -$private_profile = Util::getSetting('private_profile'); +$private_profile = Settings::get('private_profile'); $templates = []; $templates_query = DB::getInstance()->get('templates', ['enabled', 1])->results(); @@ -384,7 +384,7 @@ 'BACK' => $language->get('general', 'back'), 'ACTIONS' => $language->get('general', 'actions'), 'USER_ID' => Output::getClean($user_query->id), - 'DISPLAYNAMES' => Util::getSetting('displaynames') === '1', + 'DISPLAYNAMES' => Settings::get('displaynames') === '1', 'USERNAME' => $language->get('user', 'username'), 'USERNAME_VALUE' => Output::getClean($user_query->username), 'NICKNAME' => $language->get('user', 'nickname'), diff --git a/modules/Core/pages/privacy.php b/modules/Core/pages/privacy.php index 2cb027762a..72e48f76bb 100644 --- a/modules/Core/pages/privacy.php +++ b/modules/Core/pages/privacy.php @@ -17,7 +17,7 @@ // Retrieve privacy policy from database $policy = DB::getInstance()->get('privacy_terms', ['name', 'privacy'])->results(); if (!count($policy)) { - $policy = Output::getPurified(Util::getSetting('privacy_policy')); + $policy = Output::getPurified(Settings::get('privacy_policy')); } else { $policy = Output::getPurified($policy[0]->value); } diff --git a/modules/Core/pages/register.php b/modules/Core/pages/register.php index 547b39170c..52e5fdaaa5 100644 --- a/modules/Core/pages/register.php +++ b/modules/Core/pages/register.php @@ -23,11 +23,11 @@ require_once(ROOT_PATH . '/modules/Core/includes/emails/register.php'); // Check if registration is enabled -if (!Util::getSetting('registration_enabled')) { +if (!Settings::get('registration_enabled')) { // Registration is disabled, display a message // Get registration disabled message and assign to Smarty variable $fallback_message = $language->get('general', 'registration_disabled_message_fallback'); - $message = Output::getPurified(Util::getSetting('registration_disabled_message', $fallback_message)); + $message = Output::getPurified(Settings::get('registration_disabled_message', $fallback_message)); $smarty->assign([ 'REGISTRATION_DISABLED' => $message, @@ -48,9 +48,9 @@ die(); } -if (Util::getSetting('mc_integration')) { +if (Settings::get('mc_integration')) { // Check if AuthMe is enabled - $authme_enabled = Util::getSetting('authme'); + $authme_enabled = Settings::get('authme'); if ($authme_enabled == 1) { // Authme connector @@ -108,7 +108,7 @@ // ] ]; - if (Util::getSetting('displaynames') === '1') { + if (Settings::get('displaynames') === '1') { // Nickname enabled $to_validation['nickname'] = [ Validate::REQUIRED => true, @@ -303,7 +303,7 @@ $user, )); - if (!$auto_verify_oauth_email && Util::getSetting('email_verification') === '1') { + if (!$auto_verify_oauth_email && Settings::get('email_verification') === '1') { // Send registration email sendRegisterEmail($language, Output::getClean(Input::get('email')), $username, $user_id, $code); @@ -343,7 +343,7 @@ $fields = new Fields(); // Are custom usernames enabled? -if (Util::getSetting('displaynames') === '1') { +if (Settings::get('displaynames') === '1') { $nickname_value = ((isset($_POST['nickname']) && $_POST['nickname']) ? Output::getClean(Input::get('nickname')) : ''); $fields->add('nickname', Fields::TEXT, $language->get('user', 'nickname'), true, $nickname_value); diff --git a/modules/Core/pages/status.php b/modules/Core/pages/status.php index 2d6d6e98de..d74d0425ce 100644 --- a/modules/Core/pages/status.php +++ b/modules/Core/pages/status.php @@ -9,7 +9,7 @@ * Status page */ -if (!Util::getSetting('mc_integration') || !Util::getSetting('status_page')) { +if (!Settings::get('mc_integration') || !Settings::get('status_page')) { require_once(ROOT_PATH . '/403.php'); die(); } diff --git a/modules/Core/pages/terms.php b/modules/Core/pages/terms.php index 5d22814e03..26fae415b9 100644 --- a/modules/Core/pages/terms.php +++ b/modules/Core/pages/terms.php @@ -17,13 +17,13 @@ // Retrieve terms from database $site_terms = DB::getInstance()->get('privacy_terms', ['name', 'terms'])->results(); if (!count($site_terms)) { - $site_terms = Util::getSetting('t_and_c_site'); + $site_terms = Settings::get('t_and_c_site'); } else { $site_terms = $site_terms[0]->value; } $site_terms = Output::getPurified($site_terms); -$nameless_terms = Output::getPurified(Util::getSetting('t_and_c')); +$nameless_terms = Output::getPurified(Settings::get('t_and_c')); $smarty->assign([ 'TERMS' => $language->get('user', 'terms_and_conditions'), diff --git a/modules/Core/pages/user/placeholders.php b/modules/Core/pages/user/placeholders.php index 9a5f099ffd..dd909c6a62 100644 --- a/modules/Core/pages/user/placeholders.php +++ b/modules/Core/pages/user/placeholders.php @@ -15,7 +15,7 @@ } // Placeholders enabled? -if (Util::getSetting('placeholders') !== '1') { +if (Settings::get('placeholders') !== '1') { require_once(ROOT_PATH . '/404.php'); die(); } diff --git a/modules/Core/pages/user/settings.php b/modules/Core/pages/user/settings.php index 2492869afe..9303882499 100644 --- a/modules/Core/pages/user/settings.php +++ b/modules/Core/pages/user/settings.php @@ -265,7 +265,7 @@ } // Private profiles enabled? - $private_profiles = Util::getSetting('private_profile'); + $private_profiles = Settings::get('private_profile'); if ($private_profiles === '1') { if ($user->canPrivateProfile() && $_POST['privateProfile'] == 1) { $privateProfile = 1; @@ -288,7 +288,7 @@ 'gravatar' => $gravatar, ]; - if ($user->data()->register_method === 'authme' && Util::getSetting('authme')) { + if ($user->data()->register_method === 'authme' && Settings::get('authme')) { $data['authme_sync_password'] = Input::get('authmeSync'); } @@ -652,10 +652,10 @@ $smarty->assign('ENABLE_LINK', URL::build('/user/settings/', 'do=enable_tfa')); } - if ($user->data()->register_method && Util::getSetting('authme')) { + if ($user->data()->register_method && Settings::get('authme')) { $smarty->assign([ 'AUTHME_SYNC_PASSWORD' => $language->get('user', 'authme_sync_password'), - 'AUTHME_SYNC_PASSWORD_INFO' => $language->get('user', Util::getSetting('login_method') === 'username' + 'AUTHME_SYNC_PASSWORD_INFO' => $language->get('user', Settings::get('login_method') === 'username' ? 'authme_sync_password_setting' : 'authme_sync_password_setting_email' ), diff --git a/modules/Core/queries/debug_link.php b/modules/Core/queries/debug_link.php index 4d590a8221..0c3411259e 100755 --- a/modules/Core/queries/debug_link.php +++ b/modules/Core/queries/debug_link.php @@ -164,7 +164,7 @@ ]; } -$namelessmc_version = Util::getSetting('nameless_version'); +$namelessmc_version = Settings::get('nameless_version'); $uuid = DB::getInstance()->query('SELECT identifier FROM nl2_users_integrations INNER JOIN nl2_integrations on integration_id=nl2_integrations.id WHERE name = \'Minecraft\' AND user_id = ?;', [$user->data()->id]); if ($uuid->count()) { @@ -206,15 +206,15 @@ 'user' => $user_data, 'namelessmc' => [ 'version' => $namelessmc_version, - 'update_available' => Util::getSetting('version_update') === 'urgent' || Util::getSetting('version_update') === 'true', - 'update_checked' => (int) Util::getSetting('version_checked'), + 'update_available' => Settings::get('version_update') === 'urgent' || Settings::get('version_update') === 'true', + 'update_checked' => (int) Settings::get('version_checked'), 'settings' => [ - 'phpmailer' => Util::getSetting('phpmailer') === '1', - 'api_enabled' => Util::getSetting('use_api') === '1', - 'email_verification' => Util::getSetting('email_verification') === '1', - 'login_method' => Util::getSetting('login_method'), - 'captcha_type' => Util::getSetting('recaptcha_type'), - 'captcha_login' => Util::getSetting('recaptcha_login') === 'false' ? false : true, // dont ask + 'phpmailer' => Settings::get('phpmailer') === '1', + 'api_enabled' => Settings::get('use_api') === '1', + 'email_verification' => Settings::get('email_verification') === '1', + 'login_method' => Settings::get('login_method'), + 'captcha_type' => Settings::get('recaptcha_type'), + 'captcha_login' => Settings::get('recaptcha_login') === 'false' ? false : true, // dont ask 'group_sync' => $group_sync, 'webhooks' => [ 'actions' => [ diff --git a/modules/Core/queries/queue.php b/modules/Core/queries/queue.php index e46e0c045e..8fb06a0b4c 100644 --- a/modules/Core/queries/queue.php +++ b/modules/Core/queries/queue.php @@ -28,15 +28,15 @@ function return_json($output, ?bool $error = false) { $cache->setCache('queue'); $last_run = intval($cache->retrieve('last_run') ?? 0); -$interval = floatval(Util::getSetting('queue_interval') ?? 1); -$runner = Util::getSetting('queue_runner'); +$interval = floatval(Settings::get('queue_interval') ?? 1); +$runner = Settings::get('queue_runner'); if ($runner == 'cron') { if (!isset($_GET['cron'])) { return_json('Invalid cron URL', true); } - if (Input::get('key') != Util::getSetting('cron_key')) { + if (Input::get('key') != Settings::get('cron_key')) { return_json('Invalid cron key', true); } } diff --git a/modules/Core/queries/server.php b/modules/Core/queries/server.php index 6549bdcea1..4b47ededbc 100644 --- a/modules/Core/queries/server.php +++ b/modules/Core/queries/server.php @@ -16,7 +16,7 @@ echo $cache->retrieve('result'); } else { // Get query type - $query_type = Util::getSetting('query_type', 'internal'); + $query_type = Settings::get('query_type', 'internal'); $full_ip = [ 'ip' => $server->ip . (is_null($server->port) ? '' : ':' . $server->port), 'pre' => $server->pre, diff --git a/modules/Core/queries/servers.php b/modules/Core/queries/servers.php index 5703a0fdc6..2374cfddc1 100644 --- a/modules/Core/queries/servers.php +++ b/modules/Core/queries/servers.php @@ -1,13 +1,13 @@ setCache('server_query_cache'); if (isset($_GET['key'])) { // Get key from database - check it matches - $key = Util::getSetting('unique_id'); + $key = Settings::get('unique_id'); if ($key === null || $_GET['key'] != $key) { die(); } @@ -22,7 +22,7 @@ } // Get query type -$query_type = Util::getSetting('query_type', 'internal'); +$query_type = Settings::get('query_type', 'internal'); // Query $servers = DB::getInstance()->get('mc_servers', ['id', '<>', 0])->results(); diff --git a/modules/Discord Integration/classes/Discord.php b/modules/Discord Integration/classes/Discord.php index e192e88bc3..49c87c5a9e 100644 --- a/modules/Discord Integration/classes/Discord.php +++ b/modules/Discord Integration/classes/Discord.php @@ -60,7 +60,7 @@ public static function updateDiscordRoles(User $user, array $added, array $remov $result = self::botRequest('/applyRoleChanges', json_encode([ 'guild_id' => self::getGuildId(), - 'api_key' => Util::getSetting('mc_api_key'), + 'api_key' => Settings::get('mc_api_key'), 'role_changes' => $role_changes ])); @@ -100,7 +100,7 @@ public static function updateDiscordRoles(User $user, array $added, array $remov * @return bool Whether the Discord bot is set up properly */ public static function isBotSetup(): bool { - return self::$_is_bot_setup ??= Util::getSetting('discord_integration'); + return self::$_is_bot_setup ??= Settings::get('discord_integration'); } /** @@ -125,7 +125,7 @@ public static function getDiscordRoleId(DB $db, int $nameless_group_id): ?int { * @return string|null Discord guild ID for this site */ public static function getGuildId(): ?string { - return Util::getSetting('discord'); + return Settings::get('discord'); } /** diff --git a/modules/Discord Integration/classes/DiscordIntegration.php b/modules/Discord Integration/classes/DiscordIntegration.php index 4fd1d49c84..52ac6a8adc 100644 --- a/modules/Discord Integration/classes/DiscordIntegration.php +++ b/modules/Discord Integration/classes/DiscordIntegration.php @@ -21,7 +21,7 @@ public function __construct(Language $language) { } public function onLinkRequest(User $user) { - $link_method = Util::getSetting('integration_link_method', 'bot', 'Discord Integration'); + $link_method = Settings::get('integration_link_method', 'bot', 'Discord Integration'); if ($link_method == 'oauth') { // Link with oauth Session::put('oauth_method', 'link_integration'); @@ -142,7 +142,7 @@ public function validateIdentifier(string $identifier, int $integration_user_id } public function allowLinking(): bool { - $link_method = Util::getSetting('integration_link_method', 'bot', 'Discord Integration'); + $link_method = Settings::get('integration_link_method', 'bot', 'Discord Integration'); if ($link_method == 'oauth') { return NamelessOAuth::getInstance()->isEnabled('discord'); } else { diff --git a/modules/Discord Integration/includes/admin_integrations/discord.php b/modules/Discord Integration/includes/admin_integrations/discord.php index 37d1f78b1b..e56201e856 100644 --- a/modules/Discord Integration/includes/admin_integrations/discord.php +++ b/modules/Discord Integration/includes/admin_integrations/discord.php @@ -2,7 +2,7 @@ if (Input::exists()) { if (Token::check()) { if (Input::get('action') === 'integration_settings') { - Util::setSetting('integration_link_method', Input::get('link_method'), 'Discord Integration'); + Settings::set('integration_link_method', Input::get('link_method'), 'Discord Integration'); Session::flash('integrations_success', $language->get('admin', 'integration_updated_successfully')); Redirect::to(URL::build('/panel/core/integrations/', 'integration=' . $integration->getName())); @@ -16,6 +16,6 @@ 'OAUTH' => $language->get('admin', 'oauth'), 'DISCORD_BOT' => Discord::getLanguageTerm('discord_bot'), 'LINK_METHOD' => Discord::getLanguageTerm('link_method'), - 'LINK_METHOD_VALUE' => Util::getSetting('integration_link_method', 'bot', 'Discord Integration'), + 'LINK_METHOD_VALUE' => Settings::get('integration_link_method', 'bot', 'Discord Integration'), 'SETTINGS_TEMPLATE' => 'integrations/discord/integration_settings.tpl' -]); \ No newline at end of file +]); diff --git a/modules/Discord Integration/includes/endpoints/UpdateDiscordBotSettingsEndpoint.php b/modules/Discord Integration/includes/endpoints/UpdateDiscordBotSettingsEndpoint.php index c7b7fc38ea..640b1cbdb0 100644 --- a/modules/Discord Integration/includes/endpoints/UpdateDiscordBotSettingsEndpoint.php +++ b/modules/Discord Integration/includes/endpoints/UpdateDiscordBotSettingsEndpoint.php @@ -18,7 +18,7 @@ public function __construct() { public function execute(Nameless2API $api): void { if (isset($_POST['url'])) { try { - Util::setSetting('discord_bot_url', $_POST['url']); + Settings::set('discord_bot_url', $_POST['url']); } catch (Exception $e) { $api->throwError(DiscordApiErrors::ERROR_UNABLE_TO_SET_DISCORD_BOT_URL, $e->getMessage(), 500); } @@ -26,7 +26,7 @@ public function execute(Nameless2API $api): void { if (isset($_POST['guild_id'])) { try { - Util::setSetting('discord', $_POST['guild_id']); + Settings::set('discord', $_POST['guild_id']); } catch (Exception $e) { $api->throwError(DiscordApiErrors::ERROR_UNABLE_TO_SET_DISCORD_GUILD_ID, $e->getMessage(), 500); } @@ -34,7 +34,7 @@ public function execute(Nameless2API $api): void { if (isset($_POST['bot_username'])) { try { - Util::setSetting('discord_bot_username', $_POST['bot_username']); + Settings::set('discord_bot_username', $_POST['bot_username']); } catch (Exception $e) { $api->throwError(DiscordApiErrors::ERROR_UNABLE_TO_SET_DISCORD_BOT_USERNAME, $e->getMessage(), 500); } @@ -42,11 +42,11 @@ public function execute(Nameless2API $api): void { // If bot url and username is empty then its setup for the first time if (empty(BOT_URL) && empty(BOT_USERNAME)) { - Util::setSetting('discord_integration', 1); + Settings::set('discord_integration', 1); } if (isset($_POST['bot_user_id'])) { - Util::setSetting('discord_bot_user_id', $_POST['bot_user_id']); + Settings::set('discord_bot_user_id', $_POST['bot_user_id']); } $api->returnArray(['message' => Discord::getLanguageTerm('discord_settings_updated')]); diff --git a/modules/Discord Integration/module.php b/modules/Discord Integration/module.php index c0b9c2a8c7..3b35dbd504 100644 --- a/modules/Discord Integration/module.php +++ b/modules/Discord Integration/module.php @@ -14,13 +14,13 @@ public function __construct(Language $language, Pages $pages, Endpoints $endpoin parent::__construct($this, $name, $author, $module_version, $nameless_version); - $bot_url = Util::getSetting('discord_bot_url'); + $bot_url = Settings::get('discord_bot_url'); if ($bot_url === null) { $bot_url = ''; } define('BOT_URL', $bot_url); - $bot_username = Util::getSetting('discord_bot_username'); + $bot_username = Settings::get('discord_bot_username'); if ($bot_username === null) { $bot_username = ''; } diff --git a/modules/Discord Integration/pages/panel/discord.php b/modules/Discord Integration/pages/panel/discord.php index e552d314fd..28645e3b92 100644 --- a/modules/Discord Integration/pages/panel/discord.php +++ b/modules/Discord Integration/pages/panel/discord.php @@ -42,7 +42,7 @@ ]); if ($validation->passed()) { - Util::setSetting('discord', Input::get('discord_guild_id')); + Settings::set('discord', Input::get('discord_guild_id')); $success = Discord::getLanguageTerm('discord_settings_updated'); @@ -58,12 +58,12 @@ 'linkStart' => '', 'linkEnd' => '', ]); - Util::setSetting('discord_integration', '0'); + Settings::set('discord_integration', '0'); } else { - Util::setSetting('discord_integration', '1'); + Settings::set('discord_integration', '1'); } } else { - Util::setSetting('discord_integration', '0'); + Settings::set('discord_integration', '0'); } } diff --git a/modules/Forum/front_page.php b/modules/Forum/front_page.php index 49b10b3827..127814a2f5 100644 --- a/modules/Forum/front_page.php +++ b/modules/Forum/front_page.php @@ -16,7 +16,7 @@ $forum = new Forum(); $latest_news = $forum->getLatestNews( - Util::getSetting('news_items_front_page', 5, 'forum'), + Settings::get('news_items_front_page', 5, 'forum'), $user->getAllGroupIds() ); // Get latest 5 items diff --git a/modules/Forum/pages/forum/reactions.php b/modules/Forum/pages/forum/reactions.php index 8172ae38d2..32146e593e 100644 --- a/modules/Forum/pages/forum/reactions.php +++ b/modules/Forum/pages/forum/reactions.php @@ -17,7 +17,7 @@ } // Are reactions enabled? -if (Util::getSetting('forum_reactions') !== '1') { +if (Settings::get('forum_reactions') !== '1') { Redirect::to(URL::build('/forum')); } diff --git a/modules/Forum/pages/forum/view_topic.php b/modules/Forum/pages/forum/view_topic.php index 223cf7b962..ed0df5ff0f 100644 --- a/modules/Forum/pages/forum/view_topic.php +++ b/modules/Forum/pages/forum/view_topic.php @@ -397,7 +397,7 @@ } // Are reactions enabled? -$reactions_enabled = Util::getSetting('forum_reactions') === '1'; +$reactions_enabled = Settings::get('forum_reactions') === '1'; // Assign Smarty variables to pass to template $parent_category = DB::getInstance()->get('forums', ['id', $forum_parent[0]->parent])->results(); diff --git a/modules/Forum/pages/panel/forums.php b/modules/Forum/pages/panel/forums.php index 74f06c9255..401f30d357 100644 --- a/modules/Forum/pages/panel/forums.php +++ b/modules/Forum/pages/panel/forums.php @@ -64,7 +64,7 @@ } } - $forum_reactions = Util::getSetting('forum_reactions'); + $forum_reactions = Settings::get('forum_reactions'); $smarty->assign([ 'NEW_FORUM' => $forum_language->get('forum', 'new_forum'), diff --git a/modules/Forum/pages/panel/settings.php b/modules/Forum/pages/panel/settings.php index a69a0a0286..da82c018c5 100644 --- a/modules/Forum/pages/panel/settings.php +++ b/modules/Forum/pages/panel/settings.php @@ -56,8 +56,8 @@ $cache->setCache('nav_location'); $cache->store('forum_location', $location); - Util::setSetting('forum_reactions', (isset($_POST['use_reactions']) && $_POST['use_reactions'] == 'on') ? '1' : 0); - Util::setSetting('news_items_front_page', $_POST['news_items'], 'forum'); + Settings::set('forum_reactions', (isset($_POST['use_reactions']) && $_POST['use_reactions'] == 'on') ? '1' : 0); + Settings::set('news_items_front_page', $_POST['news_items'], 'forum'); Session::flash('admin_forums_settings', $forum_language->get('forum', 'settings_updated_successfully')); } else { @@ -111,9 +111,9 @@ 'LINK_FOOTER' => $language->get('admin', 'page_link_footer'), 'LINK_NONE' => $language->get('admin', 'page_link_none'), 'USE_REACTIONS' => $forum_language->get('forum', 'use_reactions'), - 'USE_REACTIONS_VALUE' => Util::getSetting('forum_reactions') === '1', + 'USE_REACTIONS_VALUE' => Settings::get('forum_reactions') === '1', 'NEWS_ITEMS_ON_FRONT_PAGE' => $forum_language->get('forum', 'news_items_front_page_limit'), - 'NEWS_ITEMS_ON_FRONT_PAGE_VALUE' => Util::getSetting('news_items_front_page', 5, 'forum'), + 'NEWS_ITEMS_ON_FRONT_PAGE_VALUE' => Settings::get('news_items_front_page', 5, 'forum'), 'PAGE' => PANEL_PAGE, 'TOKEN' => Token::get(), 'SUBMIT' => $language->get('general', 'submit') diff --git a/modules/Forum/widgets/LatestPostsWidget.php b/modules/Forum/widgets/LatestPostsWidget.php index dfd32f7497..edfc0a011a 100644 --- a/modules/Forum/widgets/LatestPostsWidget.php +++ b/modules/Forum/widgets/LatestPostsWidget.php @@ -55,7 +55,7 @@ public function initialise(): void { $template_array = $this->_cache->retrieve('discussions'); } else { - $limit = (int) Util::getSetting('latest_posts_limit', 5, 'Forum'); + $limit = (int) Settings::get('latest_posts_limit', 5, 'Forum'); // Generate latest posts $discussions = $forum->getLatestDiscussions($user_groups, ($this->_user->isLoggedIn() ? $this->_user->data()->id : 0), $limit); diff --git a/modules/Forum/widgets/admin/latest_posts.php b/modules/Forum/widgets/admin/latest_posts.php index 2132e6d23d..fa0cc2948a 100644 --- a/modules/Forum/widgets/admin/latest_posts.php +++ b/modules/Forum/widgets/admin/latest_posts.php @@ -14,7 +14,7 @@ if (Token::check(Input::get('token'))) { if (isset($_POST['limit']) && $_POST['limit'] > 0) { - Util::setSetting('latest_posts_limit', Input::get('limit'), 'Forum'); + Settings::set('latest_posts_limit', Input::get('limit'), 'Forum'); } $success = $language->get('admin', 'widget_updated'); @@ -25,8 +25,8 @@ $smarty->assign([ 'LATEST_POSTS_LIMIT' => $forum_language->get('forum', 'latest_posts_limit'), - 'LATEST_POSTS_LIMIT_VALUE' => Util::getSetting('latest_posts_limit', 5, 'Forum'), + 'LATEST_POSTS_LIMIT_VALUE' => Settings::get('latest_posts_limit', 5, 'Forum'), 'INFO' => $language->get('general', 'info'), 'WIDGET_CACHED' => $forum_language->get('forum', 'latest_posts_widget_cached'), 'SETTINGS_TEMPLATE' => 'forum/widgets/latest_posts.tpl' -]); \ No newline at end of file +]); diff --git a/modules/Members/classes/MemberListProvider.php b/modules/Members/classes/MemberListProvider.php index 24f53df529..f8527fd9af 100644 --- a/modules/Members/classes/MemberListProvider.php +++ b/modules/Members/classes/MemberListProvider.php @@ -102,7 +102,7 @@ public function getMembers(bool $overview, int $page): array { [$sql, $id_column, $count_column] = $this->generator(); $rows = DB::getInstance()->query($sql)->results(); - if (Util::getSetting('member_list_hide_banned', false, 'Members')) { + if (Settings::get('member_list_hide_banned', false, 'Members')) { $rows = $this->filterBanned($rows, $id_column); } @@ -148,7 +148,7 @@ public function getMemberCount(): int { [$sql, $id_column] = $this->generator(); $rows = DB::getInstance()->query($sql)->results(); - if (Util::getSetting('member_list_hide_banned', false, 'Members')) { + if (Settings::get('member_list_hide_banned', false, 'Members')) { $rows = $this->filterBanned($rows, $id_column); } diff --git a/modules/Members/pages/members.php b/modules/Members/pages/members.php index e635279295..46efeae8ca 100644 --- a/modules/Members/pages/members.php +++ b/modules/Members/pages/members.php @@ -14,7 +14,7 @@ require_once(ROOT_PATH . '/core/templates/frontend_init.php'); if (isset($_GET['group'])) { - if (!in_array($_GET['group'], json_decode(Util::getSetting('member_list_viewable_groups', '{}', 'Members'), true))) { + if (!in_array($_GET['group'], json_decode(Settings::get('member_list_viewable_groups', '{}', 'Members'), true))) { Redirect::to(URL::build('/members')); } @@ -40,7 +40,7 @@ } $new_members = []; -if (Util::getSetting('member_list_hide_banned', false, 'Members')) { +if (Settings::get('member_list_hide_banned', false, 'Members')) { $query = DB::getInstance()->query('SELECT id FROM nl2_users WHERE isbanned = 0 ORDER BY joined DESC LIMIT 12'); } else { $query = DB::getInstance()->query('SELECT id FROM nl2_users ORDER BY joined DESC LIMIT 12'); @@ -57,7 +57,7 @@ } $groups = []; -foreach (json_decode(Util::getSetting('member_list_viewable_groups', '{}', 'Members'), true) as $group_id) { +foreach (json_decode(Settings::get('member_list_viewable_groups', '{}', 'Members'), true) as $group_id) { $group = Group::find($group_id); if (!$group) { continue; diff --git a/modules/Members/pages/panel/settings.php b/modules/Members/pages/panel/settings.php index 8730d3326a..df01617cca 100644 --- a/modules/Members/pages/panel/settings.php +++ b/modules/Members/pages/panel/settings.php @@ -14,8 +14,8 @@ if (Input::exists()) { if (Token::check()) { - Util::setSetting('member_list_viewable_groups', json_encode(Input::get('groups')), 'Members'); - Util::setSetting('member_list_hide_banned', Input::get('hide_banned_users'), 'Members'); + Settings::set('member_list_viewable_groups', json_encode(Input::get('groups')), 'Members'); + Settings::set('member_list_hide_banned', Input::get('hide_banned_users'), 'Members'); // Update link location if (isset($_POST['link_location'])) { @@ -86,10 +86,10 @@ 'LINK_FOOTER' => $language->get('admin', 'page_link_footer'), 'LINK_NONE' => $language->get('admin', 'page_link_none'), 'HIDE_BANNED_USERS' => $members_language->get('members', 'member_list_hide_banned_users'), - 'HIDE_BANNED_USERS_VALUE' => Util::getSetting('member_list_hide_banned', false, 'Members'), + 'HIDE_BANNED_USERS_VALUE' => Settings::get('member_list_hide_banned', false, 'Members'), 'GROUPS' => $members_language->get('members', 'viewable_groups'), 'GROUPS_ARRAY' => $group_array, - 'GROUPS_VALUE' => json_decode(Util::getSetting('member_list_viewable_groups', '{}', 'Members'), true) ?: [], + 'GROUPS_VALUE' => json_decode(Settings::get('member_list_viewable_groups', '{}', 'Members'), true) ?: [], 'NO_ITEM_SELECTED' => $language->get('admin', 'no_item_selected'), 'PAGE' => PANEL_PAGE, 'TOKEN' => Token::get(), diff --git a/modules/Members/queries/member_list.php b/modules/Members/queries/member_list.php index 99bacdad9d..f56eacaf11 100644 --- a/modules/Members/queries/member_list.php +++ b/modules/Members/queries/member_list.php @@ -11,7 +11,7 @@ } $cache->setCache('member_list_queries'); -$key = ($list . '_page_' . $page) . ($overview ? '_overview' : '') . (Util::getSetting('member_list_hide_banned', false, 'Members') ? '_hide_banned' : ''); +$key = ($list . '_page_' . $page) . ($overview ? '_overview' : '') . (Settings::get('member_list_hide_banned', false, 'Members') ? '_hide_banned' : ''); if ($cache->isCached($key)) { die($cache->retrieve($key)); } From 8852373a89a03955841025c1303c32337534de00 Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Mon, 12 Jun 2023 10:31:01 -0600 Subject: [PATCH 075/193] Call `compileQueries` only when needed (#3386) --- core/classes/Database/QueryRecorder.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/classes/Database/QueryRecorder.php b/core/classes/Database/QueryRecorder.php index 2d60af160d..7034cee875 100644 --- a/core/classes/Database/QueryRecorder.php +++ b/core/classes/Database/QueryRecorder.php @@ -19,7 +19,17 @@ class QueryRecorder extends Instanceable { * @return array SQL queries */ public function getSqlStack(): array { - return array_reverse($this->_query_stack); + $stack = array_reverse($this->_query_stack); + + // Compile queries - replace bound parameters with their values and syntax highlight + foreach ($stack as &$query) { + $query['sql_query'] = $this->compileQuery( + $query['sql_string'], + $query['sql_params'] + ); + } + + return $stack; } /** @@ -38,7 +48,8 @@ public function pushQuery(string $sql, array $params): void { $this->_query_stack[] = [ 'number' => $this->_query_stack_num, 'frame' => ErrorHandler::parseFrame(null, $backtrace['file'], $backtrace['line'], $this->_query_stack_num), - 'sql_query' => $this->compileQuery($sql, $params) + 'sql_string' => $sql, + 'sql_params' => $params, ]; $this->_query_stack_num++; From fcd2ebce48612fd409ff68261d2d34648253a24b Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Mon, 12 Jun 2023 10:31:01 -0600 Subject: [PATCH 076/193] Call `compileQueries` only when needed (#3386) --- core/classes/Database/QueryRecorder.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/classes/Database/QueryRecorder.php b/core/classes/Database/QueryRecorder.php index 2d60af160d..7034cee875 100644 --- a/core/classes/Database/QueryRecorder.php +++ b/core/classes/Database/QueryRecorder.php @@ -19,7 +19,17 @@ class QueryRecorder extends Instanceable { * @return array SQL queries */ public function getSqlStack(): array { - return array_reverse($this->_query_stack); + $stack = array_reverse($this->_query_stack); + + // Compile queries - replace bound parameters with their values and syntax highlight + foreach ($stack as &$query) { + $query['sql_query'] = $this->compileQuery( + $query['sql_string'], + $query['sql_params'] + ); + } + + return $stack; } /** @@ -38,7 +48,8 @@ public function pushQuery(string $sql, array $params): void { $this->_query_stack[] = [ 'number' => $this->_query_stack_num, 'frame' => ErrorHandler::parseFrame(null, $backtrace['file'], $backtrace['line'], $this->_query_stack_num), - 'sql_query' => $this->compileQuery($sql, $params) + 'sql_string' => $sql, + 'sql_params' => $params, ]; $this->_query_stack_num++; From 52e31964d0c7b9a8145a2b3af6d8a7a58ad1eb2c Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Sun, 11 Jun 2023 11:57:29 +0000 Subject: [PATCH 077/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index ca7bfeddc7..f16ea8ec9a 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -30,7 +30,7 @@ "admin/authme_db_password": "AuthMe Datenbank Passwort", "admin/authme_db_port": "AuthMe Datenbank Port", "admin/authme_db_table": "AuthMe Benutzer Tabelle", - "admin/authme_db_user": "AuthMe Datenbank Username", + "admin/authme_db_user": "AuthMe Datenbank Benutzername", "admin/authme_hash_algorithm": "AuthMe Hash Algorithmus", "admin/authme_integration": "AuthMe Integration", "admin/authme_integration_info": "Wenn die AuthMe-Integration aktiviert ist, können Benutzer sich nur im Spiel registrieren.", @@ -158,7 +158,7 @@ "admin/email_resend_failed": "Das erneute Senden von E-Mails ist fehlgeschlagen. Überprüfe Deine E-Mail-Einstellungen.", "admin/email_resent_successfully": "E-Mail erfolgreich erneut gesendet.", "admin/email_settings_updated_successfully": "Die E-Mail-Einstellungen wurden erfolgreich aktualisiert.", - "admin/email_verification": "Email Verifikation aktivieren?", + "admin/email_verification": "E-Mail Verifizierung aktivieren?", "admin/emails": "E-Mails", "admin/emails_mass_message": "Massen-E-Mail-Nachricht", "admin/emails_mass_message_loading": "Laden ... Bitte lade die Seite nicht neu. Das kann eine Weile dauern.", @@ -175,7 +175,7 @@ "admin/enable_player_list": "Spielerliste aktivieren?", "admin/enable_registration": "Registrierung aktivieren?", "admin/enable_status_query": "Aktiviere Status Abfrage?", - "admin/enable_username_sync": "Username Synchronisation aktivieren?", + "admin/enable_username_sync": "Benutzername Synchronisation aktivieren?", "admin/enable_username_sync_info": "Wenn diese Option aktiviert ist, werden die Benutzernamen der Website aktualisiert, damit sie mit den Benutzernamen im Spiel übereinstimmen. Dies geschieht, wenn das In-Game-Plugin eine Liste von UUIDs und Benutzernamen für Online-Spieler an die Website sendet.", "admin/enabled": "Aktiviert", "admin/enter_authme_db_details": "Bitte gebe gültige Datenbank Informationen ein.", @@ -200,7 +200,7 @@ "admin/force_tfa_alert": "Für Deine Gruppe muss die Zwei-Faktor-Authentifizierung aktiviert sein.", "admin/force_tfa_warning": "Bitte vergewissere dich, dass du weißt, was das tut, sonst riskierst du, dich und alle Gruppenmitglieder auszusperren.", "admin/force_www": "www erzwingen?", - "admin/forgot_password_email": "Password vergessen Email", + "admin/forgot_password_email": "Password vergessen E-Mail", "admin/forum_posts": "Anzeige im Forum", "admin/forum_topic_reply_email": "Forum Thema Antwort", "admin/general_settings": "Allgemeine Einstellungen", @@ -225,7 +225,7 @@ "admin/group_sync_rules_updated_successfully": "Gruppensynchronisierungsregeln wurden erfolgreich aktualisiert.", "admin/group_updated_successfully": "Gruppe erfolgreich aktualisiert.", "admin/group_username_colour": "Benutzernamenfarbe der Gruppe", - "admin/group_username_css": "Gruppen Username CSS", + "admin/group_username_css": "Gruppen Benutzername CSS", "admin/groups": "Gruppen", "admin/groups_added": "Gruppen hinzugefügt", "admin/groups_removed": "Gruppen entfernt", @@ -291,7 +291,7 @@ "admin/minecraft_avatar_source": "Minecraft Avatar Quelle", "admin/minecraft_servers": "Minecraft Server", "admin/minecraft_settings_updated_successfully": "Einstellungen erfolgreich aktualisiert.", - "admin/missing_contact_address": "Bitte gebe eine Kontakt Email mit 3 bis 255 Zeichen an.", + "admin/missing_contact_address": "Bitte gebe eine Kontakt E-Mail mit 3 bis 255 Zeichen an.", "admin/missing_sitename": "Der Seiten-Name muss zwischen 2 und 64 Zeichen lang sein.", "admin/mod_dir_still_exists": "Warnung! Das Verzeichnis modules/Core/pages/mod existiert noch. Bitte entferne dieses Verzeichnis.", "admin/mode_toggle": "Dunkler Modus", @@ -306,7 +306,7 @@ "admin/name_maximum_16": "Der Name darf nicht länger als 16 Zeichen sein", "admin/name_required": "Ein Name ist erforderlich", "admin/nameless_news": "NamelessMC Neuigkeiten", - "admin/navbar_colour": "Navbar Farbe", + "admin/navbar_colour": "Farbe der Navigationsleiste", "admin/navbar_icon": "Symbol für die Navigationsleiste", "admin/navbar_icon_instructions": "Du kannst hier auch jedem Navigationsleistenelement ein Symbol hinzufügen, z. B. mithilfe von {{faLink}}, {{semLink}}.", "admin/navbar_order": "Navigationsleistenposition", @@ -342,7 +342,7 @@ "admin/oauth": "OAuth", "admin/oauth_info": "Konfiguriere den OAuth-Provider, damit sich die Benutzer mit ihren Konten in sozialen Netzwerken anmelden können. {{docLinkStart}}Schau dir die Dokumentation an, um Hilfe zu erhalten{{docLinkEnd}}.", "admin/other_log": "Andere Protokolle", - "admin/outgoing_email": "Ausgehende Email Addresse", + "admin/outgoing_email": "Ausgehende E-Mail Addresse", "admin/outgoing_email_info": "Dies ist die Absender Emailadresse die NamelessMC benutzt.", "admin/overview": "Übersicht", "admin/page": "Seite", @@ -419,7 +419,7 @@ "admin/registered": "Registriert", "admin/registration": "Registrierung", "admin/registration_disabled_message": "Registration Deaktiviert Nachricht", - "admin/registration_email": "Registrations Email", + "admin/registration_email": "Registrations E-Mail", "admin/registration_settings_updated": "Die Registrierungseinstellungen wurden erfolgreich aktualisiert.", "admin/registrations": "Anmeldungen", "admin/required": "Benötigt", @@ -436,7 +436,7 @@ "admin/select_default_avatar": "Wähle ein neues Standard Avatar:", "admin/select_user_group": "Du musst eine Benutzergruppe auswählen.", "admin/send": "Senden", - "admin/send_test_email": "Sende Test Email", + "admin/send_test_email": "Sende Test E-Mail", "admin/send_test_email_info": "Die folgende Schaltfläche versucht, eine E-Mail an Deine E-Mail-Adresse zu senden, {{email}}. Falls Irgendwelche Fehler, die beim Senden der E-Mail enstehen, werden angezeigt.", "admin/sending_mass_message": "Massennachricht senden", "admin/seo": "SEO", @@ -500,7 +500,7 @@ "admin/templates_installed_successfully": "Neue Vorlagen wurden erfolgreich installiert.", "admin/terms_error": "Bitte stelle sicher, dass Deine Geschäftsbedingungen nicht länger als 100000 Zeichen sind.", "admin/terms_updated": "Bedingungen erfolgreich aktualisiert.", - "admin/test_email_success": "Test Email erfolgreich versendet!", + "admin/test_email_success": "Test E-Mail erfolgreich versendet!", "admin/text": "Text", "admin/text_colour": "Text Farbe", "admin/text_colour_required": "Textfarbe ist erforderlich", @@ -531,7 +531,7 @@ "admin/up_to_date": "Deine NamelessMC Version ist aktuell!", "admin/update": "Update", "admin/update_user_languages": "Benutzersprache aktualisieren", - "admin/update_user_languages_warning": "Dadurch wird die Sprache für alle Benutzer Ihrer Website aktualisiert, auch wenn sie bereits eine Sprache ausgewählt haben!", + "admin/update_user_languages_warning": "Dadurch wird die Sprache für alle Benutzer/innen auf deiner Website aktualisiert, auch wenn diese bereits eine Sprache ausgewählt haben!", "admin/updated_user_languages": "Benutersprache aktualisiert.", "admin/updated_x": "Aktualisiert am: {{updatedAt}}", "admin/upload_new_image": "Neues Bild hochladen", @@ -708,7 +708,7 @@ "installer/database_port": "Datenbank Port", "installer/database_username": "Datenbank Benutzername", "installer/disabled": "Deaktiviert", - "installer/email_address": "Email Addresse", + "installer/email_address": "E-Mail Addresse", "installer/email_invalid": "Deine E-Mail-Adresse ist ungültig.", "installer/enabled": "Aktiviert", "installer/enter_admin_details": "Bitte gib die Details für das Admin-Konto ein.", @@ -885,11 +885,11 @@ "user/delete_all": "Alle löschen", "user/disable": "Deaktivieren", "user/disabled": "Deaktiviert", - "user/email": "Email", - "user/email_address": "Email Adresse", + "user/email": "E-Mail", + "user/email_address": "E-Mail Adresse", "user/email_already_exists": "Die E-Mail-Adresse existiert bereits.", "user/email_changed_successfully": "E-Mail-Adresse erfolgreich geändert.", - "user/email_or_username": "Email oder Username", + "user/email_or_username": "E-Mail oder Benutzername", "user/email_required": "Bitte gebe eine gültige E-Mail-Adresse an.", "user/enable": "Aktivieren", "user/enabled": "Aktiviert", @@ -993,7 +993,7 @@ "user/topic_updates": "Erhalte E-Mails für Themen, denen du folgst", "user/two_factor_auth": "Zwei-Faktor-Authentisierung", "user/unable_to_connect_to_authme_db": "Es konnte keine Verbindung zur AuthMe-Datenbank hergestellt werden. Wenn dieser Fehler weiterhin besteht, wende dich bitte an einen Administrator.", - "user/unable_to_send_forgot_password_email": "Die Email zum zurücksetzen des Passworts konnte nicht versendet werden. Bitte wende dich an einen Administrator.", + "user/unable_to_send_forgot_password_email": "Die E-Mail zum zurücksetzen des Passworts konnte nicht versendet werden. Bitte wende dich an einen Administrator.", "user/unblock_user": "Benutzer blockierung aufheben", "user/upload": "Hochladen", "user/upload_new_avatar": "Ein neues Profilbild hochladen", @@ -1041,8 +1041,8 @@ "admin/integration_identifier_required": "{{integration}} identifier wird benötigt.", "admin/integration_updated_successfully": "Die Integration wurde erfolgreich aktualisiert.", "admin/integration_username": "{{integration}} Benutzername", - "admin/integration_username_invalid": "{{integration}} Username ist ungültig.", - "admin/integration_username_required": "{{integration}} Username wird benötigt.", + "admin/integration_username_invalid": "{{integration}} Benutzername ist ungültig.", + "admin/integration_username_required": "{{integration}} Benutzername wird benötigt.", "admin/is_verified": "Ist Verifiziert?", "admin/layout": "Layout", "admin/light": "Hell", @@ -1244,7 +1244,7 @@ "admin/clone_group": "Gruppe klonen", "admin/emoji_joypixels": "JoyPixels", "admin/emoji_style": "Emoji Style", - "admin/emoji_style_help": "Ändere dein Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", + "admin/emoji_style_help": "Ändere, welches Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", "admin/emoji_native": "Nativ", "admin/emoji_twemoji": "Twemoji", "general/joined": "Beigetreten", From a36779dd7ce60997b1585154fa16db5ed7439449 Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Sun, 11 Jun 2023 11:57:29 +0000 Subject: [PATCH 078/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index ca7bfeddc7..f16ea8ec9a 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -30,7 +30,7 @@ "admin/authme_db_password": "AuthMe Datenbank Passwort", "admin/authme_db_port": "AuthMe Datenbank Port", "admin/authme_db_table": "AuthMe Benutzer Tabelle", - "admin/authme_db_user": "AuthMe Datenbank Username", + "admin/authme_db_user": "AuthMe Datenbank Benutzername", "admin/authme_hash_algorithm": "AuthMe Hash Algorithmus", "admin/authme_integration": "AuthMe Integration", "admin/authme_integration_info": "Wenn die AuthMe-Integration aktiviert ist, können Benutzer sich nur im Spiel registrieren.", @@ -158,7 +158,7 @@ "admin/email_resend_failed": "Das erneute Senden von E-Mails ist fehlgeschlagen. Überprüfe Deine E-Mail-Einstellungen.", "admin/email_resent_successfully": "E-Mail erfolgreich erneut gesendet.", "admin/email_settings_updated_successfully": "Die E-Mail-Einstellungen wurden erfolgreich aktualisiert.", - "admin/email_verification": "Email Verifikation aktivieren?", + "admin/email_verification": "E-Mail Verifizierung aktivieren?", "admin/emails": "E-Mails", "admin/emails_mass_message": "Massen-E-Mail-Nachricht", "admin/emails_mass_message_loading": "Laden ... Bitte lade die Seite nicht neu. Das kann eine Weile dauern.", @@ -175,7 +175,7 @@ "admin/enable_player_list": "Spielerliste aktivieren?", "admin/enable_registration": "Registrierung aktivieren?", "admin/enable_status_query": "Aktiviere Status Abfrage?", - "admin/enable_username_sync": "Username Synchronisation aktivieren?", + "admin/enable_username_sync": "Benutzername Synchronisation aktivieren?", "admin/enable_username_sync_info": "Wenn diese Option aktiviert ist, werden die Benutzernamen der Website aktualisiert, damit sie mit den Benutzernamen im Spiel übereinstimmen. Dies geschieht, wenn das In-Game-Plugin eine Liste von UUIDs und Benutzernamen für Online-Spieler an die Website sendet.", "admin/enabled": "Aktiviert", "admin/enter_authme_db_details": "Bitte gebe gültige Datenbank Informationen ein.", @@ -200,7 +200,7 @@ "admin/force_tfa_alert": "Für Deine Gruppe muss die Zwei-Faktor-Authentifizierung aktiviert sein.", "admin/force_tfa_warning": "Bitte vergewissere dich, dass du weißt, was das tut, sonst riskierst du, dich und alle Gruppenmitglieder auszusperren.", "admin/force_www": "www erzwingen?", - "admin/forgot_password_email": "Password vergessen Email", + "admin/forgot_password_email": "Password vergessen E-Mail", "admin/forum_posts": "Anzeige im Forum", "admin/forum_topic_reply_email": "Forum Thema Antwort", "admin/general_settings": "Allgemeine Einstellungen", @@ -225,7 +225,7 @@ "admin/group_sync_rules_updated_successfully": "Gruppensynchronisierungsregeln wurden erfolgreich aktualisiert.", "admin/group_updated_successfully": "Gruppe erfolgreich aktualisiert.", "admin/group_username_colour": "Benutzernamenfarbe der Gruppe", - "admin/group_username_css": "Gruppen Username CSS", + "admin/group_username_css": "Gruppen Benutzername CSS", "admin/groups": "Gruppen", "admin/groups_added": "Gruppen hinzugefügt", "admin/groups_removed": "Gruppen entfernt", @@ -291,7 +291,7 @@ "admin/minecraft_avatar_source": "Minecraft Avatar Quelle", "admin/minecraft_servers": "Minecraft Server", "admin/minecraft_settings_updated_successfully": "Einstellungen erfolgreich aktualisiert.", - "admin/missing_contact_address": "Bitte gebe eine Kontakt Email mit 3 bis 255 Zeichen an.", + "admin/missing_contact_address": "Bitte gebe eine Kontakt E-Mail mit 3 bis 255 Zeichen an.", "admin/missing_sitename": "Der Seiten-Name muss zwischen 2 und 64 Zeichen lang sein.", "admin/mod_dir_still_exists": "Warnung! Das Verzeichnis modules/Core/pages/mod existiert noch. Bitte entferne dieses Verzeichnis.", "admin/mode_toggle": "Dunkler Modus", @@ -306,7 +306,7 @@ "admin/name_maximum_16": "Der Name darf nicht länger als 16 Zeichen sein", "admin/name_required": "Ein Name ist erforderlich", "admin/nameless_news": "NamelessMC Neuigkeiten", - "admin/navbar_colour": "Navbar Farbe", + "admin/navbar_colour": "Farbe der Navigationsleiste", "admin/navbar_icon": "Symbol für die Navigationsleiste", "admin/navbar_icon_instructions": "Du kannst hier auch jedem Navigationsleistenelement ein Symbol hinzufügen, z. B. mithilfe von {{faLink}}, {{semLink}}.", "admin/navbar_order": "Navigationsleistenposition", @@ -342,7 +342,7 @@ "admin/oauth": "OAuth", "admin/oauth_info": "Konfiguriere den OAuth-Provider, damit sich die Benutzer mit ihren Konten in sozialen Netzwerken anmelden können. {{docLinkStart}}Schau dir die Dokumentation an, um Hilfe zu erhalten{{docLinkEnd}}.", "admin/other_log": "Andere Protokolle", - "admin/outgoing_email": "Ausgehende Email Addresse", + "admin/outgoing_email": "Ausgehende E-Mail Addresse", "admin/outgoing_email_info": "Dies ist die Absender Emailadresse die NamelessMC benutzt.", "admin/overview": "Übersicht", "admin/page": "Seite", @@ -419,7 +419,7 @@ "admin/registered": "Registriert", "admin/registration": "Registrierung", "admin/registration_disabled_message": "Registration Deaktiviert Nachricht", - "admin/registration_email": "Registrations Email", + "admin/registration_email": "Registrations E-Mail", "admin/registration_settings_updated": "Die Registrierungseinstellungen wurden erfolgreich aktualisiert.", "admin/registrations": "Anmeldungen", "admin/required": "Benötigt", @@ -436,7 +436,7 @@ "admin/select_default_avatar": "Wähle ein neues Standard Avatar:", "admin/select_user_group": "Du musst eine Benutzergruppe auswählen.", "admin/send": "Senden", - "admin/send_test_email": "Sende Test Email", + "admin/send_test_email": "Sende Test E-Mail", "admin/send_test_email_info": "Die folgende Schaltfläche versucht, eine E-Mail an Deine E-Mail-Adresse zu senden, {{email}}. Falls Irgendwelche Fehler, die beim Senden der E-Mail enstehen, werden angezeigt.", "admin/sending_mass_message": "Massennachricht senden", "admin/seo": "SEO", @@ -500,7 +500,7 @@ "admin/templates_installed_successfully": "Neue Vorlagen wurden erfolgreich installiert.", "admin/terms_error": "Bitte stelle sicher, dass Deine Geschäftsbedingungen nicht länger als 100000 Zeichen sind.", "admin/terms_updated": "Bedingungen erfolgreich aktualisiert.", - "admin/test_email_success": "Test Email erfolgreich versendet!", + "admin/test_email_success": "Test E-Mail erfolgreich versendet!", "admin/text": "Text", "admin/text_colour": "Text Farbe", "admin/text_colour_required": "Textfarbe ist erforderlich", @@ -531,7 +531,7 @@ "admin/up_to_date": "Deine NamelessMC Version ist aktuell!", "admin/update": "Update", "admin/update_user_languages": "Benutzersprache aktualisieren", - "admin/update_user_languages_warning": "Dadurch wird die Sprache für alle Benutzer Ihrer Website aktualisiert, auch wenn sie bereits eine Sprache ausgewählt haben!", + "admin/update_user_languages_warning": "Dadurch wird die Sprache für alle Benutzer/innen auf deiner Website aktualisiert, auch wenn diese bereits eine Sprache ausgewählt haben!", "admin/updated_user_languages": "Benutersprache aktualisiert.", "admin/updated_x": "Aktualisiert am: {{updatedAt}}", "admin/upload_new_image": "Neues Bild hochladen", @@ -708,7 +708,7 @@ "installer/database_port": "Datenbank Port", "installer/database_username": "Datenbank Benutzername", "installer/disabled": "Deaktiviert", - "installer/email_address": "Email Addresse", + "installer/email_address": "E-Mail Addresse", "installer/email_invalid": "Deine E-Mail-Adresse ist ungültig.", "installer/enabled": "Aktiviert", "installer/enter_admin_details": "Bitte gib die Details für das Admin-Konto ein.", @@ -885,11 +885,11 @@ "user/delete_all": "Alle löschen", "user/disable": "Deaktivieren", "user/disabled": "Deaktiviert", - "user/email": "Email", - "user/email_address": "Email Adresse", + "user/email": "E-Mail", + "user/email_address": "E-Mail Adresse", "user/email_already_exists": "Die E-Mail-Adresse existiert bereits.", "user/email_changed_successfully": "E-Mail-Adresse erfolgreich geändert.", - "user/email_or_username": "Email oder Username", + "user/email_or_username": "E-Mail oder Benutzername", "user/email_required": "Bitte gebe eine gültige E-Mail-Adresse an.", "user/enable": "Aktivieren", "user/enabled": "Aktiviert", @@ -993,7 +993,7 @@ "user/topic_updates": "Erhalte E-Mails für Themen, denen du folgst", "user/two_factor_auth": "Zwei-Faktor-Authentisierung", "user/unable_to_connect_to_authme_db": "Es konnte keine Verbindung zur AuthMe-Datenbank hergestellt werden. Wenn dieser Fehler weiterhin besteht, wende dich bitte an einen Administrator.", - "user/unable_to_send_forgot_password_email": "Die Email zum zurücksetzen des Passworts konnte nicht versendet werden. Bitte wende dich an einen Administrator.", + "user/unable_to_send_forgot_password_email": "Die E-Mail zum zurücksetzen des Passworts konnte nicht versendet werden. Bitte wende dich an einen Administrator.", "user/unblock_user": "Benutzer blockierung aufheben", "user/upload": "Hochladen", "user/upload_new_avatar": "Ein neues Profilbild hochladen", @@ -1041,8 +1041,8 @@ "admin/integration_identifier_required": "{{integration}} identifier wird benötigt.", "admin/integration_updated_successfully": "Die Integration wurde erfolgreich aktualisiert.", "admin/integration_username": "{{integration}} Benutzername", - "admin/integration_username_invalid": "{{integration}} Username ist ungültig.", - "admin/integration_username_required": "{{integration}} Username wird benötigt.", + "admin/integration_username_invalid": "{{integration}} Benutzername ist ungültig.", + "admin/integration_username_required": "{{integration}} Benutzername wird benötigt.", "admin/is_verified": "Ist Verifiziert?", "admin/layout": "Layout", "admin/light": "Hell", @@ -1244,7 +1244,7 @@ "admin/clone_group": "Gruppe klonen", "admin/emoji_joypixels": "JoyPixels", "admin/emoji_style": "Emoji Style", - "admin/emoji_style_help": "Ändere dein Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", + "admin/emoji_style_help": "Ändere, welches Emoji-Set verwendet wird:
• Native {{nativeExample}}
• Twemoji {{twemojiExample}}
• JoyPixels {{joypixelsExample}}", "admin/emoji_native": "Nativ", "admin/emoji_twemoji": "Twemoji", "general/joined": "Beigetreten", From faf13b234b5ad72f1828ee3f278698b2f3619253 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Tue, 13 Jun 2023 23:32:36 +0200 Subject: [PATCH 079/193] Remove Discord discriminator requirement (#3374) --- .../classes/DiscordIntegration.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/Discord Integration/classes/DiscordIntegration.php b/modules/Discord Integration/classes/DiscordIntegration.php index 52ac6a8adc..d135ff1199 100644 --- a/modules/Discord Integration/classes/DiscordIntegration.php +++ b/modules/Discord Integration/classes/DiscordIntegration.php @@ -4,7 +4,7 @@ * * @package Modules\Core\Integrations * @author Partydragen - * @version 2.1.0 + * @version 2.1.1 * @license MIT */ class DiscordIntegration extends IntegrationBase { @@ -81,12 +81,14 @@ public function validateUsername(string $username, int $integration_user_id = 0) $validation = Validate::check(['username' => $username], [ 'username' => [ Validate::REQUIRED => true, - Validate::REGEX => '/^.{2,32}#[0-9]{4}$/' + Validate::MIN => 2, + Validate::MAX => 32 ] ])->messages([ 'username' => [ Validate::REQUIRED => $this->_language->get('admin', 'integration_username_required', ['integration' => $this->getName()]), - Validate::REGEX => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]) + Validate::MIN => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]), + Validate::MAX => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]) ] ]); @@ -166,9 +168,9 @@ public function successfulRegistration(User $user) { // Link integration if user registered using discord oauth if (Session::exists('oauth_register_data')) { $data = json_decode(Session::get('oauth_register_data'), true); - if ($data['provider'] == 'discord' && isset($data['data']['username']) && isset($data['data']['discriminator'])) { + if ($data['provider'] == 'discord' && isset($data['data']['username'])) { - $username = $data['data']['username'] . '#' . $data['data']['discriminator']; + $username = $data['data']['username']; $discord_id = $data['data']['id']; if ($this->validateIdentifier($discord_id) && $this->validateUsername($username)) { $integrationUser = new IntegrationUser($this); From 19540acc9c66a5a09c38cb86a77e2310939fdc1f Mon Sep 17 00:00:00 2001 From: Partydragen Date: Tue, 13 Jun 2023 23:32:36 +0200 Subject: [PATCH 080/193] Remove Discord discriminator requirement (#3374) --- .../classes/DiscordIntegration.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/Discord Integration/classes/DiscordIntegration.php b/modules/Discord Integration/classes/DiscordIntegration.php index 4fd1d49c84..b191d876b6 100644 --- a/modules/Discord Integration/classes/DiscordIntegration.php +++ b/modules/Discord Integration/classes/DiscordIntegration.php @@ -4,7 +4,7 @@ * * @package Modules\Core\Integrations * @author Partydragen - * @version 2.1.0 + * @version 2.1.1 * @license MIT */ class DiscordIntegration extends IntegrationBase { @@ -81,12 +81,14 @@ public function validateUsername(string $username, int $integration_user_id = 0) $validation = Validate::check(['username' => $username], [ 'username' => [ Validate::REQUIRED => true, - Validate::REGEX => '/^.{2,32}#[0-9]{4}$/' + Validate::MIN => 2, + Validate::MAX => 32 ] ])->messages([ 'username' => [ Validate::REQUIRED => $this->_language->get('admin', 'integration_username_required', ['integration' => $this->getName()]), - Validate::REGEX => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]) + Validate::MIN => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]), + Validate::MAX => $this->_language->get('admin', 'integration_username_invalid', ['integration' => $this->getName()]) ] ]); @@ -166,9 +168,9 @@ public function successfulRegistration(User $user) { // Link integration if user registered using discord oauth if (Session::exists('oauth_register_data')) { $data = json_decode(Session::get('oauth_register_data'), true); - if ($data['provider'] == 'discord' && isset($data['data']['username']) && isset($data['data']['discriminator'])) { + if ($data['provider'] == 'discord' && isset($data['data']['username'])) { - $username = $data['data']['username'] . '#' . $data['data']['discriminator']; + $username = $data['data']['username']; $discord_id = $data['data']['id']; if ($this->validateIdentifier($discord_id) && $this->validateUsername($username)) { $integrationUser = new IntegrationUser($this); From dac3d5f2754ee999b3071d12eb58a090b9c71366 Mon Sep 17 00:00:00 2001 From: Supercrafter100 <58982133+supercrafter100@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:47:52 +0200 Subject: [PATCH 081/193] Fix outdated event --- modules/Core/pages/authme_connector.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/modules/Core/pages/authme_connector.php b/modules/Core/pages/authme_connector.php index a73c54c5c7..31ff47561d 100644 --- a/modules/Core/pages/authme_connector.php +++ b/modules/Core/pages/authme_connector.php @@ -167,17 +167,9 @@ $user = new User($user_id); $user->addGroup($default_group); - EventHandler::executeEvent('registerUser', [ - 'user_id' => $user_id, - 'username' => $user->getDisplayname(), - 'content' => $language->get('user', 'user_x_has_registered', [ - 'user' => $user->getDisplayname(), - ]), - 'avatar_url' => $user->getAvatar(128, true), - 'url' => URL::getSelfURL() . ltrim($user->getProfileURL(), '/'), - 'language' => $language, - ] - ); + EventHandler::executeEvent(new UserRegisteredEvent( + $user, + )); // Link the minecraft integration $integration->successfulRegistration($user); From df239d5efc9de6eba3efdffd54e6f4085876d243 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Thu, 15 Jun 2023 20:05:09 +0200 Subject: [PATCH 082/193] Fix oauth linking for forced integrations (#3395) --- core/templates/frontend_init.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/templates/frontend_init.php b/core/templates/frontend_init.php index d5f4819891..7a4dff701a 100644 --- a/core/templates/frontend_init.php +++ b/core/templates/frontend_init.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.0.3 + * NamelessMC version 2.1.1 * * License: MIT * @@ -33,7 +33,7 @@ } // Check if any integrations is required before user can continue -if ($user->isLoggedIn() && defined('PAGE') && PAGE != 'cc_connections') { +if ($user->isLoggedIn() && defined('PAGE') && PAGE != 'cc_connections' && PAGE != 'oauth') { foreach (Integrations::getInstance()->getEnabledIntegrations() as $integration) { if ($integration->data()->required && $integration->allowLinking()) { $integrationUser = $user->getIntegration($integration->getName()); From 148b500bf2acce30f00ad0f9e7f2a4e668e5254c Mon Sep 17 00:00:00 2001 From: Supercrafter100 <58982133+supercrafter100@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:47:52 +0200 Subject: [PATCH 083/193] Fix outdated event --- modules/Core/pages/authme_connector.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/modules/Core/pages/authme_connector.php b/modules/Core/pages/authme_connector.php index acf757f8cc..0f4840196f 100644 --- a/modules/Core/pages/authme_connector.php +++ b/modules/Core/pages/authme_connector.php @@ -167,17 +167,9 @@ $user = new User($user_id); $user->addGroup($default_group); - EventHandler::executeEvent('registerUser', [ - 'user_id' => $user_id, - 'username' => $user->getDisplayname(), - 'content' => $language->get('user', 'user_x_has_registered', [ - 'user' => $user->getDisplayname(), - ]), - 'avatar_url' => $user->getAvatar(128, true), - 'url' => URL::getSelfURL() . ltrim($user->getProfileURL(), '/'), - 'language' => $language, - ] - ); + EventHandler::executeEvent(new UserRegisteredEvent( + $user, + )); // Link the minecraft integration $integration->successfulRegistration($user); From 28a2ada620e2e8b1535d59b3e781c56aaaf063ac Mon Sep 17 00:00:00 2001 From: Partydragen Date: Thu, 15 Jun 2023 20:05:09 +0200 Subject: [PATCH 084/193] Fix oauth linking for forced integrations (#3395) --- core/templates/frontend_init.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/templates/frontend_init.php b/core/templates/frontend_init.php index 6229b8bd4d..88e99b85bc 100644 --- a/core/templates/frontend_init.php +++ b/core/templates/frontend_init.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.0.3 + * NamelessMC version 2.1.1 * * License: MIT * @@ -33,7 +33,7 @@ } // Check if any integrations is required before user can continue -if ($user->isLoggedIn() && defined('PAGE') && PAGE != 'cc_connections') { +if ($user->isLoggedIn() && defined('PAGE') && PAGE != 'cc_connections' && PAGE != 'oauth') { foreach (Integrations::getInstance()->getEnabledIntegrations() as $integration) { if ($integration->data()->required && $integration->allowLinking()) { $integrationUser = $user->getIntegration($integration->getName()); From 63c3f67c4ea176e72f8881ce52820ddc64d8183d Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 17 Jun 2023 10:50:12 +0100 Subject: [PATCH 085/193] Require module autoload file before module init (#3397) * Require module autoload file before module init * Change module loading to require once --- core/init.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/init.php b/core/init.php index 6694467572..b02d0778a1 100644 --- a/core/init.php +++ b/core/init.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.0.2 + * NamelessMC version 2.1.1 * * License: MIT * @@ -449,9 +449,17 @@ return $a['priority'] - $b['priority']; }); + // Load module dependencies + foreach ($enabled_modules as $module) { + if (file_exists(ROOT_PATH . '/modules/' . $module['name'] . '/autoload.php')) { + require_once ROOT_PATH . '/modules/' . $module['name'] . '/autoload.php'; + } + } + + // Load modules foreach ($enabled_modules as $module) { if (file_exists(ROOT_PATH . '/modules/' . $module['name'] . '/init.php')) { - require(ROOT_PATH . '/modules/' . $module['name'] . '/init.php'); + require_once ROOT_PATH . '/modules/' . $module['name'] . '/init.php'; } } From 9d559e2d2a4a11ee0ab2622b83da1f83b945c020 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 17 Jun 2023 10:50:12 +0100 Subject: [PATCH 086/193] Require module autoload file before module init (#3397) * Require module autoload file before module init * Change module loading to require once --- core/init.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/init.php b/core/init.php index 686350d8fa..f76ac4ab70 100644 --- a/core/init.php +++ b/core/init.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.0.2 + * NamelessMC version 2.1.1 * * License: MIT * @@ -454,9 +454,17 @@ return $a['priority'] - $b['priority']; }); + // Load module dependencies + foreach ($enabled_modules as $module) { + if (file_exists(ROOT_PATH . '/modules/' . $module['name'] . '/autoload.php')) { + require_once ROOT_PATH . '/modules/' . $module['name'] . '/autoload.php'; + } + } + + // Load modules foreach ($enabled_modules as $module) { if (file_exists(ROOT_PATH . '/modules/' . $module['name'] . '/init.php')) { - require(ROOT_PATH . '/modules/' . $module['name'] . '/init.php'); + require_once ROOT_PATH . '/modules/' . $module['name'] . '/init.php'; } } From 1cbe2589787e5f07021153ec344b85fcad6618fb Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 18 Jun 2023 11:26:25 +0100 Subject: [PATCH 087/193] Prepare 2.1.1 release (#3399) --- CHANGELOG.md | 28 +++++++++++- core/classes/Database/DatabaseInitialiser.php | 2 +- core/includes/updates/202.php | 24 ----------- core/includes/updates/203.php | 43 ------------------- core/includes/updates/{201.php => 210.php} | 4 +- custom/panel_templates/Default/template.php | 8 ++-- custom/templates/DefaultRevamp/template.php | 8 ++-- modules/Cookie Consent/module.php | 6 +-- modules/Core/module.php | 6 +-- modules/Discord Integration/module.php | 4 +- modules/Forum/module.php | 6 +-- modules/Members/module.php | 6 +-- package.json | 2 +- 13 files changed, 52 insertions(+), 95 deletions(-) delete mode 100644 core/includes/updates/202.php delete mode 100644 core/includes/updates/203.php rename core/includes/updates/{201.php => 210.php} (76%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d7752888..af6fc732ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,34 @@ # NamelessMC v2 Changelog -## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.1.0...v2) +## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.1.1...v2) > [Milestone](https://github.com/NamelessMC/Nameless/milestone/21) +## [2.1.1](https://github.com/NamelessMC/Nameless/compare/v2.1.0...v2.1.1) - 2023-06-18 +### Added +- Add Russian translation for Members module [#3352](https://github.com/NamelessMC/Nameless/pull/3352) + +### Changed +- Add all missing languages to the Members module [#3350](https://github.com/NamelessMC/Nameless/pull/3350) +- Remove unable to update groups catch [#3360](https://github.com/NamelessMC/Nameless/pull/3360) +- Call compileQueries only when needed [#3386](https://github.com/NamelessMC/Nameless/pull/3386) +- Remove Discord discriminator requirement [#3374](https://github.com/NamelessMC/Nameless/pull/3374) +- Require module autoload file before module init [#3397](https://github.com/NamelessMC/Nameless/pull/3397) + +### Fixed +- Fix AuthMe enabled value [#3349](https://github.com/NamelessMC/Nameless/pull/3349) +- Ensure Minecraft integration is enabled [#3356](https://github.com/NamelessMC/Nameless/pull/3356) +- Include .htaccess file in release zip [#3362](https://github.com/NamelessMC/Nameless/pull/3362) +- Fix missing cache settings [#3361](https://github.com/NamelessMC/Nameless/pull/3361) +- Fix user group issue [#3365](https://github.com/NamelessMC/Nameless/pull/3365) +- Fix forum title/description encoding on edit [#3359](https://github.com/NamelessMC/Nameless/pull/3359) +- Remove placeholder from singular message [#3369](https://github.com/NamelessMC/Nameless/pull/3369) +- Fix not being able to see Members page in Navigation settings [#3372](https://github.com/NamelessMC/Nameless/pull/3372) +- Fix multi query [#3383](https://github.com/NamelessMC/Nameless/pull/3383) +- Fix icon not being properly shown [#3377](https://github.com/NamelessMC/Nameless/pull/3377) +- Fix ghost player on status page [#3351](https://github.com/NamelessMC/Nameless/pull/3351) +- Fix outdated event [#3394](https://github.com/NamelessMC/Nameless/pull/3394) +- Fix OAuth linking for forced integrations [#3395](https://github.com/NamelessMC/Nameless/pull/3395) + ## [2.1.0](https://github.com/NamelessMC/Nameless/compare/v2.0.3...v2.1.0) - 2023-05-01 ### Added - Add dark mode toggle switch [#2877](https://github.com/NamelessMC/Nameless/pull/2877) diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 7002ff4ae8..8a27cd0fc1 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -183,7 +183,7 @@ private function initialiseSettings(): void { Settings::set('recaptcha_type', 'Recaptcha3'); Settings::set('recaptcha_login', '0'); Settings::set('email_verification', '1'); - Settings::set('nameless_version', '2.1.0'); + Settings::set('nameless_version', '2.1.1'); Settings::set('version_checked', date('U')); Settings::set('phpmailer', '0'); Settings::set('user_avatars', '0'); diff --git a/core/includes/updates/202.php b/core/includes/updates/202.php deleted file mode 100644 index 00cf4a3778..0000000000 --- a/core/includes/updates/202.php +++ /dev/null @@ -1,24 +0,0 @@ -runMigrations(); - - // Move 'authme_db' json row in settings table to 'authme' section in config file - $authme_db = null; - $result = DB::getInstance()->get('settings', ['name', 'authme_db']); - if ($result->count()) { - $authme_db = $result->first()->value; - } - if ($authme_db !== null) { - $authme_db = (array) json_decode($authme_db); - unset($authme_db['sync']); - $authme_db['port'] = (int) $authme_db['port']; - Config::set('authme', $authme_db); - DB::getInstance()->delete('settings', ['name', 'authme_db']); - } - - $this->setVersion('2.0.3'); - } -}; diff --git a/core/includes/updates/203.php b/core/includes/updates/203.php deleted file mode 100644 index ef584aa098..0000000000 --- a/core/includes/updates/203.php +++ /dev/null @@ -1,43 +0,0 @@ -runMigrations(); - - // Move query interval from cache to settings table - $cache = new Cache(['name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/']); - $cache->setCache('server_query_cache'); - if ($cache->isCached('query_interval')) { - $query_interval = $cache->retrieve('query_interval'); - if (is_numeric($query_interval) && $query_interval <= 60 && $query_interval >= 5) { - // Interval ok - } else { - // Default to 10 - $query_interval = 10; - } - Settings::set('minecraft_query_interval', $query_interval); - } - - // Replace `external_query` with `query_type` - Settings::set('query_type', Settings::get('external_query') == 1 ? 'external' : 'internal'); - Settings::set('external_query', null); - - // Forum post conversion - ConvertForumPostTask::schedule(); - - // Sitemap generation - GenerateSitemap::schedule(new Language('core', 'en_UK')); - - // Add all groups to member list selectable groups - Settings::set('member_list_viewable_groups', json_encode(array_map(static fn (Group $group) => $group->id, Group::all())), 'Members'); - - Config::set('core.installed', true); - - // Ensure admin group has administrator perm - $admin_group = DB::getInstance()->query('SELECT permissions FROM nl2_groups WHERE id = 2')->first(); - $perms = json_decode($admin_group->permissions, true); - $perms['administrator'] = 1; - DB::getInstance()->query('UPDATE nl2_groups SET permissions = ? WHERE id = 2', [json_encode($perms)]); - - $this->setVersion('2.1.0'); - } -}; diff --git a/core/includes/updates/201.php b/core/includes/updates/210.php similarity index 76% rename from core/includes/updates/201.php rename to core/includes/updates/210.php index eb115a8a93..f7ea670b1b 100644 --- a/core/includes/updates/201.php +++ b/core/includes/updates/210.php @@ -1,10 +1,8 @@ runMigrations(); - $this->setVersion('2.0.2'); + $this->setVersion('2.1.1'); } }; diff --git a/custom/panel_templates/Default/template.php b/custom/panel_templates/Default/template.php index 247b9bf700..7c880f0054 100644 --- a/custom/panel_templates/Default/template.php +++ b/custom/panel_templates/Default/template.php @@ -5,7 +5,7 @@ * * For NamelessMC * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -24,8 +24,8 @@ public function __construct(Smarty $smarty, Language $language) { parent::__construct( 'Default', // Template name - '2.1.0', // Template version - '2.1.0', // Nameless version template is made for + '2.1.1', // Template version + '2.1.1', // Nameless version template is made for 'Coldfire' // Author, you can use HTML here ); @@ -40,7 +40,7 @@ public function __construct(Smarty $smarty, Language $language) { $this->addCSSFiles([ (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/sb-admin-2.min.css' => [], 'https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' => [], - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=210' => [], + (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=211' => [], ]); $this->addJSFiles([ diff --git a/custom/templates/DefaultRevamp/template.php b/custom/templates/DefaultRevamp/template.php index b9c0ca1c70..ce487af751 100755 --- a/custom/templates/DefaultRevamp/template.php +++ b/custom/templates/DefaultRevamp/template.php @@ -2,7 +2,7 @@ /* * Made by Samerton | Revamped by Xemah * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -25,8 +25,8 @@ class DefaultRevamp_Template extends TemplateBase { public function __construct($cache, $smarty, $language, $user, $pages) { $template = [ 'name' => 'DefaultRevamp', - 'version' => '2.1.0', - 'nl_version' => '2.1.0', + 'version' => '2.1.1', + 'nl_version' => '2.1.1', 'author' => 'Xemah', ]; @@ -80,7 +80,7 @@ public function onPageLoad() { define('PAGE_LOAD_TIME', $this->_language->get('general', 'page_loaded_in', ['time' => round($page_load, 3)])); $this->addCSSFiles([ - $this->_template['path'] . 'css/custom.css?v=210' => [] + $this->_template['path'] . 'css/custom.css?v=211' => [] ]); $route = (isset($_GET['route']) ? rtrim($_GET['route'], '/') : '/'); diff --git a/modules/Cookie Consent/module.php b/modules/Cookie Consent/module.php index f5788b4f7a..8beaac5e9c 100644 --- a/modules/Cookie Consent/module.php +++ b/modules/Cookie Consent/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $cookie_language, Pages $name = 'Cookie Consent'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Core/module.php b/modules/Core/module.php index 53d1463e2d..cdbc57a748 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -21,8 +21,8 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga $name = 'Core'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Discord Integration/module.php b/modules/Discord Integration/module.php index 3b35dbd504..9a480bb5bf 100644 --- a/modules/Discord Integration/module.php +++ b/modules/Discord Integration/module.php @@ -9,8 +9,8 @@ public function __construct(Language $language, Pages $pages, Endpoints $endpoin $name = 'Discord Integration'; $author = 'Aberdeener'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Forum/module.php b/modules/Forum/module.php index 35735b38c3..6d2ae791b1 100644 --- a/modules/Forum/module.php +++ b/modules/Forum/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $forum_language, Pages $name = 'Forum'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Members/module.php b/modules/Members/module.php index ac5dcd7ea8..6a2cd24b8b 100644 --- a/modules/Members/module.php +++ b/modules/Members/module.php @@ -2,7 +2,7 @@ /* * Made by Aberdeener * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $members_language, Page $name = 'Members'; $author = 'Aberdeener'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/package.json b/package.json index 08c8cfe93c..d155a04f36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nameless", - "version": "2.1.0", + "version": "2.1.1", "repository": "https://github.com/NamelessMC/Nameless", "license": "MIT", "private": true, From 7ff744d3fa0e4874db4c068b7393b68f56ffff55 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 18 Jun 2023 11:26:25 +0100 Subject: [PATCH 088/193] Prepare 1.1.1 release (#3399) --- CHANGELOG.md | 28 +++++++++++- core/classes/Database/DatabaseInitialiser.php | 2 +- core/includes/updates/202.php | 24 ----------- core/includes/updates/203.php | 43 ------------------- core/includes/updates/{201.php => 210.php} | 4 +- custom/panel_templates/Default/template.php | 8 ++-- custom/templates/DefaultRevamp/template.php | 8 ++-- modules/Cookie Consent/module.php | 6 +-- modules/Core/module.php | 6 +-- modules/Discord Integration/module.php | 4 +- modules/Forum/module.php | 6 +-- modules/Members/module.php | 6 +-- package.json | 2 +- 13 files changed, 52 insertions(+), 95 deletions(-) delete mode 100644 core/includes/updates/202.php delete mode 100644 core/includes/updates/203.php rename core/includes/updates/{201.php => 210.php} (76%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d7752888..af6fc732ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,34 @@ # NamelessMC v2 Changelog -## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.1.0...v2) +## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.1.1...v2) > [Milestone](https://github.com/NamelessMC/Nameless/milestone/21) +## [2.1.1](https://github.com/NamelessMC/Nameless/compare/v2.1.0...v2.1.1) - 2023-06-18 +### Added +- Add Russian translation for Members module [#3352](https://github.com/NamelessMC/Nameless/pull/3352) + +### Changed +- Add all missing languages to the Members module [#3350](https://github.com/NamelessMC/Nameless/pull/3350) +- Remove unable to update groups catch [#3360](https://github.com/NamelessMC/Nameless/pull/3360) +- Call compileQueries only when needed [#3386](https://github.com/NamelessMC/Nameless/pull/3386) +- Remove Discord discriminator requirement [#3374](https://github.com/NamelessMC/Nameless/pull/3374) +- Require module autoload file before module init [#3397](https://github.com/NamelessMC/Nameless/pull/3397) + +### Fixed +- Fix AuthMe enabled value [#3349](https://github.com/NamelessMC/Nameless/pull/3349) +- Ensure Minecraft integration is enabled [#3356](https://github.com/NamelessMC/Nameless/pull/3356) +- Include .htaccess file in release zip [#3362](https://github.com/NamelessMC/Nameless/pull/3362) +- Fix missing cache settings [#3361](https://github.com/NamelessMC/Nameless/pull/3361) +- Fix user group issue [#3365](https://github.com/NamelessMC/Nameless/pull/3365) +- Fix forum title/description encoding on edit [#3359](https://github.com/NamelessMC/Nameless/pull/3359) +- Remove placeholder from singular message [#3369](https://github.com/NamelessMC/Nameless/pull/3369) +- Fix not being able to see Members page in Navigation settings [#3372](https://github.com/NamelessMC/Nameless/pull/3372) +- Fix multi query [#3383](https://github.com/NamelessMC/Nameless/pull/3383) +- Fix icon not being properly shown [#3377](https://github.com/NamelessMC/Nameless/pull/3377) +- Fix ghost player on status page [#3351](https://github.com/NamelessMC/Nameless/pull/3351) +- Fix outdated event [#3394](https://github.com/NamelessMC/Nameless/pull/3394) +- Fix OAuth linking for forced integrations [#3395](https://github.com/NamelessMC/Nameless/pull/3395) + ## [2.1.0](https://github.com/NamelessMC/Nameless/compare/v2.0.3...v2.1.0) - 2023-05-01 ### Added - Add dark mode toggle switch [#2877](https://github.com/NamelessMC/Nameless/pull/2877) diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 55845eea9f..568b0130f1 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -183,7 +183,7 @@ private function initialiseSettings(): void { Util::setSetting('recaptcha_type', 'Recaptcha3'); Util::setSetting('recaptcha_login', '0'); Util::setSetting('email_verification', '1'); - Util::setSetting('nameless_version', '2.1.0'); + Util::setSetting('nameless_version', '2.1.1'); Util::setSetting('version_checked', date('U')); Util::setSetting('phpmailer', '0'); Util::setSetting('user_avatars', '0'); diff --git a/core/includes/updates/202.php b/core/includes/updates/202.php deleted file mode 100644 index 00cf4a3778..0000000000 --- a/core/includes/updates/202.php +++ /dev/null @@ -1,24 +0,0 @@ -runMigrations(); - - // Move 'authme_db' json row in settings table to 'authme' section in config file - $authme_db = null; - $result = DB::getInstance()->get('settings', ['name', 'authme_db']); - if ($result->count()) { - $authme_db = $result->first()->value; - } - if ($authme_db !== null) { - $authme_db = (array) json_decode($authme_db); - unset($authme_db['sync']); - $authme_db['port'] = (int) $authme_db['port']; - Config::set('authme', $authme_db); - DB::getInstance()->delete('settings', ['name', 'authme_db']); - } - - $this->setVersion('2.0.3'); - } -}; diff --git a/core/includes/updates/203.php b/core/includes/updates/203.php deleted file mode 100644 index 8ef34408f5..0000000000 --- a/core/includes/updates/203.php +++ /dev/null @@ -1,43 +0,0 @@ -runMigrations(); - - // Move query interval from cache to settings table - $cache = new Cache(['name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/']); - $cache->setCache('server_query_cache'); - if ($cache->isCached('query_interval')) { - $query_interval = $cache->retrieve('query_interval'); - if (is_numeric($query_interval) && $query_interval <= 60 && $query_interval >= 5) { - // Interval ok - } else { - // Default to 10 - $query_interval = 10; - } - Util::setSetting('minecraft_query_interval', $query_interval); - } - - // Replace `external_query` with `query_type` - Util::setSetting('query_type', Util::getSetting('external_query') == 1 ? 'external' : 'internal'); - Util::setSetting('external_query', null); - - // Forum post conversion - ConvertForumPostTask::schedule(); - - // Sitemap generation - GenerateSitemap::schedule(new Language('core', 'en_UK')); - - // Add all groups to member list selectable groups - Util::setSetting('member_list_viewable_groups', json_encode(array_map(static fn (Group $group) => $group->id, Group::all())), 'Members'); - - Config::set('core.installed', true); - - // Ensure admin group has administrator perm - $admin_group = DB::getInstance()->query('SELECT permissions FROM nl2_groups WHERE id = 2')->first(); - $perms = json_decode($admin_group->permissions, true); - $perms['administrator'] = 1; - DB::getInstance()->query('UPDATE nl2_groups SET permissions = ? WHERE id = 2', [json_encode($perms)]); - - $this->setVersion('2.1.0'); - } -}; diff --git a/core/includes/updates/201.php b/core/includes/updates/210.php similarity index 76% rename from core/includes/updates/201.php rename to core/includes/updates/210.php index eb115a8a93..f7ea670b1b 100644 --- a/core/includes/updates/201.php +++ b/core/includes/updates/210.php @@ -1,10 +1,8 @@ runMigrations(); - $this->setVersion('2.0.2'); + $this->setVersion('2.1.1'); } }; diff --git a/custom/panel_templates/Default/template.php b/custom/panel_templates/Default/template.php index 247b9bf700..7c880f0054 100644 --- a/custom/panel_templates/Default/template.php +++ b/custom/panel_templates/Default/template.php @@ -5,7 +5,7 @@ * * For NamelessMC * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -24,8 +24,8 @@ public function __construct(Smarty $smarty, Language $language) { parent::__construct( 'Default', // Template name - '2.1.0', // Template version - '2.1.0', // Nameless version template is made for + '2.1.1', // Template version + '2.1.1', // Nameless version template is made for 'Coldfire' // Author, you can use HTML here ); @@ -40,7 +40,7 @@ public function __construct(Smarty $smarty, Language $language) { $this->addCSSFiles([ (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/sb-admin-2.min.css' => [], 'https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' => [], - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=210' => [], + (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=211' => [], ]); $this->addJSFiles([ diff --git a/custom/templates/DefaultRevamp/template.php b/custom/templates/DefaultRevamp/template.php index 2ac3ddf288..138079d8e8 100755 --- a/custom/templates/DefaultRevamp/template.php +++ b/custom/templates/DefaultRevamp/template.php @@ -2,7 +2,7 @@ /* * Made by Samerton | Revamped by Xemah * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -25,8 +25,8 @@ class DefaultRevamp_Template extends TemplateBase { public function __construct($cache, $smarty, $language, $user, $pages) { $template = [ 'name' => 'DefaultRevamp', - 'version' => '2.1.0', - 'nl_version' => '2.1.0', + 'version' => '2.1.1', + 'nl_version' => '2.1.1', 'author' => 'Xemah', ]; @@ -80,7 +80,7 @@ public function onPageLoad() { define('PAGE_LOAD_TIME', $this->_language->get('general', 'page_loaded_in', ['time' => round($page_load, 3)])); $this->addCSSFiles([ - $this->_template['path'] . 'css/custom.css?v=210' => [] + $this->_template['path'] . 'css/custom.css?v=211' => [] ]); $route = (isset($_GET['route']) ? rtrim($_GET['route'], '/') : '/'); diff --git a/modules/Cookie Consent/module.php b/modules/Cookie Consent/module.php index f5788b4f7a..8beaac5e9c 100644 --- a/modules/Cookie Consent/module.php +++ b/modules/Cookie Consent/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $cookie_language, Pages $name = 'Cookie Consent'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Core/module.php b/modules/Core/module.php index 5796311b97..f3814fe54c 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -21,8 +21,8 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga $name = 'Core'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Discord Integration/module.php b/modules/Discord Integration/module.php index c0b9c2a8c7..03ad2dc7f4 100644 --- a/modules/Discord Integration/module.php +++ b/modules/Discord Integration/module.php @@ -9,8 +9,8 @@ public function __construct(Language $language, Pages $pages, Endpoints $endpoin $name = 'Discord Integration'; $author = 'Aberdeener'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Forum/module.php b/modules/Forum/module.php index 35735b38c3..6d2ae791b1 100644 --- a/modules/Forum/module.php +++ b/modules/Forum/module.php @@ -2,7 +2,7 @@ /* * Made by Samerton * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $forum_language, Pages $name = 'Forum'; $author = 'Samerton'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/modules/Members/module.php b/modules/Members/module.php index ac5dcd7ea8..6a2cd24b8b 100644 --- a/modules/Members/module.php +++ b/modules/Members/module.php @@ -2,7 +2,7 @@ /* * Made by Aberdeener * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.1.0 + * NamelessMC version 2.1.1 * * License: MIT * @@ -20,8 +20,8 @@ public function __construct(Language $language, Language $members_language, Page $name = 'Members'; $author = 'Aberdeener'; - $module_version = '2.1.0'; - $nameless_version = '2.1.0'; + $module_version = '2.1.1'; + $nameless_version = '2.1.1'; parent::__construct($this, $name, $author, $module_version, $nameless_version); diff --git a/package.json b/package.json index 08c8cfe93c..d155a04f36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nameless", - "version": "2.1.0", + "version": "2.1.1", "repository": "https://github.com/NamelessMC/Nameless", "license": "MIT", "private": true, From c8005749b068a3c923634c5ec1deecafe0cf84eb Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 19 Jun 2023 10:14:11 +0100 Subject: [PATCH 089/193] Small misc improvements (#3389) * Support custom migration tables * Allow specifying custom migrations directory * PHP 7.4 fix * Consistent parameters and add rollback function * Update Phinx and fix migrations * Tidy strtolower * Phinx feature flags * Make makeWhere function in DB class public * Add new buildAssetPath function to URL class --------- Co-authored-by: Robin Slot --- core/classes/Core/URL.php | 10 ++++++++++ core/classes/Database/DB.php | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/classes/Core/URL.php b/core/classes/Core/URL.php index c7b3da98df..b3e51323a2 100644 --- a/core/classes/Core/URL.php +++ b/core/classes/Core/URL.php @@ -85,6 +85,16 @@ private static function buildNonFriendly(string $url, string $params): string { return (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/index.php?route=' . $url . ((substr($url, -1) == '/') ? '' : '/'); } + /** + * Build an asset path + * + * @param string $path Contains the asset path relative to the root Nameless directory + * @return string + */ + public static function buildAssetPath(string $path): string { + return (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/' . ltrim($path, '/'); + } + /** * Get the server name. * diff --git a/core/classes/Database/DB.php b/core/classes/Database/DB.php index 727297fe91..a1c5d88301 100644 --- a/core/classes/Database/DB.php +++ b/core/classes/Database/DB.php @@ -474,9 +474,9 @@ public function addColumn(string $table, string $column, string $attributes): bo * column, operator (default =), value, and glue (default AND). * @return array The where clause string, and parameters to bind. */ - private function makeWhere(array $clauses): array { + public static function makeWhere(array $clauses): array { if (count($clauses) === count($clauses, COUNT_RECURSIVE)) { - return $this->makeWhere([$clauses]); + return self::makeWhere([$clauses]); } $where_clauses = []; @@ -486,7 +486,7 @@ private function makeWhere(array $clauses): array { } if (count($clause) !== count($clause, COUNT_RECURSIVE)) { - $this->makeWhere(...$clause); + self::makeWhere(...$clause); continue; } From 0f1a2ed6836eac209b44d30e4612bc967fa45b5d Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Tue, 13 Jun 2023 18:57:30 +0000 Subject: [PATCH 090/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index f16ea8ec9a..5a570da4e0 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -175,7 +175,7 @@ "admin/enable_player_list": "Spielerliste aktivieren?", "admin/enable_registration": "Registrierung aktivieren?", "admin/enable_status_query": "Aktiviere Status Abfrage?", - "admin/enable_username_sync": "Benutzername Synchronisation aktivieren?", + "admin/enable_username_sync": "Benutzernamen-Synchronisation aktivieren?", "admin/enable_username_sync_info": "Wenn diese Option aktiviert ist, werden die Benutzernamen der Website aktualisiert, damit sie mit den Benutzernamen im Spiel übereinstimmen. Dies geschieht, wenn das In-Game-Plugin eine Liste von UUIDs und Benutzernamen für Online-Spieler an die Website sendet.", "admin/enabled": "Aktiviert", "admin/enter_authme_db_details": "Bitte gebe gültige Datenbank Informationen ein.", @@ -200,7 +200,7 @@ "admin/force_tfa_alert": "Für Deine Gruppe muss die Zwei-Faktor-Authentifizierung aktiviert sein.", "admin/force_tfa_warning": "Bitte vergewissere dich, dass du weißt, was das tut, sonst riskierst du, dich und alle Gruppenmitglieder auszusperren.", "admin/force_www": "www erzwingen?", - "admin/forgot_password_email": "Password vergessen E-Mail", + "admin/forgot_password_email": "E-Mail Password vergessen", "admin/forum_posts": "Anzeige im Forum", "admin/forum_topic_reply_email": "Forum Thema Antwort", "admin/general_settings": "Allgemeine Einstellungen", @@ -436,7 +436,7 @@ "admin/select_default_avatar": "Wähle ein neues Standard Avatar:", "admin/select_user_group": "Du musst eine Benutzergruppe auswählen.", "admin/send": "Senden", - "admin/send_test_email": "Sende Test E-Mail", + "admin/send_test_email": "Test E-Mail senden", "admin/send_test_email_info": "Die folgende Schaltfläche versucht, eine E-Mail an Deine E-Mail-Adresse zu senden, {{email}}. Falls Irgendwelche Fehler, die beim Senden der E-Mail enstehen, werden angezeigt.", "admin/sending_mass_message": "Massennachricht senden", "admin/seo": "SEO", From 9f68e0e95af1e756493e71e8464323917e012701 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 19 Jun 2023 10:14:11 +0100 Subject: [PATCH 091/193] Small misc improvements (#3389) * Support custom migration tables * Allow specifying custom migrations directory * PHP 7.4 fix * Consistent parameters and add rollback function * Update Phinx and fix migrations * Tidy strtolower * Phinx feature flags * Make makeWhere function in DB class public * Add new buildAssetPath function to URL class --------- Co-authored-by: Robin Slot --- core/classes/Core/URL.php | 10 ++++++++++ core/classes/Database/DB.php | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/classes/Core/URL.php b/core/classes/Core/URL.php index c7b3da98df..b3e51323a2 100644 --- a/core/classes/Core/URL.php +++ b/core/classes/Core/URL.php @@ -85,6 +85,16 @@ private static function buildNonFriendly(string $url, string $params): string { return (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/index.php?route=' . $url . ((substr($url, -1) == '/') ? '' : '/'); } + /** + * Build an asset path + * + * @param string $path Contains the asset path relative to the root Nameless directory + * @return string + */ + public static function buildAssetPath(string $path): string { + return (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/' . ltrim($path, '/'); + } + /** * Get the server name. * diff --git a/core/classes/Database/DB.php b/core/classes/Database/DB.php index 727297fe91..a1c5d88301 100644 --- a/core/classes/Database/DB.php +++ b/core/classes/Database/DB.php @@ -474,9 +474,9 @@ public function addColumn(string $table, string $column, string $attributes): bo * column, operator (default =), value, and glue (default AND). * @return array The where clause string, and parameters to bind. */ - private function makeWhere(array $clauses): array { + public static function makeWhere(array $clauses): array { if (count($clauses) === count($clauses, COUNT_RECURSIVE)) { - return $this->makeWhere([$clauses]); + return self::makeWhere([$clauses]); } $where_clauses = []; @@ -486,7 +486,7 @@ private function makeWhere(array $clauses): array { } if (count($clause) !== count($clause, COUNT_RECURSIVE)) { - $this->makeWhere(...$clause); + self::makeWhere(...$clause); continue; } From c5efca8e09cf40b5e53840efd61e57ca3ffc342d Mon Sep 17 00:00:00 2001 From: Justman10000 Date: Tue, 13 Jun 2023 18:57:30 +0000 Subject: [PATCH 092/193] Translated using translate.namelessmc.com Co-authored-by: Justman10000 Translate-URL: https://translate.namelessmc.com/projects/namelessmc/nameless/de/ Translation: NamelessMC/Website - Core --- custom/languages/de_DE.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom/languages/de_DE.json b/custom/languages/de_DE.json index f16ea8ec9a..5a570da4e0 100644 --- a/custom/languages/de_DE.json +++ b/custom/languages/de_DE.json @@ -175,7 +175,7 @@ "admin/enable_player_list": "Spielerliste aktivieren?", "admin/enable_registration": "Registrierung aktivieren?", "admin/enable_status_query": "Aktiviere Status Abfrage?", - "admin/enable_username_sync": "Benutzername Synchronisation aktivieren?", + "admin/enable_username_sync": "Benutzernamen-Synchronisation aktivieren?", "admin/enable_username_sync_info": "Wenn diese Option aktiviert ist, werden die Benutzernamen der Website aktualisiert, damit sie mit den Benutzernamen im Spiel übereinstimmen. Dies geschieht, wenn das In-Game-Plugin eine Liste von UUIDs und Benutzernamen für Online-Spieler an die Website sendet.", "admin/enabled": "Aktiviert", "admin/enter_authme_db_details": "Bitte gebe gültige Datenbank Informationen ein.", @@ -200,7 +200,7 @@ "admin/force_tfa_alert": "Für Deine Gruppe muss die Zwei-Faktor-Authentifizierung aktiviert sein.", "admin/force_tfa_warning": "Bitte vergewissere dich, dass du weißt, was das tut, sonst riskierst du, dich und alle Gruppenmitglieder auszusperren.", "admin/force_www": "www erzwingen?", - "admin/forgot_password_email": "Password vergessen E-Mail", + "admin/forgot_password_email": "E-Mail Password vergessen", "admin/forum_posts": "Anzeige im Forum", "admin/forum_topic_reply_email": "Forum Thema Antwort", "admin/general_settings": "Allgemeine Einstellungen", @@ -436,7 +436,7 @@ "admin/select_default_avatar": "Wähle ein neues Standard Avatar:", "admin/select_user_group": "Du musst eine Benutzergruppe auswählen.", "admin/send": "Senden", - "admin/send_test_email": "Sende Test E-Mail", + "admin/send_test_email": "Test E-Mail senden", "admin/send_test_email_info": "Die folgende Schaltfläche versucht, eine E-Mail an Deine E-Mail-Adresse zu senden, {{email}}. Falls Irgendwelche Fehler, die beim Senden der E-Mail enstehen, werden angezeigt.", "admin/sending_mass_message": "Massennachricht senden", "admin/seo": "SEO", From 3b90156b8ad773f6791b3b2cf3d8a10ff8f3afff Mon Sep 17 00:00:00 2001 From: Partydragen Date: Mon, 19 Jun 2023 19:47:40 +0200 Subject: [PATCH 093/193] Rework user group cache issue (#3398) --- core/classes/Core/User.php | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/classes/Core/User.php b/core/classes/Core/User.php index 6cb28f8e59..9545289bd8 100644 --- a/core/classes/Core/User.php +++ b/core/classes/Core/User.php @@ -144,6 +144,7 @@ public function addGroup(int $group_id, int $expire = 0): bool { $group = Group::find($group_id); if ($group) { $this->_groups[$group_id] = $group; + self::$_group_cache[$this->data()->id][$group_id] = $group; } EventHandler::executeEvent(new UserGroupAddedEvent( @@ -524,28 +525,26 @@ public function getGroups(): array { } if (isset(self::$_group_cache[$this->data()->id])) { - $groups_query = self::$_group_cache[$this->data()->id]; + $this->_groups = self::$_group_cache[$this->data()->id]; } else { $groups_query = $this->_db->query('SELECT nl2_groups.* FROM nl2_users_groups INNER JOIN nl2_groups ON group_id = nl2_groups.id WHERE user_id = ? AND deleted = 0 ORDER BY `order`', [$this->data()->id]); if ($groups_query->count()) { - $groups_query = $groups_query->results(); + foreach ($groups_query->results() as $item) { + $this->_groups[$item->id] = new Group($item); + } } else { - $groups_query = []; + $this->_groups = []; } - self::$_group_cache[$this->data()->id] = $groups_query; + + self::$_group_cache[$this->data()->id] = $this->_groups; } - if ($groups_query) { - foreach ($groups_query as $item) { - $this->_groups[$item->id] = new Group($item); - } - } else { + if (!count($this->_groups)) { // Get default group // TODO: Use PRE_VALIDATED_DEFAULT ? $default_group = Group::find(1, 'default_group'); $default_group_id = $default_group->id ?? 1; - $this->_groups = []; $this->addGroup($default_group_id); } @@ -676,6 +675,7 @@ public function setGroup(int $group_id, int $expire = 0) { $group = Group::find($group_id); if ($group) { $this->_groups[$group_id] = $group; + self::$_group_cache[$this->data()->id] = $this->_groups; } } @@ -706,6 +706,7 @@ public function removeGroup(?int $group_id): bool { )); unset($this->_groups[$group_id]); + unset(self::$_group_cache[$this->data()->id][$group_id]); return true; } From 0cd13548c40c3a215f7eaff52dc2279a699e0988 Mon Sep 17 00:00:00 2001 From: Partydragen Date: Mon, 19 Jun 2023 19:47:40 +0200 Subject: [PATCH 094/193] Rework user group cache issue (#3398) --- core/classes/Core/User.php | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/classes/Core/User.php b/core/classes/Core/User.php index b689b32dc5..0e42cef355 100644 --- a/core/classes/Core/User.php +++ b/core/classes/Core/User.php @@ -144,6 +144,7 @@ public function addGroup(int $group_id, int $expire = 0): bool { $group = Group::find($group_id); if ($group) { $this->_groups[$group_id] = $group; + self::$_group_cache[$this->data()->id][$group_id] = $group; } EventHandler::executeEvent(new UserGroupAddedEvent( @@ -524,28 +525,26 @@ public function getGroups(): array { } if (isset(self::$_group_cache[$this->data()->id])) { - $groups_query = self::$_group_cache[$this->data()->id]; + $this->_groups = self::$_group_cache[$this->data()->id]; } else { $groups_query = $this->_db->query('SELECT nl2_groups.* FROM nl2_users_groups INNER JOIN nl2_groups ON group_id = nl2_groups.id WHERE user_id = ? AND deleted = 0 ORDER BY `order`', [$this->data()->id]); if ($groups_query->count()) { - $groups_query = $groups_query->results(); + foreach ($groups_query->results() as $item) { + $this->_groups[$item->id] = new Group($item); + } } else { - $groups_query = []; + $this->_groups = []; } - self::$_group_cache[$this->data()->id] = $groups_query; + + self::$_group_cache[$this->data()->id] = $this->_groups; } - if ($groups_query) { - foreach ($groups_query as $item) { - $this->_groups[$item->id] = new Group($item); - } - } else { + if (!count($this->_groups)) { // Get default group // TODO: Use PRE_VALIDATED_DEFAULT ? $default_group = Group::find(1, 'default_group'); $default_group_id = $default_group->id ?? 1; - $this->_groups = []; $this->addGroup($default_group_id); } @@ -676,6 +675,7 @@ public function setGroup(int $group_id, int $expire = 0) { $group = Group::find($group_id); if ($group) { $this->_groups[$group_id] = $group; + self::$_group_cache[$this->data()->id] = $this->_groups; } } @@ -706,6 +706,7 @@ public function removeGroup(?int $group_id): bool { )); unset($this->_groups[$group_id]); + unset(self::$_group_cache[$this->data()->id][$group_id]); return true; } From 01e2f1de313c766bb85140ab1b548ec61c73982d Mon Sep 17 00:00:00 2001 From: Tadhg Boyle Date: Tue, 20 Jun 2023 10:35:42 -0700 Subject: [PATCH 095/193] Add `PHP_SAPI` checks on scripts (#3403) --- dev/scripts/delete_empty_language_strings.php | 4 ++++ dev/scripts/generate_checksums.php | 4 ++++ dev/scripts/verify_checksums.php | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/dev/scripts/delete_empty_language_strings.php b/dev/scripts/delete_empty_language_strings.php index c707b1485c..dcac194bd7 100644 --- a/dev/scripts/delete_empty_language_strings.php +++ b/dev/scripts/delete_empty_language_strings.php @@ -1,5 +1,9 @@ Date: Tue, 20 Jun 2023 10:35:42 -0700 Subject: [PATCH 096/193] Add `PHP_SAPI` checks on scripts (#3403) --- dev/scripts/delete_empty_language_strings.php | 4 ++++ dev/scripts/generate_checksums.php | 4 ++++ dev/scripts/verify_checksums.php | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/dev/scripts/delete_empty_language_strings.php b/dev/scripts/delete_empty_language_strings.php index c707b1485c..dcac194bd7 100644 --- a/dev/scripts/delete_empty_language_strings.php +++ b/dev/scripts/delete_empty_language_strings.php @@ -1,5 +1,9 @@ Date: Wed, 21 Jun 2023 10:19:46 -0700 Subject: [PATCH 097/193] Reactions revamp & profile widgets (#3272) * Initial work on reactions revamp and profile widgets * Remove unneeded changes * Remove unneeded change * fix style * Render emojis in reaction list StaffCP * wip minecraft account profile widget, sticky widgets on profile page * Add server name and IP to last seen * remove * rename to reaction score to match member list * align reactions table contents center * fix * wip - nicer abstraction, widgets never query db, skin 3d viewer (undecided) * wip - make reaction modals ajax, copy new reaction bar to profile posts * wip reaction modals * wip proper sorting * wip modals * wip get reaction submission working on profile wall posts * add back helpful and creative default reactions * reduce query amount on view topic * remove debug statement * wip * wip * simplify ProfileWidget pages * Revert forum dropdown * fix css syntax * fix emoji title and alt being strange * add back order input * sort widgets by order in list * fix settings link always showing * phpdoc * add widget name to exception * insert default widget data if not found * missing end if * properly cache forum news per-group * fix * fix cache key, news permission check * fix styling * wip * respect reaction ordering * wip * wip * support custom reaction scores, update member list to properly calculate * don't hardcode words * wip * allow multiple reactions * redirect to post * code style * phpstan * wip * remove hardcoded terms + fix copy * use npm for skinview3d * create ReactionContext and refactor * fix cache * docblocks * fix spelling * pr amendments --- core/classes/DTO/Reaction.php | 71 ++++ core/classes/DTO/UserData.php | 2 - core/classes/Database/DB.php | 25 +- core/classes/Database/DatabaseInitialiser.php | 34 +- .../Misc/ProfilePostReactionContext.php | 78 ++++ core/classes/Misc/ReactionContext.php | 107 +++++ core/classes/Misc/ReactionContextsManager.php | 81 ++++ core/classes/Widgets/AbstractWidget.php | 163 ++++++++ core/classes/Widgets/ProfileWidgetBase.php | 10 + core/classes/Widgets/WidgetBase.php | 132 +----- core/classes/Widgets/WidgetData.php | 16 + core/classes/Widgets/Widgets.php | 128 +++--- ...50_add_order_column_to_reactions_table.php | 16 + ...4231334_delete_users_reputation_column.php | 14 + ...custom_score_column_to_reactions_table.php | 25 ++ ...t_reaction_scores_member_list_provider.php | 23 ++ custom/languages/en_UK.json | 11 + .../panel_templates/Default/core/modules.tpl | 104 +++-- .../Default/core/reactions.tpl | 95 +++-- ...{reactions_edit.tpl => reactions_form.tpl} | 95 +++-- .../Default/core/reactions_new.tpl | 139 ------- .../panel_templates/Default/core/widgets.tpl | 87 ++-- .../Default/core/widgets_edit.tpl | 70 ++-- custom/templates/DefaultRevamp/css/custom.css | 29 +- .../DefaultRevamp/forum/view_topic.tpl | 255 ++++++------ .../templates/DefaultRevamp/js/core/core.js | 8 +- custom/templates/DefaultRevamp/profile.tpl | 390 ++++++++++-------- .../DefaultRevamp/reactions_modal.tpl | 41 ++ .../widgets/minecraft_account.tpl | 38 ++ .../DefaultRevamp/widgets/reactions.tpl | 34 ++ dev/scripts/cli_install.php | 12 +- dev/scripts/postinstall.js | 5 + dev/scripts/seeder/ForumPostSeeder.php | 10 +- dev/scripts/seeder/ForumSubforumSeeder.php | 2 +- dev/scripts/seeder/Seeder.php | 5 + dev/scripts/seeder/UserProfilePostSeeder.php | 7 +- dev/scripts/seeder/UserSeeder.php | 1 - .../classes/Events/UserReactionAddedEvent.php | 31 ++ .../Events/UserReactionDeletedEvent.php | 28 ++ .../includes/endpoints/ServerInfoEndpoint.php | 5 +- modules/Core/module.php | 11 + modules/Core/pages/panel/modules.php | 10 +- modules/Core/pages/panel/reactions.php | 164 +++++--- modules/Core/pages/panel/widgets.php | 220 +++++----- modules/Core/pages/profile.php | 144 +++---- modules/Core/queries/reactions.php | 162 ++++++++ modules/Core/widgets/FacebookWidget.php | 40 +- .../widgets/MinecraftAccountProfileWidget.php | 74 ++++ modules/Core/widgets/OnlineStaffWidget.php | 16 +- modules/Core/widgets/OnlineUsersWidget.php | 16 +- modules/Core/widgets/ProfilePostsWidget.php | 18 +- .../Core/widgets/ReactionsProfileWidget.php | 106 +++++ modules/Core/widgets/ServerStatusWidget.php | 16 +- modules/Core/widgets/StatsWidget.php | 16 +- modules/Core/widgets/TwitterWidget.php | 30 +- .../widgets/DiscordWidget.php | 16 +- .../classes/ForumPostReactionContext.php | 94 +++++ ...tForumReactionScoresMemberListProvider.php | 40 ++ ...ighestReactionScoresMemberListProvider.php | 27 -- modules/Forum/front_page.php | 7 +- modules/Forum/language/en_UK.json | 3 +- modules/Forum/module.php | 5 +- modules/Forum/pages/forum/reactions.php | 87 ---- modules/Forum/pages/forum/view_topic.php | 70 ++-- modules/Forum/widgets/LatestPostsWidget.php | 17 +- modules/Members/pages/members.php | 5 +- package-lock.json | 106 ++++- package.json | 1 + 68 files changed, 2540 insertions(+), 1408 deletions(-) create mode 100644 core/classes/DTO/Reaction.php create mode 100644 core/classes/Misc/ProfilePostReactionContext.php create mode 100644 core/classes/Misc/ReactionContext.php create mode 100644 core/classes/Misc/ReactionContextsManager.php create mode 100644 core/classes/Widgets/AbstractWidget.php create mode 100644 core/classes/Widgets/ProfileWidgetBase.php create mode 100644 core/classes/Widgets/WidgetData.php create mode 100644 core/migrations/20230301084250_add_order_column_to_reactions_table.php create mode 100644 core/migrations/20230304231334_delete_users_reputation_column.php create mode 100644 core/migrations/20230611003455_add_custom_score_column_to_reactions_table.php create mode 100644 core/migrations/20230613054745_rename_highest_reaction_scores_member_list_provider.php rename custom/panel_templates/Default/core/{reactions_edit.tpl => reactions_form.tpl} (59%) delete mode 100644 custom/panel_templates/Default/core/reactions_new.tpl create mode 100644 custom/templates/DefaultRevamp/reactions_modal.tpl create mode 100644 custom/templates/DefaultRevamp/widgets/minecraft_account.tpl create mode 100644 custom/templates/DefaultRevamp/widgets/reactions.tpl create mode 100644 modules/Core/classes/Events/UserReactionAddedEvent.php create mode 100644 modules/Core/classes/Events/UserReactionDeletedEvent.php create mode 100644 modules/Core/queries/reactions.php create mode 100644 modules/Core/widgets/MinecraftAccountProfileWidget.php create mode 100644 modules/Core/widgets/ReactionsProfileWidget.php create mode 100644 modules/Forum/classes/ForumPostReactionContext.php create mode 100644 modules/Forum/classes/HighestForumReactionScoresMemberListProvider.php delete mode 100644 modules/Forum/classes/HighestReactionScoresMemberListProvider.php delete mode 100644 modules/Forum/pages/forum/reactions.php diff --git a/core/classes/DTO/Reaction.php b/core/classes/DTO/Reaction.php new file mode 100644 index 0000000000..525a14b879 --- /dev/null +++ b/core/classes/DTO/Reaction.php @@ -0,0 +1,71 @@ +id = $row->id; + $this->name = $row->name; + $this->html = Text::renderEmojis($row->html); + $this->raw_html = $row->html; + $this->enabled = $row->enabled; + $this->type = $row->type; + $this->custom_score = $row->custom_score; + $this->order = $row->order; + } + + /** + * @return array + */ + public static function all(): array { + $rows = DB::getInstance()->query('SELECT * FROM nl2_reactions ORDER BY `order`')->results(); + $fields = []; + foreach ($rows as $row) { + $fields[$row->id] = new Reaction($row); + } + return $fields; + } + + /** + * @param string $value + * @param string $column + * @return array|Reaction + */ + public static function find(string $value, string $column = 'id') { + $rows = DB::getInstance()->query("SELECT * FROM nl2_reactions WHERE `$column` = ? ORDER BY `order`", [$value]); + if (!$rows->count()) { + return []; + } + + if ($rows->count() === 1) { + return new Reaction($rows->first()); + } + + $fields = []; + foreach ($rows->results() as $row) { + $fields[$row->id] = new Reaction($row); + } + + return $fields; + } +} diff --git a/core/classes/DTO/UserData.php b/core/classes/DTO/UserData.php index 804bb84c97..a06ebdf108 100644 --- a/core/classes/DTO/UserData.php +++ b/core/classes/DTO/UserData.php @@ -21,7 +21,6 @@ class UserData { public bool $active; public ?string $signature; public int $profile_views; - public int $reputation; public ?string $reset_code; public bool $has_avatar; public bool $gravatar; @@ -56,7 +55,6 @@ public function __construct(object $row) { $this->active = $row->active; $this->signature = $row->signature; $this->profile_views = $row->profile_views; - $this->reputation = $row->reputation; $this->reset_code = $row->reset_code; $this->has_avatar = $row->has_avatar; $this->gravatar = $row->gravatar; diff --git a/core/classes/Database/DB.php b/core/classes/Database/DB.php index a1c5d88301..0e38da81bd 100644 --- a/core/classes/Database/DB.php +++ b/core/classes/Database/DB.php @@ -184,6 +184,15 @@ public function count(): int { return $this->_count; } + /** + * Get whether any results exist. + * + * @return bool Whether any results exist. + */ + public function exists(): bool { + return $this->_count > 0; + } + /** * Get the last inserted ID * @@ -206,10 +215,14 @@ public function error(): bool { * Perform a SELECT query on the database. * * @param string $table The table to select from. - * @param array $where The where clause. + * @param mixed $where The where clause. If not an array, it will be used for "id" column lookup. * @return static|false This instance if successful, false otherwise. */ - public function get(string $table, array $where = []) { + public function get(string $table, $where = []) { + if (!is_array($where)) { + $where = ['id', '=', $where]; + } + return $this->action('SELECT *', $table, $where); } @@ -217,10 +230,14 @@ public function get(string $table, array $where = []) { * Perform a DELETE query on the database. * * @param string $table The table to delete from. - * @param array $where The where clause. + * @param mixed $where The where clause. If not an array, it will be used for "id" column lookup. * @return static|false This instance if successful, false otherwise. */ - public function delete(string $table, array $where) { + public function delete(string $table, $where) { + if (!is_array($where)) { + $where = ['id', '=', $where]; + } + return $this->action('DELETE', $table, $where); } diff --git a/core/classes/Database/DatabaseInitialiser.php b/core/classes/Database/DatabaseInitialiser.php index 8a27cd0fc1..d18147b3ca 100644 --- a/core/classes/Database/DatabaseInitialiser.php +++ b/core/classes/Database/DatabaseInitialiser.php @@ -155,23 +155,45 @@ private function initialiseIntegrations(): void { private function initialiseReactions(): void { $this->_db->insert('reactions', [ 'name' => 'Like', - 'html' => '', + 'html' => '👍', 'enabled' => true, - 'type' => 2 + 'type' => Reaction::TYPE_POSITIVE, ]); $this->_db->insert('reactions', [ 'name' => 'Dislike', - 'html' => '', + 'html' => '👎', 'enabled' => true, - 'type' => 0 + 'type' => Reaction::TYPE_NEGATIVE, ]); $this->_db->insert('reactions', [ 'name' => 'Meh', - 'html' => '', + 'html' => '😐', 'enabled' => true, - 'type' => 1 + 'type' => Reaction::TYPE_NEUTRAL, + ]); + + $this->_db->insert('reactions', [ + 'name' => 'Helpful', + 'html' => '🛠️', + 'enabled' => true, + 'type' => Reaction::TYPE_POSITIVE, + ]); + + $this->_db->insert('reactions', [ + 'name' => 'Creative', + 'html' => '🌈', + 'enabled' => true, + 'type' => Reaction::TYPE_POSITIVE, + ]); + + $this->_db->insert('reactions', [ + 'name' => 'Amazing', + 'html' => '⭐', + 'enabled' => true, + 'type' => Reaction::TYPE_CUSTOM, + 'custom_score' => 5, ]); } diff --git a/core/classes/Misc/ProfilePostReactionContext.php b/core/classes/Misc/ProfilePostReactionContext.php new file mode 100644 index 0000000000..fd37e7c22e --- /dev/null +++ b/core/classes/Misc/ProfilePostReactionContext.php @@ -0,0 +1,78 @@ +get('user', 'profile_posts_score'); + } + + public function getUserReceived(User $user): array { + return DB::getInstance()->query('SELECT r.reaction_id FROM nl2_user_profile_wall_posts_reactions r JOIN nl2_user_profile_wall_posts w ON r.post_id = w.id WHERE w.author_id = ?', [ + $user->data()->id + ])->results(); + } + + public function getUserGiven(User $user): array { + return DB::getInstance()->get('user_profile_wall_posts_reactions', ['user_id', $user->data()->id])->results(); + } + + public function validateReactable(int $reactable_id, User $user) { + // TODO check blocked? + $result = DB::getInstance()->get('user_profile_wall_posts', ['id', $reactable_id]); + + if ($result->exists()) { + return $result->first(); + } + + return false; + } + + public function hasReacted(User $user, Reaction $reaction, int $reactable_id) { + $result = DB::getInstance()->get('user_profile_wall_posts_reactions', [ + ['post_id', $reactable_id], ['user_id', $user->data()->id], ['reaction_id', $reaction->id] + ]); + + if ($result->exists()) { + return $result->first()->id; + } + + return false; + } + + public function giveReaction(User $user, User $receiver, Reaction $reaction, int $reactable_id): void { + DB::getInstance()->insert('user_profile_wall_posts_reactions', [ + 'post_id' => $reactable_id, + 'user_id' => $user->data()->id, + 'reaction_id' => $reaction->id, + 'time' => date('U'), + ]); + } + + public function deleteReaction(int $reactable_reaction_id): void { + DB::getInstance()->delete('user_profile_wall_posts_reactions', $reactable_reaction_id); + } + + public function getAllReactions(int $reactionable_id): array { + return DB::getInstance()->get('user_profile_wall_posts_reactions', ['post_id', $reactionable_id])->results(); + } + + public function reactionUserIdColumn(): string { + return 'user_id'; + } + + public function determineReceiver(object $reactable): User { + return new User(DB::getInstance()->get('user_profile_wall_posts', ['id', $reactable->id])->first()->author_id); + } +} diff --git a/core/classes/Misc/ReactionContext.php b/core/classes/Misc/ReactionContext.php new file mode 100644 index 0000000000..465c141ed2 --- /dev/null +++ b/core/classes/Misc/ReactionContext.php @@ -0,0 +1,107 @@ +_contexts[$context->name()] = $context; + } + + /** + * Get a reaction context by name. + * + * @param string $name Name of reaction context to get. + * @return ReactionContext|null Reaction context with the given name, or throws error if it does not exist. + */ + public function getContext(string $name): ?ReactionContext { + if (!isset($this->_contexts[$name])) { + throw new InvalidArgumentException('Invalid reaction context name: ' . $name); + } + + return $this->_contexts[$name]; + } + + /** + * Get all registered reaction contexts. + * + * @return ReactionContext[] All registered reaction contexts. + */ + public function getContexts(): array { + return $this->_contexts; + } + + /** + * Get all valid reaction context names. + * + * @return string[] All valid reaction context names. + */ + public function validContextNames(): array { + return array_map(static function (ReactionContext $context) { + return $context->name(); + }, $this->enabledContexts()); + } + + /** + * Get all valid reaction context friendly names. + * + * @param Language $language Language to translate friendly names in. + * @return string[] All valid reaction context friendly names. + */ + public function validContextFriendlyNames(Language $language): array { + return array_map(static function (ReactionContext $context) use ($language) { + return $context->friendlyName($language); + }, $this->enabledContexts()); + } + + /** + * Get all enabled reaction contexts. + * + * @return ReactionContext[] All enabled reaction contexts. + */ + private function enabledContexts(): array { + return array_filter($this->_contexts, static function (ReactionContext $context) { + return $context->isEnabled(); + }); + } +} diff --git a/core/classes/Widgets/AbstractWidget.php b/core/classes/Widgets/AbstractWidget.php new file mode 100644 index 0000000000..21dea1d9a5 --- /dev/null +++ b/core/classes/Widgets/AbstractWidget.php @@ -0,0 +1,163 @@ +_name; + } + + /** + * Get the location (`left` or `right`) that this widget will be displayed on. + * + * @return string Location of widget. + */ + public function getLocation(): string { + return $this->getData()->location; + } + + /** + * Get the path to the file for settings of this widget. + * + * @return string Widget settings URL. + */ + public function getSettings(): ?string { + return $this->_settings; + } + + /** + * Get the description of this widget. + * + * @return string Description of widget. + */ + public function getDescription(): string { + return $this->_description; + } + + /** + * Get the module of this widget. + * + * @return string Name of module. + */ + public function getModule(): string { + return $this->_module; + } + + /** + * Get the display order of this widget. + * + * @return int Display order of widget. + */ + public function getOrder(): int { + return $this->getData()->order; + } + + /** + * Get Smarty instance in use by this widget. + * + * @return Smarty Instance in use. + */ + public function getSmarty(): ?Smarty { + return $this->_smarty; + } + + /** + * Render this widget to be displayed on a template page. If this widget requires cookies and cookies are not allowed, a cookie notice is displayed instead. + * Returns an empty string if this widget is not to be displayed. + * + * @throws Exception + * @throws SmartyException + * + * @return string Content/HTML of this widget. + */ + public function display(): string { + if (defined('COOKIE_CHECK') && !COOKIES_ALLOWED && $this->_requires_cookies) { + return $this->_smarty->fetch('widgets/cookie_notice.tpl'); + } + + return $this->_content; + } + + /** + * Get pages this widget is enabled on. + * + * @return array Pages this widget is enabled on. + */ + abstract public function getPages(): array; + + /** + * Clear the cache for this widget, should be called when any settings of it are changed. + */ + final public function clearCache(): void { + $this->cache()->erase($this->getName()); + } + + /** + * Get widget data. + * Will use cache if available, otherwise will query the database and store the result in cache. + * + * @return WidgetData Widget data. + */ + protected function getData(): WidgetData { + if (isset($this->_data)) { + return $this->_data; + } + + $cache = $this->cache(); + + if ($cache->isCached($this->getName())) { + return $this->_data = new WidgetData($cache->retrieve($this->getName())); + } + + $row = DB::getInstance()->get('widgets', ['name', $this->getName()]); + if ($row->count()) { + $data = new WidgetData($row->first()); + $cache->store($this->getName(), $data); + + return $this->_data = $data; + } + + // Widget not found in database, create it + DB::getInstance()->insert('widgets', $data = [ + 'name' => $this->getName(), + 'enabled' => true, + 'location' => 'right', + 'order' => 10, + 'pages' => '["index","forum"]', + ]); + + $data = new WidgetData((object) $data); + $cache->store($this->getName(), $data); + + return $this->_data = $data; + } + + private function cache(): Cache { + $cache = $this->_cache ??= new Cache([ + 'name' => 'nameless', 'extension' => '.cache', 'path' => ROOT_PATH . '/cache/' + ]); + + $cache->setCache( + $this instanceof ProfileWidgetBase + ? 'profile_widgets' + : 'widgets' + ); + + return $cache; + } +} diff --git a/core/classes/Widgets/ProfileWidgetBase.php b/core/classes/Widgets/ProfileWidgetBase.php new file mode 100644 index 0000000000..36e1d1a6f3 --- /dev/null +++ b/core/classes/Widgets/ProfileWidgetBase.php @@ -0,0 +1,10 @@ +_pages = $pages; - $this->_requires_cookies = $requires_cookies; - } - - /** - * Get the name of this widget. - * - * @return string Name of widget. - */ - public function getName(): string { - return $this->_name; - } - - /** - * Get pages this widget is enabled on. - * - * @return array Pages this widget is enabled on. - */ - public function getPages(): array { - return $this->_pages; - } - - /** - * Get the location (`left` or `right`) that this widget will be displayed on. - * - * @return string Location of widget. - */ - public function getLocation(): string { - return $this->_location; - } - - /** - * Render this widget to be displayed on a template page. - * - * @throws Exception - * @throws SmartyException - * - * @return string Content/HTML of this widget. - */ - public function display(): string { - if (defined('COOKIE_CHECK') && $this->_requires_cookies && !COOKIES_ALLOWED) { - if ($this->_smarty) { - return $this->_smarty->fetch('widgets/cookie_notice.tpl'); - } - - return 'This widget requires cookies'; - } - return $this->_content; - } - - /** - * Get the description of this widget. - * - * @return string Description of widget. - */ - public function getDescription(): string { - return $this->_description; - } - - /** - * Get the module of this widget. - * - * @return string Name of module. - */ - public function getModule(): string { - return $this->_module; - } - - /** - * Get the URL for settings of this widget. - * - * @return string Widget settings URL. - */ - public function getSettings(): ?string { - return $this->_settings; - } - - /** - * Get Smarty instance in use by this widget. - * - * @return Smarty Instance in use. - */ - public function getSmarty(): ?Smarty { - return $this->_smarty; - } - - /** - * Get the display order of this widget. - * - * @return int Display order of widget. - */ - public function getOrder(): ?int { - return $this->_order; - } +abstract class WidgetBase extends AbstractWidget { /** * Generate this widget's `$_content`. */ abstract public function initialise(): void; - /** - * Get the data (location, order, pages) for a widget. - * - * @param string $name The widget to get data for. - * @return object|null Widgets data. - */ - protected static function getData(string $name): ?object { - return DB::getInstance()->query('SELECT `location`, `order`, `pages` FROM nl2_widgets WHERE `name` = ?', [$name])->first(); - } - - /** - * Parse the widgets JSON pages string into an array. - * - * @param object|null $data The widget data to get pages from. - * @return array The parsed pages array. - */ - protected static function parsePages(?object $data): array { - if (isset($data->pages)) { - return json_decode($data->pages, true) ?? []; - } - return []; + public function getPages(): array { + return $this->getData()->pages; } } diff --git a/core/classes/Widgets/WidgetData.php b/core/classes/Widgets/WidgetData.php new file mode 100644 index 0000000000..fd49abf101 --- /dev/null +++ b/core/classes/Widgets/WidgetData.php @@ -0,0 +1,16 @@ +location = $data->location; + $this->order = $data->order; + $this->pages = is_array($data->pages) + ? $data->pages + : json_decode($data->pages); + } +} diff --git a/core/classes/Widgets/Widgets.php b/core/classes/Widgets/Widgets.php index 24fcc48a63..0e817f6d0b 100644 --- a/core/classes/Widgets/Widgets.php +++ b/core/classes/Widgets/Widgets.php @@ -14,6 +14,7 @@ class Widgets { private Language $_language; private Smarty $_smarty; + /** @var AbstractWidget[] */ private array $_widgets = []; private array $_enabled = []; private string $_name; @@ -34,7 +35,7 @@ public function __construct( $this->_smarty = $smarty; $enabled = $this->_cache->retrieve('enabled'); - if ($enabled != null && count($enabled)) { + if ($enabled !== null && count($enabled)) { $this->_enabled = $enabled; } } @@ -42,51 +43,43 @@ public function __construct( /** * Register a widget to the widget list. * - * @param WidgetBase $widget Instance of widget to register. + * @param AbstractWidget $widget Instance of widget to register. */ - public function add(WidgetBase $widget): void { + public function add(AbstractWidget $widget): void { $this->_widgets[$widget->getName()] = $widget; } /** * Enable a widget. * - * @param WidgetBase $widget Instance of widget to enable. + * @param AbstractWidget $widget Instance of widget to enable. */ - public function enable(WidgetBase $widget): void { + public function enable(AbstractWidget $widget): void { // Add widget to enabled widget list $this->_enabled[$widget->getName()] = true; $this->_cache->setCache($this->_name . '-widgets'); $this->_cache->store('enabled', $this->_enabled); // Update database - $widget_id = $this->_db->get('widgets', ['name', $widget->getName()]); - if ($widget_id->count()) { - $widget_id = $widget_id->first(); - $this->_db->update('widgets', $widget_id->id, [ - 'enabled' => true - ]); - } + $this->_db->update('widgets', ['name', $widget->getName()], [ + 'enabled' => true, + ]); } /** * Disable a widget. * - * @param WidgetBase $widget Instance of widget to disable. + * @param AbstractWidget $widget Instance of widget to disable. */ - public function disable(WidgetBase $widget): void { + public function disable(AbstractWidget $widget): void { unset($this->_enabled[$widget->getName()]); $this->_cache->setCache($this->_name . '-widgets'); $this->_cache->store('enabled', $this->_enabled); // Update database - $widget_id = $this->_db->get('widgets', ['name', $widget->getName()]); - if ($widget_id->count()) { - $widget_id = $widget_id->first(); - $this->_db->update('widgets', $widget_id->id, [ - 'enabled' => false, - ]); - } + $this->_db->update('widgets', ['name', $widget->getName()], [ + 'enabled' => false, + ]); } /** @@ -94,53 +87,64 @@ public function disable(WidgetBase $widget): void { * * @param string $name Name of widget to get. * - * @return WidgetBase|null Instance of widget with same name, null if it doesnt exist. + * @return AbstractWidget|null Instance of widget with same name, null if it doesn't exist. */ - public function getWidget(string $name): ?WidgetBase { - if (array_key_exists($name, $this->_widgets)) { - return $this->_widgets[$name]; - } - - return null; + public function getWidget(string $name): ?AbstractWidget { + return $this->_widgets[$name] ?? null; } /** * Get code for all enabled widgets on the current page. * * @param string $location Either `left` or `right`. + * @param User|null $profile_user User object of the profile page. * * @return array List of HTML to be displayed. */ - public function getWidgets(string $location = 'right'): array { + public function getWidgets(string $location, User $profile_user = null): array { $ret = []; - $widgets = $this->getAll(); + foreach ($this->getAll() as $item) { + if (!array_key_exists($item->getName(), $this->_enabled)) { + continue; + } + + if ($item->getLocation() !== $location) { + continue; + } - foreach ($widgets as $item) { - if (array_key_exists($item->getName(), $this->_enabled) - && $item->getLocation() == $location - && is_array($item->getPages()) - && ((defined('CUSTOM_PAGE') && in_array(CUSTOM_PAGE, $item->getPages())) - || in_array((defined('PAGE') ? PAGE : 'index'), $item->getPages())) - ) { - try { + if ($item instanceof ProfileWidgetBase && !$profile_user) { + continue; + } + + if ((defined('CUSTOM_PAGE') && !in_array(CUSTOM_PAGE, $item->getPages())) || !in_array(PAGE, $item->getPages())) { + continue; + } + + try { + if ($profile_user && $item instanceof ProfileWidgetBase) { + $item->initialise($profile_user); + } else { + /** @var WidgetBase $item */ $item->initialise(); - $ret[] = $item->display(); - } catch (Exception $e) { - ErrorHandler::logWarning('Unable to load widget ' . $item->getName() . ': ' . $e->getMessage()); - $this->_smarty->assign([ - 'WIDGET_ERROR_TITLE' => $this->_language->get('general', 'unable_to_load_widget'), - 'WIDGET_ERROR_CONTENT' => - $this->_language->get( - 'general', - 'problem_loading_widget', - ['widget' => Output::getClean($item->getName())] - ), - 'WIDGET_ERROR_MESSAGE' => $e->getMessage(), - 'WIDGET_NAME' => Output::getClean($item->getName()), - ]); - $ret[] = $this->_smarty->fetch('widgets/widget_error.tpl'); } + + // Allow widgets to return nothing and not be displayed + $content = $item->display(); + if ($content) { + $ret[] = $content; + } + } catch (Exception $e) { + ErrorHandler::logWarning('Unable to load widget ' . $item->getName() . ': ' . $e->getMessage()); + $this->_smarty->assign([ + 'WIDGET_ERROR_TITLE' => $this->_language->get('general', 'unable_to_load_widget'), + 'WIDGET_ERROR_CONTENT' => $this->_language->get('general', 'problem_loading_widget', [ + 'widget' => Output::getClean($item->getName()) + ]), + 'WIDGET_ERROR_MESSAGE' => $e->getMessage(), + 'WIDGET_NAME' => Output::getClean($item->getName()), + ]); + $ret[] = $this->_smarty->fetch('widgets/widget_error.tpl'); } } @@ -150,36 +154,26 @@ public function getWidgets(string $location = 'right'): array { /** * List all widgets, sorted by their order. * - * @return WidgetBase[] List of widgets. + * @return AbstractWidget[] List of widgets. */ public function getAll(): iterable { $widgets = $this->_widgets; - uasort($widgets, static function ($a, $b) { + uasort($widgets, static function (AbstractWidget $a, AbstractWidget $b) { return $a->getOrder() - $b->getOrder(); }); return $widgets; } - /** - * Get all enabled widget names. - * Not used internally. - * - * @return array List of enabled widget names. - */ - public function getAllEnabledNames(): array { - return array_keys($this->_enabled); - } - /** * Check if widget is enabled or not. * - * @param WidgetBase $widget Instance of widget to check. + * @param AbstractWidget $widget Instance of widget to check. * * @return bool Whether this widget is enabled or not. */ - public function isEnabled(WidgetBase $widget): bool { + public function isEnabled(AbstractWidget $widget): bool { return array_key_exists($widget->getName(), $this->_enabled); } diff --git a/core/migrations/20230301084250_add_order_column_to_reactions_table.php b/core/migrations/20230301084250_add_order_column_to_reactions_table.php new file mode 100644 index 0000000000..36b878d4c5 --- /dev/null +++ b/core/migrations/20230301084250_add_order_column_to_reactions_table.php @@ -0,0 +1,16 @@ +table('nl2_reactions'); + + $table->addColumn('order', 'integer', ['length' => 11, 'default' => 1]); + + $table->update(); + } +} diff --git a/core/migrations/20230304231334_delete_users_reputation_column.php b/core/migrations/20230304231334_delete_users_reputation_column.php new file mode 100644 index 0000000000..1e61d30e89 --- /dev/null +++ b/core/migrations/20230304231334_delete_users_reputation_column.php @@ -0,0 +1,14 @@ +table('nl2_users'); + $table->removeColumn('reputation'); + $table->update(); + } +} diff --git a/core/migrations/20230611003455_add_custom_score_column_to_reactions_table.php b/core/migrations/20230611003455_add_custom_score_column_to_reactions_table.php new file mode 100644 index 0000000000..a018fd358b --- /dev/null +++ b/core/migrations/20230611003455_add_custom_score_column_to_reactions_table.php @@ -0,0 +1,25 @@ +table('nl2_reactions') + ->addColumn('custom_score', 'integer', ['null' => true, 'default' => null]) + ->update(); + } +} diff --git a/core/migrations/20230613054745_rename_highest_reaction_scores_member_list_provider.php b/core/migrations/20230613054745_rename_highest_reaction_scores_member_list_provider.php new file mode 100644 index 0000000000..ce181282b7 --- /dev/null +++ b/core/migrations/20230613054745_rename_highest_reaction_scores_member_list_provider.php @@ -0,0 +1,23 @@ +update('member_lists', ['name', 'highest_reaction_scores'], ['name' => 'highest_forum_reaction_scores']); + } +} diff --git a/custom/languages/en_UK.json b/custom/languages/en_UK.json index f5fb9939d4..2544defff2 100644 --- a/custom/languages/en_UK.json +++ b/custom/languages/en_UK.json @@ -115,6 +115,7 @@ "admin/custom_pages": "Custom Pages", "admin/cloning_group": "Cloning group {{group}}", "admin/custom_content": "Custom Content", + "admin/custom_score": "Custom Score", "admin/dark": "Dark", "admin/dark_mode": "Dark Mode", "admin/dashboard": "Dashboard", @@ -499,6 +500,7 @@ "admin/profile_field_public_help": "Public fields will be displayed to all users, if this is disabled only moderators can view the values.", "admin/profile_field_required_help": "Required fields must be filled out by the user, and will appear during registration.", "admin/profile_field_updated_successfully": "The profile field was updated successfully.", + "admin/profile_widgets": "Profile Widgets", "admin/public": "Public", "admin/purge_errors": "Purge Errors", "admin/query_error_deleted_successfully": "Query error deleted successfully.", @@ -554,6 +556,8 @@ "admin/reaction_created_successfully": "Reaction created successfully.", "admin/reaction_deleted_successfully": "Reaction deleted successfully.", "admin/reaction_edited_successfully": "Reaction edited successfully.", + "admin/reaction_added_event_info": "Reaction added", + "admin/reaction_deleted_event_info": "Reaction deleted", "admin/reason": "Ban Reason", "admin/redirect_url": "Redirect URL", "admin/recent_users": "New Users", @@ -628,6 +632,7 @@ "admin/sitemap_not_generated_yet": "A sitemap has not been generated yet!", "admin/sitemap_not_writable": "The cache\/sitemaps directory is not writable.", "admin/sitename": "Site Name", + "admin/site_widgets": "Site Widgets", "admin/social_media": "Social Media", "admin/social_media_settings_updated": "Social media settings updated successfully.", "admin/source": "Source", @@ -853,6 +858,7 @@ "general/oauth_failed": "Something went wrong while trying to use OAuth. Please try again.", "general/oauth_no_data": "No OAuth data detected, ensure you are accessing this page via an OAuth redirect.", "general/offline": "Offline", + "general/on": "on", "general/online": "Online", "general/online_guests": "Online Guests", "general/online_staff": "Online Staff", @@ -1164,6 +1170,7 @@ "user/forgot_password_email_sent": "If an account with the email address exists, an email has been sent containing further instructions. If you can't find it, try checking your junk folder.", "user/forgot_password_instructions": "Please enter your email address so we can send you further instructions on resetting your password.", "user/gif_avatar": "Upload .gif as custom avatar", + "user/given": "Given", "user/gravatar": "Use Gravatar as avatar", "user/guest": "Guest", "user/guests": "Guests", @@ -1196,6 +1203,7 @@ "user/message_title": "Message Title", "user/messages": "Messages", "user/messaging": "Messaging", + "user/minecraft_account": "Minecraft Account", "user/minecraft_username": "Minecraft Username", "user/must_input_email": "You must input an email address.", "user/must_input_email_or_username": "You must input an email or username.", @@ -1247,8 +1255,11 @@ "user/profile": "Profile", "user/profile_banner": "Profile Banner", "user/profile_post_reply": "Profile Post Reply", + "user/profile_posts_score": "Profile posts score", "user/profile_settings": "Profile Settings", "user/reactions": "Reactions", + "user/reaction_score": "Reaction score", + "user/received": "Received", "user/registered": "Registered:", "user/registered_x": "Registered: {{registeredAt}}", "user/registration_check_email": "Thanks for registering! Please check your emails for a validation link in order to complete your registration. If you are unable to find the email, check your junk folder.", diff --git a/custom/panel_templates/Default/core/modules.tpl b/custom/panel_templates/Default/core/modules.tpl index 23439f3c4c..d4436fb613 100644 --- a/custom/panel_templates/Default/core/modules.tpl +++ b/custom/panel_templates/Default/core/modules.tpl @@ -94,61 +94,57 @@
{$FIND_MODULES}

- {if isset($WEBSITE_MODULES_ERROR)} -
{$UNABLE_TO_RETRIEVE_MODULES}
- {/if} - {if count($WEBSITE_MODULES)} -
- - - - - - - - - - - - - - - {foreach from=$WEBSITE_MODULES item=item} - - - - - - {/foreach} - -
{$MODULE}{$STATS}{$ACTIONS}
- {$item.name} {$item.latest_version} -
- {$item.author_x} -
- {$item.updated_x} -
-
- - - - - - -
- {$item.downloads_full}
- {$item.views_full} -
{$VIEW} »
-
+
+ + + + + + + + + + + + + + + {foreach from=$WEBSITE_MODULES item=item} + + + + + + {/foreach} + +
{$MODULE}{$STATS}{$ACTIONS}
+ {$item.name} {$item.latest_version} +
+ {$item.author_x} +
+ {$item.updated_x} +
+
+ + + + + + +
+ {$item.downloads_full}
+ {$item.views_full} +
{$VIEW} »
+
{else} -
{$WEBSITE_MODULES_ERROR}
+
{$UNABLE_TO_RETRIEVE_MODULES}
{/if} - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/reactions.tpl b/custom/panel_templates/Default/core/reactions.tpl index 7df275670e..86f2c408e5 100644 --- a/custom/panel_templates/Default/core/reactions.tpl +++ b/custom/panel_templates/Default/core/reactions.tpl @@ -43,37 +43,37 @@ {include file='includes/alerts.tpl'} {if count($REACTIONS_LIST)} -
- - - - - - - - - - - {foreach from=$REACTIONS_LIST item=reaction} - - - - - - - {/foreach} - -
{$NAME}{$ICON}{$TYPE}{$ENABLED}
{$reaction.name}{$reaction.html}{$reaction.type}{if $reaction.enabled eq 1} - - {else} - - {/if} -
-
+
+ + + + + + + + + + + {foreach from=$REACTIONS_LIST item=reaction} + + + + + + + {/foreach} + +
{$NAME}{$ICON}{$TYPE}{$ENABLED}
{$reaction.name}{$reaction.html}{$reaction.type} {if $reaction.type_id eq 3}({$reaction.custom_score}){/if} + {if $reaction.enabled eq 1} + + {else} + + {/if} +
+
{else} - {$NO_REACTIONS} + {$NO_REACTIONS} {/if} - @@ -96,6 +96,41 @@ {include file='scripts.tpl'} + + - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/reactions_edit.tpl b/custom/panel_templates/Default/core/reactions_form.tpl similarity index 59% rename from custom/panel_templates/Default/core/reactions_edit.tpl rename to custom/panel_templates/Default/core/reactions_form.tpl index 2fb1667a3e..93a1fc93e8 100644 --- a/custom/panel_templates/Default/core/reactions_edit.tpl +++ b/custom/panel_templates/Default/core/reactions_form.tpl @@ -38,12 +38,14 @@
@@ -65,13 +67,21 @@ placeholder="{$HTML}" value="{$HTML_VALUE}"> -
- - +
+
+ + +
+
+ + +
@@ -126,29 +136,31 @@
- -