mirror of
https://github.com/netzbegruenung/circles.git
synced 2024-05-14 09:06:06 +02:00
Merge branch 'master' into enh/paginate-circles
This commit is contained in:
commit
fc686a19f6
21
.github/workflows/block-merge-freeze.yml
vendored
Normal file
21
.github/workflows/block-merge-freeze.yml
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Pull request checks
|
||||
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
block-merges-during-freeze:
|
||||
name: Block merges during freezes
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Download version.php from ${{ github.base_ref }}
|
||||
run: curl https://raw.githubusercontent.com/nextcloud/server/${{ github.base_ref }}/version.php --output version.php
|
||||
|
||||
- name: Run check
|
||||
run: cat version.php | grep 'OC_VersionString' | grep -i -v 'RC'
|
|
@ -169,6 +169,7 @@ OC.L10N.register(
|
|||
"%s shared a file with you." : "%s hat eine Datei mit Dir geteilt.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s hat einen Inhalt mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s hat einen Inhalt mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.",
|
||||
"Password to access content shared with you by %1$s" : "Passwort für den Zugriff auf den Inhalt, der von %1$s mit Dir geteilt wurde.",
|
||||
"Password to access content" : "Passwort für den Zugriff auf den Inhalt",
|
||||
"This item is already shared with this circle" : "Dieses Element wird bereits mit diesem Kreis geteilt",
|
||||
"Could not find share" : "Freigabe konnte nicht gefunden werden",
|
||||
|
|
|
@ -167,6 +167,7 @@
|
|||
"%s shared a file with you." : "%s hat eine Datei mit Dir geteilt.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s hat einen Inhalt mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s hat einen Inhalt mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.",
|
||||
"Password to access content shared with you by %1$s" : "Passwort für den Zugriff auf den Inhalt, der von %1$s mit Dir geteilt wurde.",
|
||||
"Password to access content" : "Passwort für den Zugriff auf den Inhalt",
|
||||
"This item is already shared with this circle" : "Dieses Element wird bereits mit diesem Kreis geteilt",
|
||||
"Could not find share" : "Freigabe konnte nicht gefunden werden",
|
||||
|
|
|
@ -167,6 +167,10 @@ OC.L10N.register(
|
|||
"This contact is not available" : "A névjegy nem érhető el",
|
||||
"%s shared a file with \"%s\"." : "%s megosztott egy fájlt a következővel: „%s”.",
|
||||
"%s shared a file with you." : "%s megosztott egy fájlt Önnel.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s tartalmat osztott meg Önnel.\nMár meg kellett volna kapnia a különálló e-mailt, amely a hozzáféréshez szükséges hivatkozást tartalmazza.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s tartalmat osztott meg Önnel. Már meg kellett volna kapnia a különálló e-mailt, amely a hozzáféréshez szükséges hivatkozást tartalmazza.",
|
||||
"Password to access content shared with you by %1$s" : "Jelszó a(z) %1$s által megosztott tartalom eléréséhez",
|
||||
"Password to access content" : "Jelszó a tartalom eléréséhez",
|
||||
"This item is already shared with this circle" : "Ez az elem már megosztásra került ezzel a körrel",
|
||||
"Could not find share" : "A megosztás nem található",
|
||||
"Bring cloud-users closer together." : "Közelebb hozza a felhőfelhasználókat.",
|
||||
|
|
|
@ -165,6 +165,10 @@
|
|||
"This contact is not available" : "A névjegy nem érhető el",
|
||||
"%s shared a file with \"%s\"." : "%s megosztott egy fájlt a következővel: „%s”.",
|
||||
"%s shared a file with you." : "%s megosztott egy fájlt Önnel.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s tartalmat osztott meg Önnel.\nMár meg kellett volna kapnia a különálló e-mailt, amely a hozzáféréshez szükséges hivatkozást tartalmazza.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s tartalmat osztott meg Önnel. Már meg kellett volna kapnia a különálló e-mailt, amely a hozzáféréshez szükséges hivatkozást tartalmazza.",
|
||||
"Password to access content shared with you by %1$s" : "Jelszó a(z) %1$s által megosztott tartalom eléréséhez",
|
||||
"Password to access content" : "Jelszó a tartalom eléréséhez",
|
||||
"This item is already shared with this circle" : "Ez az elem már megosztásra került ezzel a körrel",
|
||||
"Could not find share" : "A megosztás nem található",
|
||||
"Bring cloud-users closer together." : "Közelebb hozza a felhőfelhasználókat.",
|
||||
|
|
|
@ -25,7 +25,7 @@ OC.L10N.register(
|
|||
"The request to link {circle} with {remote} has been accepted" : "{circle}と{remote}をリンクするリクエストが承認されました",
|
||||
"You dismissed the request to link {remote} with {circle}" : "{remote}と{circle}のリンクリクエストを却下しました。",
|
||||
"{author} dismissed the request to link {remote} with {circle}" : "{author}が{remote}と{circle}のリンクリクエストを却下しました",
|
||||
"You canceled the request to link {circle} with {remote}" : "{サークル}と{リモート}とのリンクリクエストをキャンセルしました",
|
||||
"You canceled the request to link {circle} with {remote}" : "{circle}と{remote}とのリンクリクエストをキャンセルしました",
|
||||
"{author} canceled the request to link {circle} with {remote}" : "{author}が{circle}と{remote}のリンクリクエストをキャンセルしました",
|
||||
"You accepted the request to link {remote} with {circle}" : "{リモート}と{サークル}のリンクリクエストを受け入れました。",
|
||||
"{author} accepted the request to link {remote} with {circle}" : "{author}が{remote}と{circle}のリンクリクエストを受け入れました",
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
"The request to link {circle} with {remote} has been accepted" : "{circle}と{remote}をリンクするリクエストが承認されました",
|
||||
"You dismissed the request to link {remote} with {circle}" : "{remote}と{circle}のリンクリクエストを却下しました。",
|
||||
"{author} dismissed the request to link {remote} with {circle}" : "{author}が{remote}と{circle}のリンクリクエストを却下しました",
|
||||
"You canceled the request to link {circle} with {remote}" : "{サークル}と{リモート}とのリンクリクエストをキャンセルしました",
|
||||
"You canceled the request to link {circle} with {remote}" : "{circle}と{remote}とのリンクリクエストをキャンセルしました",
|
||||
"{author} canceled the request to link {circle} with {remote}" : "{author}が{circle}と{remote}のリンクリクエストをキャンセルしました",
|
||||
"You accepted the request to link {remote} with {circle}" : "{リモート}と{サークル}のリンクリクエストを受け入れました。",
|
||||
"{author} accepted the request to link {remote} with {circle}" : "{author}が{remote}と{circle}のリンクリクエストを受け入れました",
|
||||
|
|
43
l10n/ru.js
43
l10n/ru.js
|
@ -75,24 +75,57 @@ OC.L10N.register(
|
|||
"On events happening in a <strong>Circle</strong> of which you are a member" : "При событии в <strong>круге</strong>, которому вы принадлежите ",
|
||||
"Any important event in a <strong>Circle</strong> you are moderating" : "Любое важное событие в модерируемом вами <strong>круге </strong> ",
|
||||
"On global events happening in any <strong>Circle</strong>" : "При глобальном событии в <strong>круге</strong>, которому вы принадлежите ",
|
||||
"Single" : "Единственный",
|
||||
"Personal" : "Личный",
|
||||
"System" : "Система",
|
||||
"Visible" : "Видимый",
|
||||
"Open" : "Открыть",
|
||||
"Invite" : "Приглашение",
|
||||
"Join Request" : "Запрос на вступление",
|
||||
"Friends" : "Друзья",
|
||||
"Password Protected" : "Защищено паролем",
|
||||
"No Owner" : "Новый владелец",
|
||||
"Hidden" : "Скрыто",
|
||||
"Backend" : "Внутренний",
|
||||
"Local" : "Локальный",
|
||||
"Root" : "Корневой каталог",
|
||||
"Circle Invite" : "Приглашение в круг",
|
||||
"Federated" : "Федеративный",
|
||||
"Mount point" : "Место установки",
|
||||
"Nextcloud User" : "Пользователь Nextcloud",
|
||||
"Nextcloud Group" : "Группа Nextcloud",
|
||||
"Email Address" : "Адрес электронной почты",
|
||||
"Contact" : "Контакт",
|
||||
"Circle" : "Круг",
|
||||
"Nextcloud App" : "Приложение Nextcloud",
|
||||
"Member" : "Участник",
|
||||
"Moderator" : "Модератор",
|
||||
"Admin" : "Администратор",
|
||||
"Owner" : "Владелец",
|
||||
"%s shared »%s« with you." : "%s предоставил(а) вам доступ к «%s».",
|
||||
"%s shared »%s« with \"%s\"." : "%s предоставил(а) доступ »%s« для \"%s\".",
|
||||
"%s on %s" : "%s на %s",
|
||||
"%1$s shared »%2$s« with you.\nYou should have already received a separate email with a link to access it.\n" : " %1$s поделился »%2$s« с вами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к нему.\n",
|
||||
"%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it." : "%1$s поделился »%2$s« с вами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к нему.",
|
||||
"Password to access »%1$s« shared to you by %2$s" : "Пароль для доступа к «%1$s», общий доступ к которому предоставлен вам пользователем %2$s",
|
||||
"Password to access »%s«" : "Пароль для доступа к «%s»",
|
||||
"It is protected with the following password:" : "Доступ защищён следующим паролем: ",
|
||||
"%1$s via %2$s" : "%1$sчерез %2$s",
|
||||
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для его открытия.",
|
||||
"Open »%s«" : "Открыть «%s»",
|
||||
"%1$s shared multiple files with you.\nYou should have already received a separate email with a link to access them.\n" : "%1$s поделился с вами несколькими файлами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к ним.\n",
|
||||
"%1$s shared multiple files with you. You should have already received a separate email with a link to access them." : "%1$s поделился с вами несколькими файлами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к ним.",
|
||||
"Password to access files shared to you by %1$s" : "Пароль для доступа к файлам, общий доступ к которому предоставлен вам пользователем %1$s",
|
||||
"Password to access files" : "Пароль для доступа к файлам",
|
||||
"%s shared multiple files with \"%s\"." : "%s поделился несколькими файлами с \"%s\".",
|
||||
"%s shared multiple files with you." : "%s предоставил(а) вам доступ к нескольким файлам.",
|
||||
"Boot up" : "Загрузка",
|
||||
"Initialisation Nextcloud" : "Инициализация Nextcloud",
|
||||
"Initialisation Circles App" : "Инициализация приложения Круги",
|
||||
"Fresh installation status" : "Статус новой установки",
|
||||
"Building Local Database" : "Создание локальной базы данных",
|
||||
"Testing Basic Circle Creation" : "Тестирование базового созданного Круга",
|
||||
"Adding local users and moderators" : "Добавление локальных пользователей и модераторов",
|
||||
"Circle not found" : "Круг не найден",
|
||||
"Circle not found " : "Круг не найден",
|
||||
"A circle with that name exists" : "Круг с таким именем существует",
|
||||
|
@ -117,7 +150,9 @@ OC.L10N.register(
|
|||
"Accept" : "Принять",
|
||||
"Refuse" : "Отказаться",
|
||||
"Leave the circle" : "Покинуть Круг",
|
||||
"%s" : "%s",
|
||||
"Personal Circle" : "Личный круг",
|
||||
"%s owned by %s" : "%sпринадлежащий %s",
|
||||
"You need a specify a type of circle" : "Необходимо указать тип круга",
|
||||
"This member is not the owner of the circle" : "Этот участник — не владелец круга",
|
||||
"This member is not an admin of the circle" : "Этот участник — не администратор круга",
|
||||
|
@ -130,8 +165,16 @@ OC.L10N.register(
|
|||
"This user does not exist" : "Этот пользователь не существует",
|
||||
"Email format is not valid" : "Неверный формат электронной почты",
|
||||
"This contact is not available" : "Контакт не доступен",
|
||||
"%s shared a file with \"%s\"." : "%s поделился файлом с \"%s\".",
|
||||
"%s shared a file with you." : "%s поделился с вами файлом.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s поделился с вами некоторыми материалами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к нему.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s поделился с вами некоторыми материалами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к нему.",
|
||||
"Password to access content shared with you by %1$s" : "Пароль для доступа к содержимому, предоставленному вам %1$s",
|
||||
"Password to access content" : "Пароль для доступа к содержимому",
|
||||
"This item is already shared with this circle" : "Этот элемент уже используется в этом круге",
|
||||
"Could not find share" : "Невозможно найти общий ресурс",
|
||||
"Bring cloud-users closer together." : "Собирайте вокруг себе пользователей Вашего облака пользователей.",
|
||||
"Circles allows your users to create their own groups of users/colleagues/friends.\nThose groups of users (or \"circles\") can then be used by any other app for sharing purpose." : "Круги позволяют вашим пользователям создавать свои собственные группы пользователей/коллег/друзей.\nЭти группы пользователей (или \"круги\") могут затем использоваться любым другим приложением для обмена информацией.",
|
||||
"No files in here" : "Здесь нет файлов",
|
||||
"No entries found in this folder" : "В этой папке ничего нет",
|
||||
"Name" : "Имя",
|
||||
|
|
43
l10n/ru.json
43
l10n/ru.json
|
@ -73,24 +73,57 @@
|
|||
"On events happening in a <strong>Circle</strong> of which you are a member" : "При событии в <strong>круге</strong>, которому вы принадлежите ",
|
||||
"Any important event in a <strong>Circle</strong> you are moderating" : "Любое важное событие в модерируемом вами <strong>круге </strong> ",
|
||||
"On global events happening in any <strong>Circle</strong>" : "При глобальном событии в <strong>круге</strong>, которому вы принадлежите ",
|
||||
"Single" : "Единственный",
|
||||
"Personal" : "Личный",
|
||||
"System" : "Система",
|
||||
"Visible" : "Видимый",
|
||||
"Open" : "Открыть",
|
||||
"Invite" : "Приглашение",
|
||||
"Join Request" : "Запрос на вступление",
|
||||
"Friends" : "Друзья",
|
||||
"Password Protected" : "Защищено паролем",
|
||||
"No Owner" : "Новый владелец",
|
||||
"Hidden" : "Скрыто",
|
||||
"Backend" : "Внутренний",
|
||||
"Local" : "Локальный",
|
||||
"Root" : "Корневой каталог",
|
||||
"Circle Invite" : "Приглашение в круг",
|
||||
"Federated" : "Федеративный",
|
||||
"Mount point" : "Место установки",
|
||||
"Nextcloud User" : "Пользователь Nextcloud",
|
||||
"Nextcloud Group" : "Группа Nextcloud",
|
||||
"Email Address" : "Адрес электронной почты",
|
||||
"Contact" : "Контакт",
|
||||
"Circle" : "Круг",
|
||||
"Nextcloud App" : "Приложение Nextcloud",
|
||||
"Member" : "Участник",
|
||||
"Moderator" : "Модератор",
|
||||
"Admin" : "Администратор",
|
||||
"Owner" : "Владелец",
|
||||
"%s shared »%s« with you." : "%s предоставил(а) вам доступ к «%s».",
|
||||
"%s shared »%s« with \"%s\"." : "%s предоставил(а) доступ »%s« для \"%s\".",
|
||||
"%s on %s" : "%s на %s",
|
||||
"%1$s shared »%2$s« with you.\nYou should have already received a separate email with a link to access it.\n" : " %1$s поделился »%2$s« с вами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к нему.\n",
|
||||
"%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it." : "%1$s поделился »%2$s« с вами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к нему.",
|
||||
"Password to access »%1$s« shared to you by %2$s" : "Пароль для доступа к «%1$s», общий доступ к которому предоставлен вам пользователем %2$s",
|
||||
"Password to access »%s«" : "Пароль для доступа к «%s»",
|
||||
"It is protected with the following password:" : "Доступ защищён следующим паролем: ",
|
||||
"%1$s via %2$s" : "%1$sчерез %2$s",
|
||||
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для его открытия.",
|
||||
"Open »%s«" : "Открыть «%s»",
|
||||
"%1$s shared multiple files with you.\nYou should have already received a separate email with a link to access them.\n" : "%1$s поделился с вами несколькими файлами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к ним.\n",
|
||||
"%1$s shared multiple files with you. You should have already received a separate email with a link to access them." : "%1$s поделился с вами несколькими файлами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к ним.",
|
||||
"Password to access files shared to you by %1$s" : "Пароль для доступа к файлам, общий доступ к которому предоставлен вам пользователем %1$s",
|
||||
"Password to access files" : "Пароль для доступа к файлам",
|
||||
"%s shared multiple files with \"%s\"." : "%s поделился несколькими файлами с \"%s\".",
|
||||
"%s shared multiple files with you." : "%s предоставил(а) вам доступ к нескольким файлам.",
|
||||
"Boot up" : "Загрузка",
|
||||
"Initialisation Nextcloud" : "Инициализация Nextcloud",
|
||||
"Initialisation Circles App" : "Инициализация приложения Круги",
|
||||
"Fresh installation status" : "Статус новой установки",
|
||||
"Building Local Database" : "Создание локальной базы данных",
|
||||
"Testing Basic Circle Creation" : "Тестирование базового созданного Круга",
|
||||
"Adding local users and moderators" : "Добавление локальных пользователей и модераторов",
|
||||
"Circle not found" : "Круг не найден",
|
||||
"Circle not found " : "Круг не найден",
|
||||
"A circle with that name exists" : "Круг с таким именем существует",
|
||||
|
@ -115,7 +148,9 @@
|
|||
"Accept" : "Принять",
|
||||
"Refuse" : "Отказаться",
|
||||
"Leave the circle" : "Покинуть Круг",
|
||||
"%s" : "%s",
|
||||
"Personal Circle" : "Личный круг",
|
||||
"%s owned by %s" : "%sпринадлежащий %s",
|
||||
"You need a specify a type of circle" : "Необходимо указать тип круга",
|
||||
"This member is not the owner of the circle" : "Этот участник — не владелец круга",
|
||||
"This member is not an admin of the circle" : "Этот участник — не администратор круга",
|
||||
|
@ -128,8 +163,16 @@
|
|||
"This user does not exist" : "Этот пользователь не существует",
|
||||
"Email format is not valid" : "Неверный формат электронной почты",
|
||||
"This contact is not available" : "Контакт не доступен",
|
||||
"%s shared a file with \"%s\"." : "%s поделился файлом с \"%s\".",
|
||||
"%s shared a file with you." : "%s поделился с вами файлом.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s поделился с вами некоторыми материалами.\nВы уже должны были получить отдельное письмо со ссылкой для доступа к нему.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s поделился с вами некоторыми материалами. Вы уже должны были получить отдельное письмо со ссылкой для доступа к нему.",
|
||||
"Password to access content shared with you by %1$s" : "Пароль для доступа к содержимому, предоставленному вам %1$s",
|
||||
"Password to access content" : "Пароль для доступа к содержимому",
|
||||
"This item is already shared with this circle" : "Этот элемент уже используется в этом круге",
|
||||
"Could not find share" : "Невозможно найти общий ресурс",
|
||||
"Bring cloud-users closer together." : "Собирайте вокруг себе пользователей Вашего облака пользователей.",
|
||||
"Circles allows your users to create their own groups of users/colleagues/friends.\nThose groups of users (or \"circles\") can then be used by any other app for sharing purpose." : "Круги позволяют вашим пользователям создавать свои собственные группы пользователей/коллег/друзей.\nЭти группы пользователей (или \"круги\") могут затем использоваться любым другим приложением для обмена информацией.",
|
||||
"No files in here" : "Здесь нет файлов",
|
||||
"No entries found in this folder" : "В этой папке ничего нет",
|
||||
"Name" : "Имя",
|
||||
|
|
|
@ -169,6 +169,7 @@ OC.L10N.register(
|
|||
"%s shared a file with you." : "%s sizinle bir dosya paylaştı.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s sizinle bir içerik paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s sizinle bir içerik paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.",
|
||||
"Password to access content shared with you by %1$s" : "%1$s tarafından sizinle paylaşılan içeriğe erişme parolası",
|
||||
"Password to access content" : "İçeriğe erişme parolası",
|
||||
"This item is already shared with this circle" : "Bu öge zaten bu çevre ile paylaşılmış",
|
||||
"Could not find share" : "Paylaşım bulunamadı",
|
||||
|
|
|
@ -167,6 +167,7 @@
|
|||
"%s shared a file with you." : "%s sizinle bir dosya paylaştı.",
|
||||
"%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s sizinle bir içerik paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n",
|
||||
"%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s sizinle bir içerik paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.",
|
||||
"Password to access content shared with you by %1$s" : "%1$s tarafından sizinle paylaşılan içeriğe erişme parolası",
|
||||
"Password to access content" : "İçeriğe erişme parolası",
|
||||
"This item is already shared with this circle" : "Bu öge zaten bu çevre ile paylaşılmış",
|
||||
"Could not find share" : "Paylaşım bulunamadı",
|
||||
|
|
|
@ -38,6 +38,7 @@ use Closure;
|
|||
use OC;
|
||||
use OCA\Circles\Events\AddingCircleMemberEvent;
|
||||
use OCA\Circles\Events\CircleMemberAddedEvent;
|
||||
use OCA\Circles\Events\DestroyingCircleEvent;
|
||||
use OCA\Circles\Events\Files\CreatingFileShareEvent;
|
||||
use OCA\Circles\Events\Files\FileShareCreatedEvent;
|
||||
use OCA\Circles\Events\Files\PreparingFileShareEvent;
|
||||
|
@ -54,9 +55,10 @@ use OCA\Circles\Listeners\Examples\ExampleMembershipsRemoved;
|
|||
use OCA\Circles\Listeners\Examples\ExampleRequestingCircleMember;
|
||||
use OCA\Circles\Listeners\Files\AddingMemberSendMail as ListenerFilesAddingMemberSendMail;
|
||||
use OCA\Circles\Listeners\Files\CreatingShareSendMail as ListenerFilesCreatingShareSendMail;
|
||||
use OCA\Circles\Listeners\Files\PreparingShareSendMail as ListenerFilesPreparingShareSendMail;
|
||||
use OCA\Circles\Listeners\Files\DestroyingCircle as ListenerFilesDestroyingCircle;
|
||||
use OCA\Circles\Listeners\Files\MemberAddedSendMail as ListenerFilesMemberAddedSendMail;
|
||||
use OCA\Circles\Listeners\Files\PreparingMemberSendMail as ListenerFilesPreparingMemberSendMail;
|
||||
use OCA\Circles\Listeners\Files\PreparingShareSendMail as ListenerFilesPreparingShareSendMail;
|
||||
use OCA\Circles\Listeners\Files\RemovingMember as ListenerFilesRemovingMember;
|
||||
use OCA\Circles\Listeners\Files\ShareCreatedSendMail as ListenerFilesShareCreatedSendMail;
|
||||
use OCA\Circles\Listeners\GroupCreated;
|
||||
|
@ -174,6 +176,7 @@ class Application extends App implements IBootstrap {
|
|||
RequestingCircleMemberEvent::class,
|
||||
ListenerNotificationsRequestingMember::class
|
||||
);
|
||||
$context->registerEventListener(DestroyingCircleEvent::class, ListenerFilesDestroyingCircle::class);
|
||||
|
||||
// It seems that AccountManager use deprecated dispatcher, let's use a deprecated listener
|
||||
$dispatcher = OC::$server->getEventDispatcher();
|
||||
|
|
|
@ -155,6 +155,7 @@ class CirclesMaintenance extends Base {
|
|||
}
|
||||
|
||||
$this->outputService->setOccOutput($output);
|
||||
$this->maintenanceService->setOccOutput($output);
|
||||
for ($i = 1; $i <= $level; $i++) {
|
||||
try {
|
||||
$this->maintenanceService->runMaintenance($i);
|
||||
|
|
|
@ -151,6 +151,7 @@ class MemberLevel implements
|
|||
$oldOwner = clone $event->getCircle()->getOwner();
|
||||
$oldOwner->setLevel(Member::LEVEL_ADMIN);
|
||||
$this->memberRequest->updateLevel($oldOwner);
|
||||
$this->membershipService->onUpdate($oldOwner->getSingleId());
|
||||
}
|
||||
|
||||
$this->membershipService->onUpdate($member->getSingleId());
|
||||
|
|
82
lib/Listeners/Files/DestroyingCircle.php
Normal file
82
lib/Listeners/Files/DestroyingCircle.php
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
/**
|
||||
* Circles - Bring cloud-users closer together.
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
||||
* @copyright 2021
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Circles\Listeners\Files;
|
||||
|
||||
use ArtificialOwl\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
|
||||
use ArtificialOwl\MySmallPhpTools\Traits\TStringTools;
|
||||
use OCA\Circles\AppInfo\Application;
|
||||
use OCA\Circles\Events\DestroyingCircleEvent;
|
||||
use OCA\Circles\Exceptions\RequestBuilderException;
|
||||
use OCA\Circles\Service\ShareWrapperService;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
|
||||
/**
|
||||
* Class AddingMemberSendMail
|
||||
*
|
||||
* @package OCA\Circles\Listeners\Files
|
||||
*/
|
||||
class DestroyingCircle implements IEventListener {
|
||||
use TStringTools;
|
||||
use TNC22Logger;
|
||||
|
||||
|
||||
/** @var ShareWrapperService */
|
||||
private $shareWrapperService;
|
||||
|
||||
|
||||
/**
|
||||
* AddingMember constructor.
|
||||
*
|
||||
* @param ShareWrapperService $shareWrapperService
|
||||
*/
|
||||
public function __construct(ShareWrapperService $shareWrapperService) {
|
||||
$this->shareWrapperService = $shareWrapperService;
|
||||
|
||||
$this->setup('app', Application::APP_ID);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Event $event
|
||||
*
|
||||
* @throws RequestBuilderException
|
||||
*/
|
||||
public function handle(Event $event): void {
|
||||
if (!$event instanceof DestroyingCircleEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
$circle = $event->getCircle();
|
||||
$this->shareWrapperService->deleteSharesToCircle($circle->getSingleId());
|
||||
}
|
||||
}
|
|
@ -95,7 +95,7 @@ class Membership extends ManagedModel implements IDeserializable, INC22QueryRow,
|
|||
$this->setSingleId($singleId);
|
||||
$this->setCircleId($circle->getSingleId());
|
||||
$this->setInheritanceFirst($member->getSingleId());
|
||||
$this->setInheritanceLast($inheritanceLast === '' ? $member->getCircleId() : $inheritanceLast);
|
||||
$this->setInheritanceLast($inheritanceLast ?: $member->getCircleId());
|
||||
$this->setLevel($member->getLevel());
|
||||
}
|
||||
|
||||
|
|
|
@ -76,6 +76,9 @@ class MaintenanceService {
|
|||
/** @var FederatedUserService */
|
||||
private $federatedUserService;
|
||||
|
||||
/** @var MembershipService */
|
||||
private $membershipService;
|
||||
|
||||
/** @var EventWrapperService */
|
||||
private $eventWrapperService;
|
||||
|
||||
|
@ -99,6 +102,7 @@ class MaintenanceService {
|
|||
* @param ShareWrapperRequest $shareWrapperRequest
|
||||
* @param SyncService $syncService
|
||||
* @param FederatedUserService $federatedUserService
|
||||
* @param MembershipService $membershipService
|
||||
* @param EventWrapperService $eventWrapperService
|
||||
* @param CircleService $circleService
|
||||
* @param ConfigService $configService
|
||||
|
@ -110,6 +114,7 @@ class MaintenanceService {
|
|||
ShareWrapperRequest $shareWrapperRequest,
|
||||
SyncService $syncService,
|
||||
FederatedUserService $federatedUserService,
|
||||
MembershipService $membershipService,
|
||||
EventWrapperService $eventWrapperService,
|
||||
CircleService $circleService,
|
||||
ConfigService $configService
|
||||
|
@ -121,6 +126,7 @@ class MaintenanceService {
|
|||
$this->syncService = $syncService;
|
||||
$this->federatedUserService = $federatedUserService;
|
||||
$this->eventWrapperService = $eventWrapperService;
|
||||
$this->membershipService = $membershipService;
|
||||
$this->circleService = $circleService;
|
||||
$this->configService = $configService;
|
||||
}
|
||||
|
@ -191,7 +197,7 @@ class MaintenanceService {
|
|||
*/
|
||||
private function runMaintenance1(): void {
|
||||
try {
|
||||
$this->output('remove circles with no owner');
|
||||
$this->output('Remove circles with no owner');
|
||||
$this->removeCirclesWithNoOwner();
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
@ -203,13 +209,13 @@ class MaintenanceService {
|
|||
*/
|
||||
private function runMaintenance2(): void {
|
||||
try {
|
||||
$this->output('remove members with no circles');
|
||||
$this->output('Remove members with no circles');
|
||||
$this->removeMembersWithNoCircles();
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
try {
|
||||
$this->output('retry failed FederatedEvents (asap)');
|
||||
$this->output('Retry failed FederatedEvents (asap)');
|
||||
$this->eventWrapperService->retry(EventWrapperService::RETRY_ASAP);
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
@ -221,7 +227,7 @@ class MaintenanceService {
|
|||
*/
|
||||
private function runMaintenance3(): void {
|
||||
try {
|
||||
$this->output('retry failed FederatedEvents (hourly)');
|
||||
$this->output('Retry failed FederatedEvents (hourly)');
|
||||
$this->eventWrapperService->retry(EventWrapperService::RETRY_HOURLY);
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
@ -233,21 +239,22 @@ class MaintenanceService {
|
|||
*/
|
||||
private function runMaintenance4(): void {
|
||||
try {
|
||||
$this->output('retry failed FederatedEvents (daily)');
|
||||
$this->output('Retry failed FederatedEvents (daily)');
|
||||
$this->eventWrapperService->retry(EventWrapperService::RETRY_DAILY);
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
try {
|
||||
// TODO: waiting for confirmation of a good migration before cleaning orphan shares
|
||||
if ($this->configService->getAppValue(ConfigService::MIGRATION_22_CONFIRMED)) {
|
||||
$this->output('remove deprecated shares');
|
||||
if ($this->configService->getAppValueBool(ConfigService::MIGRATION_22_CONFIRMED)) {
|
||||
$this->output('Remove deprecated shares');
|
||||
$this->removeDeprecatedShares();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
try {
|
||||
$this->output('synchronizing local entities');
|
||||
$this->output('Synchronizing local entities');
|
||||
$this->syncService->sync();
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
@ -257,6 +264,12 @@ class MaintenanceService {
|
|||
* every week
|
||||
*/
|
||||
private function runMaintenance5(): void {
|
||||
try {
|
||||
$this->output('Update memberships');
|
||||
$this->updateAllMemberships();
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
// try {
|
||||
// $this->output('refresh displayNames older than 7d');
|
||||
// // $this->refreshOldDisplayNames();
|
||||
|
@ -329,6 +342,21 @@ class MaintenanceService {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @throws InitiatorNotFoundException
|
||||
* @throws RequestBuilderException
|
||||
*/
|
||||
private function updateAllMemberships(): void {
|
||||
$probe = new CircleProbe();
|
||||
$probe->includeSystemCircles()
|
||||
->includeSingleCircles()
|
||||
->includePersonalCircles();
|
||||
|
||||
foreach ($this->circleService->getCircles($probe) as $circle) {
|
||||
$this->membershipService->manageMemberships($circle->getSingleId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws RequestBuilderException
|
||||
* @throws InitiatorNotFoundException
|
||||
|
|
|
@ -358,6 +358,8 @@ class MembershipService {
|
|||
if ($item->getLevel() !== $membership->getLevel()) {
|
||||
$this->membershipRequest->update($membership);
|
||||
$new[] = $item;
|
||||
} elseif ($item->getInheritancePath() !== $membership->getInheritancePath()) {
|
||||
$this->membershipRequest->update($membership);
|
||||
}
|
||||
} catch (ItemNotFoundException $e) {
|
||||
$this->membershipRequest->insert($membership);
|
||||
|
|
|
@ -102,6 +102,13 @@ class ShareWrapperService {
|
|||
$this->shareWrapperRequest->delete((int)$shareWrapper->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $circleId
|
||||
*/
|
||||
public function deleteSharesToCircle(string $circleId) {
|
||||
$this->shareWrapperRequest->deleteFromCircle($circleId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $circleId
|
||||
|
|
Loading…
Reference in a new issue