From 3a6c7eee2075fc974ea8019d03c8cde9c71055bb Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 30 Dec 2023 00:34:06 +0000 Subject: [PATCH 01/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/ast.js | 1 + l10n/ast.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/ast.js b/l10n/ast.js index 9e4b5b4da..ed4290acf 100644 --- a/l10n/ast.js +++ b/l10n/ast.js @@ -4,6 +4,7 @@ OC.L10N.register( "Circles" : "Círculos", "Backend" : "Backend", "Circle" : "Círculu", + "Admin" : "Alministración", "%1$s via %2$s" : "%1$s per %2$s", "Circle not found" : "Nun s'atopó'l círculu", "Circle not found " : "Nun s'atopó'l círculu", diff --git a/l10n/ast.json b/l10n/ast.json index 5324083b3..59fad6835 100644 --- a/l10n/ast.json +++ b/l10n/ast.json @@ -2,6 +2,7 @@ "Circles" : "Círculos", "Backend" : "Backend", "Circle" : "Círculu", + "Admin" : "Alministración", "%1$s via %2$s" : "%1$s per %2$s", "Circle not found" : "Nun s'atopó'l círculu", "Circle not found " : "Nun s'atopó'l círculu", From 5dc11f2cb34ae755ead4b49292d5d3135b99ca30 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 4 Jan 2024 00:32:31 +0000 Subject: [PATCH 02/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/ka.js | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++ l10n/ka.json | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 l10n/ka.js create mode 100644 l10n/ka.json diff --git a/l10n/ka.js b/l10n/ka.js new file mode 100644 index 000000000..c7f8146cc --- /dev/null +++ b/l10n/ka.js @@ -0,0 +1,187 @@ +OC.L10N.register( + "circles", + { + "Circles" : "Circles", + "Circles' files" : "Circles' files", + "Select circles to filter by" : "Select circles to filter by", + "No circles found" : "No circles found", + "Please select circles to filter by" : "Please select circles to filter by", + "No files found for the selected circles" : "No files found for the selected circles", + "You created the circle {circle}" : "You created the circle {circle}", + "{author} created the circle {circle}" : "{author} created the circle {circle}", + "You deleted {circle}" : "You deleted {circle}", + "{author} deleted {circle}" : "{author} deleted {circle}", + "You linked {group} to {circle}" : "You linked {group} to {circle}", + "{group} has been linked to {circle} by {author}" : "{group} has been linked to {circle} by {author}", + "You unlinked {group} from {circle}" : "You unlinked {group} from {circle}", + "{group} has been unlinked from {circle} by {author}" : "{group} has been unlinked from {circle} by {author}", + "You changed the level of the linked group {group} in {circle} to %1$s" : "You changed the level of the linked group {group} in {circle} to %1$s", + "{author} changed the level of the linked group {group} in {circle} to %1$s" : "{author} changed the level of the linked group {group} in {circle} to %1$s", + "You sent a request to link {circle} with {remote}" : "You sent a request to link {circle} with {remote}", + "{author} sent a request to link {circle} with {remote}" : "{author} sent a request to link {circle} with {remote}", + "{remote} requested a link with {circle}" : "{remote} requested a link with {circle}", + "The request to link {circle} with {remote} has been rejected" : "The request to link {circle} with {remote} has been rejected", + "The request to link {remote} with {circle} has been canceled remotely" : "The request to link {remote} with {circle} has been canceled remotely", + "The request to link {circle} with {remote} has been accepted" : "The request to link {circle} with {remote} has been accepted", + "You dismissed the request to link {remote} with {circle}" : "You dismissed the request to link {remote} with {circle}", + "{author} dismissed the request to link {remote} with {circle}" : "{author} dismissed the request to link {remote} with {circle}", + "You canceled the request to link {circle} with {remote}" : "You canceled the request to link {circle} with {remote}", + "{author} canceled the request to link {circle} with {remote}" : "{author} canceled the request to link {circle} with {remote}", + "You accepted the request to link {remote} with {circle}" : "You accepted the request to link {remote} with {circle}", + "{author} accepted the request to link {remote} with {circle}" : "{author} accepted the request to link {remote} with {circle}", + "A link between {circle} and {remote} is now up and running" : "A link between {circle} and {remote} is now up and running", + "The link between {circle} and {remote} has been shutdown remotely" : "The link between {circle} and {remote} has been shutdown remotely", + "You closed the link between {circle} and {remote}" : "You closed the link between {circle} and {remote}", + "{author} closed the link between {circle} and {remote}" : "{author} closed the link between {circle} and {remote}", + "You joined {circle}" : "You joined {circle}", + "{member} joined {circle}" : "{member} joined {circle}", + "You accepted the invitation to join {circle}" : "You accepted the invitation to join {circle}", + "{member} accepted the invitation to join {circle}" : "{member} accepted the invitation to join {circle}", + "You added {member} as member to {circle}" : "You added {member} as member to {circle}", + "You have been added as member to {circle} by {author}" : "You have been added as member to {circle} by {author}", + "{member} has been added as member to {circle} by {author}" : "{member} has been added as member to {circle} by {author}", + "You added {external} to {circle}" : "You added {external} to {circle}", + "{external} has been added to {circle} by {author}" : "{external} has been added to {circle} by {author}", + "You accepted {member}'s request to join {circle}" : "You accepted {member}'s request to join {circle}", + "Your request to join {circle} has been accepted by {author}" : "Your request to join {circle} has been accepted by {author}", + "{member}'s request to join {circle} has been accepted by {author}" : "{member}'s request to join {circle} has been accepted by {author}", + "You left {circle}" : "You left {circle}", + "{member} left {circle}" : "{member} left {circle}", + "You declined the invitation to join {circle}" : "You declined the invitation to join {circle}", + "{member} declined an invitation to join {circle}" : "{member} declined an invitation to join {circle}", + "You cancelled your request to join {circle}" : "You cancelled your request to join {circle}", + "{member} cancelled his request to join {circle}" : "{member} cancelled his request to join {circle}", + "You removed {member} from {circle}" : "You removed {member} from {circle}", + "You have been removed from {circle} by {author}" : "You have been removed from {circle} by {author}", + "{member} has been removed from {circle} by {author}" : "{member} has been removed from {circle} by {author}", + "You removed {external} from {circle}" : "You removed {external} from {circle}", + "{external} has been removed from {circle} by {author}" : "{external} has been removed from {circle} by {author}", + "You cancelled {member}'s invitation to join {circle}" : "You cancelled {member}'s invitation to join {circle}", + "Your invitation to join {circle} has been cancelled by {author}" : "Your invitation to join {circle} has been cancelled by {author}", + "{author} cancelled {member}'s invitation to join {circle}" : "{author} cancelled {member}'s invitation to join {circle}", + "You dismissed {member}'s request to join {circle}" : "You dismissed {member}'s request to join {circle}", + "Your request to join {circle} has been dismissed by {author}" : "Your request to join {circle} has been dismissed by {author}", + "{member}'s request to join {circle} has been dismissed by {author}" : "{member}'s request to join {circle} has been dismissed by {author}", + "You invited {member} to join {circle}" : "You invited {member} to join {circle}", + "You have been invited to join {circle} by {author}" : "You have been invited to join {circle} by {author}", + "{member} has been invited to join {circle} by {author}" : "{member} has been invited to join {circle} by {author}", + "You changed {member}'s level in {circle} to %1$s" : "You changed {member}'s level in {circle} to %1$s", + "{author} changed your level in {circle} to %1$s" : "{author} changed your level in {circle} to %1$s", + "{author} changed {member}'s level in {circle} to %1$s" : "{author} changed {member}'s level in {circle} to %1$s", + "You sent a request to join {circle}" : "You sent a request to join {circle}", + "{member} sent a request to join {circle}" : "{member} sent a request to join {circle}", + "You are the new owner of {circle}" : "You are the new owner of {circle}", + "{member} is the new owner of {circle}" : "{member} is the new owner of {circle}", + "On events happening in a Circle of which you are a member" : "On events happening in a Circle of which you are a member", + "Any important event in a Circle you are moderating" : "Any important event in a Circle you are moderating", + "On global events happening in any Circle" : "On global events happening in any Circle", + "Shared to Circles" : "Shared to Circles", + "Single" : "Single", + "Personal" : "Personal", + "System" : "System", + "Visible" : "Visible", + "Open" : "Open", + "Invite" : "Invite", + "Join Request" : "Join Request", + "Friends" : "Friends", + "Password Protected" : "Password Protected", + "No Owner" : "No Owner", + "Hidden" : "Hidden", + "Backend" : "Backend", + "Local" : "Local", + "Root" : "Root", + "Circle Invite" : "Circle Invite", + "Federated" : "Federated", + "Mount point" : "Mount point", + "Nextcloud Account" : "Nextcloud Account", + "Nextcloud Group" : "Nextcloud Group", + "Email Address" : "Email Address", + "Contact" : "Contact", + "Circle" : "Circle", + "Nextcloud App" : "Nextcloud App", + "Member" : "Member", + "Moderator" : "Moderator", + "Admin" : "Admin", + "Owner" : "Owner", + "%s shared »%s« with you." : "%s shared »%s« with you.", + "%s shared »%s« with \"%s\"." : "%s shared »%s« with \"%s\".", + "%s on %s" : "%s on %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 shared »%2$s« with you.\nYou should have already received a separate email with a link to access it.\n", + "%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it." : "%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it.", + "Password to access »%1$s« shared to you by %2$s" : "Password to access »%1$s« shared to you by %2$s", + "Password to access »%s«" : "Password to access »%s«", + "It is protected with the following password:" : "It is protected with the following password:", + "%1$s via %2$s" : "%1$s via %2$s", + "Click the button below to open it." : "Click the button below to open it.", + "Open »%s«" : "Open »%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 shared multiple files with you.\nYou should have already received a separate email with a link to access them.\n", + "%1$s shared multiple files with you. You should have already received a separate email with a link to access them." : "%1$s shared multiple files with you. You should have already received a separate email with a link to access them.", + "Password to access files shared to you by %1$s" : "Password to access files shared to you by %1$s", + "Password to access files" : "Password to access files", + "%s shared multiple files with \"%s\"." : "%s shared multiple files with \"%s\".", + "%s shared multiple files with you." : "%s shared multiple files with you.", + "Boot up" : "Boot up", + "Nextcloud Initialization" : "Nextcloud Initialization", + "Circles App Initialization" : "Circles App Initialization", + "Fresh installation status" : "Fresh installation status", + "Building Local Database" : "Building Local Database", + "Testing Basic Circle Creation" : "Testing Basic Circle Creation", + "Adding local users and moderators" : "Adding local users and moderators", + "Circle not found" : "Circle not found", + "Circle not found " : "Circle not found ", + "This member does not exist" : "This member does not exist", + "This account is already a member of the circle" : "This account is already a member of the circle", + "Federated link not found" : "Federated link not found", + "This feature is not available for personal circles" : "This feature is not available for personal circles", + "The circle is not federated" : "The circle is not federated", + "You cannot join this circle" : "You cannot join this circle", + "This member is not a moderator" : "This member is not a moderator", + "Insufficient privileges" : "Insufficient privileges", + "This member is the owner of the circle" : "This member is the owner of the circle", + "Level cannot be changed for this type of member" : "Level cannot be changed for this type of member", + "You are already a member of this circle" : "You are already a member of this circle", + "You have been blocked from this circle" : "You have been blocked from this circle", + "The account is already a member of this circle" : "The account is already a member of this circle", + "The account has already been invited into this circle" : "The account has already been invited into this circle", + "%s (Circle owned by %s)" : "%s (Circle owned by %s)", + "You are now a member of the Circle \"%2$s\"" : "You are now a member of the Circle \"%2$s\"", + "You have been invited by %1$s into the Circle \"%2$s\"" : "You have been invited by %1$s into the Circle \"%2$s\"", + "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s sent a request to be a member of the Circle \"%2$s\"", + "Accept" : "Accept", + "Refuse" : "Refuse", + "Leave the circle" : "Leave the circle", + "%s" : "%s", + "Personal Circle" : "Personal Circle", + "%s owned by %s" : "%s owned by %s", + "You need a specify a type of circle" : "You need a specify a type of circle", + "A circle with that name exists" : "A circle with that name exists", + "This member is not the owner of the circle" : "This member is not the owner of the circle", + "This member is not an admin of the circle" : "This member is not an admin of the circle", + "Group contains too many members" : "Group contains too many members", + "This group does not exist" : "This group does not exist", + "This group is already linked to the circle" : "This group is already linked to the circle", + "You cannot edit level in a personal circle" : "You cannot edit level in a personal circle", + "Group cannot be set as owner of a circle" : "Group cannot be set as owner of a circle", + "now" : "now", + "This account does not exist" : "This account does not exist", + "Email format is not valid" : "Email format is not valid", + "This contact is not available" : "This contact is not available", + "You have no permission to create a new circle" : "You have no permission to create a new circle", + "%s shared a file with \"%s\"." : "%s shared a file with \"%s\".", + "%s shared a file with you." : "%s shared a file with you.", + "%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n", + "%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s shared some content with you. You should have already received a separate email with a link to access it.", + "Password to access content shared with you by %1$s" : "Password to access content shared with you by %1$s", + "Password to access content" : "Password to access content", + "This item is already shared with this circle" : "This item is already shared with this circle", + "Bring cloud-users closer together." : "Bring cloud-users closer together.", + "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose." : "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose.", + "No files in here" : "No files in here", + "No entries found in this folder" : "No entries found in this folder", + "Name" : "Name", + "Size" : "Size", + "Modified" : "Modified", + "Initialisation Nextcloud" : "Initialisation Nextcloud", + "Initialisation Circles App" : "Initialisation Circles App" +}, +"nplurals=2; plural=(n!=1);"); diff --git a/l10n/ka.json b/l10n/ka.json new file mode 100644 index 000000000..b3037fa8d --- /dev/null +++ b/l10n/ka.json @@ -0,0 +1,185 @@ +{ "translations": { + "Circles" : "Circles", + "Circles' files" : "Circles' files", + "Select circles to filter by" : "Select circles to filter by", + "No circles found" : "No circles found", + "Please select circles to filter by" : "Please select circles to filter by", + "No files found for the selected circles" : "No files found for the selected circles", + "You created the circle {circle}" : "You created the circle {circle}", + "{author} created the circle {circle}" : "{author} created the circle {circle}", + "You deleted {circle}" : "You deleted {circle}", + "{author} deleted {circle}" : "{author} deleted {circle}", + "You linked {group} to {circle}" : "You linked {group} to {circle}", + "{group} has been linked to {circle} by {author}" : "{group} has been linked to {circle} by {author}", + "You unlinked {group} from {circle}" : "You unlinked {group} from {circle}", + "{group} has been unlinked from {circle} by {author}" : "{group} has been unlinked from {circle} by {author}", + "You changed the level of the linked group {group} in {circle} to %1$s" : "You changed the level of the linked group {group} in {circle} to %1$s", + "{author} changed the level of the linked group {group} in {circle} to %1$s" : "{author} changed the level of the linked group {group} in {circle} to %1$s", + "You sent a request to link {circle} with {remote}" : "You sent a request to link {circle} with {remote}", + "{author} sent a request to link {circle} with {remote}" : "{author} sent a request to link {circle} with {remote}", + "{remote} requested a link with {circle}" : "{remote} requested a link with {circle}", + "The request to link {circle} with {remote} has been rejected" : "The request to link {circle} with {remote} has been rejected", + "The request to link {remote} with {circle} has been canceled remotely" : "The request to link {remote} with {circle} has been canceled remotely", + "The request to link {circle} with {remote} has been accepted" : "The request to link {circle} with {remote} has been accepted", + "You dismissed the request to link {remote} with {circle}" : "You dismissed the request to link {remote} with {circle}", + "{author} dismissed the request to link {remote} with {circle}" : "{author} dismissed the request to link {remote} with {circle}", + "You canceled the request to link {circle} with {remote}" : "You canceled the request to link {circle} with {remote}", + "{author} canceled the request to link {circle} with {remote}" : "{author} canceled the request to link {circle} with {remote}", + "You accepted the request to link {remote} with {circle}" : "You accepted the request to link {remote} with {circle}", + "{author} accepted the request to link {remote} with {circle}" : "{author} accepted the request to link {remote} with {circle}", + "A link between {circle} and {remote} is now up and running" : "A link between {circle} and {remote} is now up and running", + "The link between {circle} and {remote} has been shutdown remotely" : "The link between {circle} and {remote} has been shutdown remotely", + "You closed the link between {circle} and {remote}" : "You closed the link between {circle} and {remote}", + "{author} closed the link between {circle} and {remote}" : "{author} closed the link between {circle} and {remote}", + "You joined {circle}" : "You joined {circle}", + "{member} joined {circle}" : "{member} joined {circle}", + "You accepted the invitation to join {circle}" : "You accepted the invitation to join {circle}", + "{member} accepted the invitation to join {circle}" : "{member} accepted the invitation to join {circle}", + "You added {member} as member to {circle}" : "You added {member} as member to {circle}", + "You have been added as member to {circle} by {author}" : "You have been added as member to {circle} by {author}", + "{member} has been added as member to {circle} by {author}" : "{member} has been added as member to {circle} by {author}", + "You added {external} to {circle}" : "You added {external} to {circle}", + "{external} has been added to {circle} by {author}" : "{external} has been added to {circle} by {author}", + "You accepted {member}'s request to join {circle}" : "You accepted {member}'s request to join {circle}", + "Your request to join {circle} has been accepted by {author}" : "Your request to join {circle} has been accepted by {author}", + "{member}'s request to join {circle} has been accepted by {author}" : "{member}'s request to join {circle} has been accepted by {author}", + "You left {circle}" : "You left {circle}", + "{member} left {circle}" : "{member} left {circle}", + "You declined the invitation to join {circle}" : "You declined the invitation to join {circle}", + "{member} declined an invitation to join {circle}" : "{member} declined an invitation to join {circle}", + "You cancelled your request to join {circle}" : "You cancelled your request to join {circle}", + "{member} cancelled his request to join {circle}" : "{member} cancelled his request to join {circle}", + "You removed {member} from {circle}" : "You removed {member} from {circle}", + "You have been removed from {circle} by {author}" : "You have been removed from {circle} by {author}", + "{member} has been removed from {circle} by {author}" : "{member} has been removed from {circle} by {author}", + "You removed {external} from {circle}" : "You removed {external} from {circle}", + "{external} has been removed from {circle} by {author}" : "{external} has been removed from {circle} by {author}", + "You cancelled {member}'s invitation to join {circle}" : "You cancelled {member}'s invitation to join {circle}", + "Your invitation to join {circle} has been cancelled by {author}" : "Your invitation to join {circle} has been cancelled by {author}", + "{author} cancelled {member}'s invitation to join {circle}" : "{author} cancelled {member}'s invitation to join {circle}", + "You dismissed {member}'s request to join {circle}" : "You dismissed {member}'s request to join {circle}", + "Your request to join {circle} has been dismissed by {author}" : "Your request to join {circle} has been dismissed by {author}", + "{member}'s request to join {circle} has been dismissed by {author}" : "{member}'s request to join {circle} has been dismissed by {author}", + "You invited {member} to join {circle}" : "You invited {member} to join {circle}", + "You have been invited to join {circle} by {author}" : "You have been invited to join {circle} by {author}", + "{member} has been invited to join {circle} by {author}" : "{member} has been invited to join {circle} by {author}", + "You changed {member}'s level in {circle} to %1$s" : "You changed {member}'s level in {circle} to %1$s", + "{author} changed your level in {circle} to %1$s" : "{author} changed your level in {circle} to %1$s", + "{author} changed {member}'s level in {circle} to %1$s" : "{author} changed {member}'s level in {circle} to %1$s", + "You sent a request to join {circle}" : "You sent a request to join {circle}", + "{member} sent a request to join {circle}" : "{member} sent a request to join {circle}", + "You are the new owner of {circle}" : "You are the new owner of {circle}", + "{member} is the new owner of {circle}" : "{member} is the new owner of {circle}", + "On events happening in a Circle of which you are a member" : "On events happening in a Circle of which you are a member", + "Any important event in a Circle you are moderating" : "Any important event in a Circle you are moderating", + "On global events happening in any Circle" : "On global events happening in any Circle", + "Shared to Circles" : "Shared to Circles", + "Single" : "Single", + "Personal" : "Personal", + "System" : "System", + "Visible" : "Visible", + "Open" : "Open", + "Invite" : "Invite", + "Join Request" : "Join Request", + "Friends" : "Friends", + "Password Protected" : "Password Protected", + "No Owner" : "No Owner", + "Hidden" : "Hidden", + "Backend" : "Backend", + "Local" : "Local", + "Root" : "Root", + "Circle Invite" : "Circle Invite", + "Federated" : "Federated", + "Mount point" : "Mount point", + "Nextcloud Account" : "Nextcloud Account", + "Nextcloud Group" : "Nextcloud Group", + "Email Address" : "Email Address", + "Contact" : "Contact", + "Circle" : "Circle", + "Nextcloud App" : "Nextcloud App", + "Member" : "Member", + "Moderator" : "Moderator", + "Admin" : "Admin", + "Owner" : "Owner", + "%s shared »%s« with you." : "%s shared »%s« with you.", + "%s shared »%s« with \"%s\"." : "%s shared »%s« with \"%s\".", + "%s on %s" : "%s on %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 shared »%2$s« with you.\nYou should have already received a separate email with a link to access it.\n", + "%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it." : "%1$s shared »%2$s« with you. You should have already received a separate email with a link to access it.", + "Password to access »%1$s« shared to you by %2$s" : "Password to access »%1$s« shared to you by %2$s", + "Password to access »%s«" : "Password to access »%s«", + "It is protected with the following password:" : "It is protected with the following password:", + "%1$s via %2$s" : "%1$s via %2$s", + "Click the button below to open it." : "Click the button below to open it.", + "Open »%s«" : "Open »%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 shared multiple files with you.\nYou should have already received a separate email with a link to access them.\n", + "%1$s shared multiple files with you. You should have already received a separate email with a link to access them." : "%1$s shared multiple files with you. You should have already received a separate email with a link to access them.", + "Password to access files shared to you by %1$s" : "Password to access files shared to you by %1$s", + "Password to access files" : "Password to access files", + "%s shared multiple files with \"%s\"." : "%s shared multiple files with \"%s\".", + "%s shared multiple files with you." : "%s shared multiple files with you.", + "Boot up" : "Boot up", + "Nextcloud Initialization" : "Nextcloud Initialization", + "Circles App Initialization" : "Circles App Initialization", + "Fresh installation status" : "Fresh installation status", + "Building Local Database" : "Building Local Database", + "Testing Basic Circle Creation" : "Testing Basic Circle Creation", + "Adding local users and moderators" : "Adding local users and moderators", + "Circle not found" : "Circle not found", + "Circle not found " : "Circle not found ", + "This member does not exist" : "This member does not exist", + "This account is already a member of the circle" : "This account is already a member of the circle", + "Federated link not found" : "Federated link not found", + "This feature is not available for personal circles" : "This feature is not available for personal circles", + "The circle is not federated" : "The circle is not federated", + "You cannot join this circle" : "You cannot join this circle", + "This member is not a moderator" : "This member is not a moderator", + "Insufficient privileges" : "Insufficient privileges", + "This member is the owner of the circle" : "This member is the owner of the circle", + "Level cannot be changed for this type of member" : "Level cannot be changed for this type of member", + "You are already a member of this circle" : "You are already a member of this circle", + "You have been blocked from this circle" : "You have been blocked from this circle", + "The account is already a member of this circle" : "The account is already a member of this circle", + "The account has already been invited into this circle" : "The account has already been invited into this circle", + "%s (Circle owned by %s)" : "%s (Circle owned by %s)", + "You are now a member of the Circle \"%2$s\"" : "You are now a member of the Circle \"%2$s\"", + "You have been invited by %1$s into the Circle \"%2$s\"" : "You have been invited by %1$s into the Circle \"%2$s\"", + "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s sent a request to be a member of the Circle \"%2$s\"", + "Accept" : "Accept", + "Refuse" : "Refuse", + "Leave the circle" : "Leave the circle", + "%s" : "%s", + "Personal Circle" : "Personal Circle", + "%s owned by %s" : "%s owned by %s", + "You need a specify a type of circle" : "You need a specify a type of circle", + "A circle with that name exists" : "A circle with that name exists", + "This member is not the owner of the circle" : "This member is not the owner of the circle", + "This member is not an admin of the circle" : "This member is not an admin of the circle", + "Group contains too many members" : "Group contains too many members", + "This group does not exist" : "This group does not exist", + "This group is already linked to the circle" : "This group is already linked to the circle", + "You cannot edit level in a personal circle" : "You cannot edit level in a personal circle", + "Group cannot be set as owner of a circle" : "Group cannot be set as owner of a circle", + "now" : "now", + "This account does not exist" : "This account does not exist", + "Email format is not valid" : "Email format is not valid", + "This contact is not available" : "This contact is not available", + "You have no permission to create a new circle" : "You have no permission to create a new circle", + "%s shared a file with \"%s\"." : "%s shared a file with \"%s\".", + "%s shared a file with you." : "%s shared a file with you.", + "%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n" : "%1$s shared some content with you.\nYou should have already received a separate email with a link to access it.\n", + "%1$s shared some content with you. You should have already received a separate email with a link to access it." : "%1$s shared some content with you. You should have already received a separate email with a link to access it.", + "Password to access content shared with you by %1$s" : "Password to access content shared with you by %1$s", + "Password to access content" : "Password to access content", + "This item is already shared with this circle" : "This item is already shared with this circle", + "Bring cloud-users closer together." : "Bring cloud-users closer together.", + "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose." : "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose.", + "No files in here" : "No files in here", + "No entries found in this folder" : "No entries found in this folder", + "Name" : "Name", + "Size" : "Size", + "Modified" : "Modified", + "Initialisation Nextcloud" : "Initialisation Nextcloud", + "Initialisation Circles App" : "Initialisation Circles App" +},"pluralForm" :"nplurals=2; plural=(n!=1);" +} \ No newline at end of file From 63ac88b4aafa694b72e4728532db5c8824c713f6 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 16 Jan 2024 00:30:48 +0000 Subject: [PATCH 03/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/lv.js | 1 + l10n/lv.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/lv.js b/l10n/lv.js index 2021e7e8d..aa310286f 100644 --- a/l10n/lv.js +++ b/l10n/lv.js @@ -5,6 +5,7 @@ OC.L10N.register( "System" : "Sistēma", "Visible" : "Redzams", "Open" : "Atvērt", + "Invite" : "Uzaicināt", "Hidden" : "Paslēpts", "Local" : "Lokāls", "Root" : "Root", diff --git a/l10n/lv.json b/l10n/lv.json index bee70e0a5..192029b42 100644 --- a/l10n/lv.json +++ b/l10n/lv.json @@ -3,6 +3,7 @@ "System" : "Sistēma", "Visible" : "Redzams", "Open" : "Atvērt", + "Invite" : "Uzaicināt", "Hidden" : "Paslēpts", "Local" : "Lokāls", "Root" : "Root", From 8c57daa14954ca9f5f0f1efceb1ff429128b17a3 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 21 Jan 2024 00:49:21 +0000 Subject: [PATCH 04/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/uk.js | 2 +- l10n/uk.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n/uk.js b/l10n/uk.js index fe1150c62..6b8896d6d 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -175,7 +175,7 @@ OC.L10N.register( "Password to access content" : "Пароль для доступу до вмісту", "This item is already shared with this circle" : "Цей елемент уже надано спільно для цього кола", "Bring cloud-users closer together." : "Зближіть користувачів хмари.", - "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose." : "Кола дозволяють людям створювати власні групи людей/колег/друзів. \nПотім ці групи людей (або «кола») можуть використовуватися будь-якою іншою програмою для спільного використання.", + "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (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" : "Ім'я", diff --git a/l10n/uk.json b/l10n/uk.json index a5a898dbe..17ebc653d 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -173,7 +173,7 @@ "Password to access content" : "Пароль для доступу до вмісту", "This item is already shared with this circle" : "Цей елемент уже надано спільно для цього кола", "Bring cloud-users closer together." : "Зближіть користувачів хмари.", - "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (or \"circles\") can then be used by any other app for sharing purpose." : "Кола дозволяють людям створювати власні групи людей/колег/друзів. \nПотім ці групи людей (або «кола») можуть використовуватися будь-якою іншою програмою для спільного використання.", + "Circles allows people to create their own groups of people/colleagues/friends.\nThose groups of people (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" : "Ім'я", From e50db72a006178784664eda89870a44ae095e05d Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 17 Jan 2024 00:25:06 -0100 Subject: [PATCH 05/10] switch to getCircles() Signed-off-by: Maxence Lange --- lib/Service/SearchService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/SearchService.php b/lib/Service/SearchService.php index 1d2d17858..76863c5bf 100644 --- a/lib/Service/SearchService.php +++ b/lib/Service/SearchService.php @@ -106,7 +106,7 @@ public function unifiedSearch(string $term, array $options): array { $probe = $this->generateSearchProbe($term, $options); try { - $circles = $this->circleService->probeCircles($probe); + $circles = $this->circleService->getCircles($probe); } catch (InitiatorNotFoundException $e) { return []; } From ad7390018e1b146a31f4a58f48d4df89fd500821 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 17 Jan 2024 02:21:23 -0100 Subject: [PATCH 06/10] fix search on circles share Signed-off-by: Maxence Lange --- lib/Db/CoreQueryBuilder.php | 22 +++++++++++++++------- lib/Db/ShareWrapperRequest.php | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index 186677401..90f0e3a95 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -1557,16 +1557,24 @@ public function leftJoinShareChild(string $aliasShare, string $aliasShareMembers * @param FederatedUser $federatedUser * @param bool $reshares */ - public function limitToShareOwner(string $alias, FederatedUser $federatedUser, bool $reshares): void { + public function limitToShareOwner( + string $alias, + FederatedUser $federatedUser, + bool $reshares, + int $nodeId = 0 + ): void { $expr = $this->expr(); - $orX = $expr->orX($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); - - if ($reshares) { - $orX->add($this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias)); + if ($reshares === false) { + $this->andWhere($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); + } else if ($nodeId === 0) { + $this->andWhere( + $expr->orX( + $this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias), + $this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias) + ) + ); } - - $this->andWhere($orX); } diff --git a/lib/Db/ShareWrapperRequest.php b/lib/Db/ShareWrapperRequest.php index 8f84f3b55..957f0c993 100644 --- a/lib/Db/ShareWrapperRequest.php +++ b/lib/Db/ShareWrapperRequest.php @@ -343,7 +343,7 @@ public function getSharesBy( $qb->setOptions([CoreQueryBuilder::SHARE], ['getData' => $getData]); $qb->leftJoinCircle(CoreQueryBuilder::SHARE, null, 'share_with'); - $qb->limitToShareOwner(CoreQueryBuilder::SHARE, $federatedUser, $reshares); + $qb->limitToShareOwner(CoreQueryBuilder::SHARE, $federatedUser, $reshares, $nodeId); $qb->limitNull('parent', false); if ($nodeId > 0) { From 43f97c50e7bbb5d7f90537e0a598e16a804688b1 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Mon, 22 Jan 2024 18:25:38 -0100 Subject: [PATCH 07/10] fix lint Signed-off-by: Maxence Lange --- lib/Db/CoreQueryBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index 90f0e3a95..7cfbac7ba 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -1567,7 +1567,7 @@ public function limitToShareOwner( if ($reshares === false) { $this->andWhere($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); - } else if ($nodeId === 0) { + } elseif ($nodeId === 0) { $this->andWhere( $expr->orX( $this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias), From 822ea4b7835ce806a7070cdabbbb7b05f85d28a4 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 31 Jan 2024 00:31:21 +0000 Subject: [PATCH 08/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/de.js | 2 +- l10n/de.json | 2 +- l10n/de_DE.js | 2 +- l10n/de_DE.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/l10n/de.js b/l10n/de.js index edd33d9e7..815bd5eb2 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -143,7 +143,7 @@ OC.L10N.register( "You have been blocked from this circle" : "Du wurdest für diesen Kreis blockiert", "The account is already a member of this circle" : "Dieses Konto ist bereits Mitglied dieses Kreises", "The account has already been invited into this circle" : "Dieser Benutzer wurde bereits zu diesem Kreis eingeladen.", - "%s (Circle owned by %s)" : "%s (Kreis im Besitz von%s)", + "%s (Circle owned by %s)" : "%s (Kreis im Besitz von %s)", "You are now a member of the Circle \"%2$s\"" : "Du bist jetzt ein Mitglied des Kreises \"%2$s\"", "You have been invited by %1$s into the Circle \"%2$s\"" : "Du wurdest von %1$s zum Kreis \"%2$s\" eingeladen", "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s hat eine Mitgliedschaftsanfrage für den Kreis \"%2$s\" gesendet", diff --git a/l10n/de.json b/l10n/de.json index 1d78aef3e..52f744232 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -141,7 +141,7 @@ "You have been blocked from this circle" : "Du wurdest für diesen Kreis blockiert", "The account is already a member of this circle" : "Dieses Konto ist bereits Mitglied dieses Kreises", "The account has already been invited into this circle" : "Dieser Benutzer wurde bereits zu diesem Kreis eingeladen.", - "%s (Circle owned by %s)" : "%s (Kreis im Besitz von%s)", + "%s (Circle owned by %s)" : "%s (Kreis im Besitz von %s)", "You are now a member of the Circle \"%2$s\"" : "Du bist jetzt ein Mitglied des Kreises \"%2$s\"", "You have been invited by %1$s into the Circle \"%2$s\"" : "Du wurdest von %1$s zum Kreis \"%2$s\" eingeladen", "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s hat eine Mitgliedschaftsanfrage für den Kreis \"%2$s\" gesendet", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 26e7b4208..d45fd7f53 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -143,7 +143,7 @@ OC.L10N.register( "You have been blocked from this circle" : "Sie wurden für diesen Kreis blockiert", "The account is already a member of this circle" : "Dieses Konto ist bereits Mitglied dieses Kreises", "The account has already been invited into this circle" : "Dieses Konto wurde bereits zu diesem Kreis eingeladen.", - "%s (Circle owned by %s)" : "%s (Kreis im Besitz von%s)", + "%s (Circle owned by %s)" : "%s (Kreis im Besitz von %s)", "You are now a member of the Circle \"%2$s\"" : "Sie sind jetzt ein Mitglied des Kreises \"%2$s\"", "You have been invited by %1$s into the Circle \"%2$s\"" : "Sie wurden von %1$s zum Kreis \"%2$s\" eingeladen", "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s hat eine Mitgliedschaftsanfrage für den Kreis \"%2$s\" gesendet", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 78b5d373b..91089031e 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -141,7 +141,7 @@ "You have been blocked from this circle" : "Sie wurden für diesen Kreis blockiert", "The account is already a member of this circle" : "Dieses Konto ist bereits Mitglied dieses Kreises", "The account has already been invited into this circle" : "Dieses Konto wurde bereits zu diesem Kreis eingeladen.", - "%s (Circle owned by %s)" : "%s (Kreis im Besitz von%s)", + "%s (Circle owned by %s)" : "%s (Kreis im Besitz von %s)", "You are now a member of the Circle \"%2$s\"" : "Sie sind jetzt ein Mitglied des Kreises \"%2$s\"", "You have been invited by %1$s into the Circle \"%2$s\"" : "Sie wurden von %1$s zum Kreis \"%2$s\" eingeladen", "%1$s sent a request to be a member of the Circle \"%2$s\"" : "%1$s hat eine Mitgliedschaftsanfrage für den Kreis \"%2$s\" gesendet", From bcd9738b2a07c7ebca0092dc74d565ad8440578f Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 5 Feb 2024 00:30:57 +0000 Subject: [PATCH 09/10] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/ast.js | 10 ++++++++++ l10n/ast.json | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/l10n/ast.js b/l10n/ast.js index ed4290acf..cf0cd9382 100644 --- a/l10n/ast.js +++ b/l10n/ast.js @@ -2,7 +2,17 @@ OC.L10N.register( "circles", { "Circles" : "Círculos", + "Circles' files" : "Ficheros de Círculos", + "No circles found" : "Nun s'atopó nengún círculu", + "No files found for the selected circles" : "Nun s'atopó nengún ficheru pa los círculos seleicionaos", + "You created the circle {circle}" : "Creesti'l círculu «{circle}»", + "{author} created the circle {circle}" : "{author} creó'l círculu «{circle}»", + "You deleted {circle}" : "Desaniciesti «{circle}»", + "{author} deleted {circle}" : "{author} desanició «{circle}»", "Backend" : "Backend", + "Mount point" : "Puntu de montaxe", + "Nextcloud Account" : "Cuenta de Nextcloud", + "Nextcloud Group" : "Grupu de Nextcloud", "Circle" : "Círculu", "Admin" : "Alministración", "%1$s via %2$s" : "%1$s per %2$s", diff --git a/l10n/ast.json b/l10n/ast.json index 59fad6835..85883a0b2 100644 --- a/l10n/ast.json +++ b/l10n/ast.json @@ -1,6 +1,16 @@ { "translations": { "Circles" : "Círculos", + "Circles' files" : "Ficheros de Círculos", + "No circles found" : "Nun s'atopó nengún círculu", + "No files found for the selected circles" : "Nun s'atopó nengún ficheru pa los círculos seleicionaos", + "You created the circle {circle}" : "Creesti'l círculu «{circle}»", + "{author} created the circle {circle}" : "{author} creó'l círculu «{circle}»", + "You deleted {circle}" : "Desaniciesti «{circle}»", + "{author} deleted {circle}" : "{author} desanició «{circle}»", "Backend" : "Backend", + "Mount point" : "Puntu de montaxe", + "Nextcloud Account" : "Cuenta de Nextcloud", + "Nextcloud Group" : "Grupu de Nextcloud", "Circle" : "Círculu", "Admin" : "Alministración", "%1$s via %2$s" : "%1$s per %2$s", From c91cba5ea17bf58431ef946b12d63937e8b1c24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6?= Date: Mon, 5 Feb 2024 17:08:09 +0100 Subject: [PATCH 10/10] chore: update workflows from templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ --- .github/workflows/block-merge-freeze.yml | 10 ++- .github/workflows/documentation.yml | 16 ++-- .github/workflows/lint-php-cs.yml | 9 ++- .github/workflows/lint-php.yml | 17 ++--- .github/workflows/phpunit-mysql.yml | 87 ++++++++++++++-------- .github/workflows/phpunit-oci.yml | 80 ++++++++++++-------- .github/workflows/phpunit-pgsql.yml | 78 ++++++++++++------- .github/workflows/phpunit-sqlite.yml | 78 ++++++++++++------- .github/workflows/pr-feedback.yml | 2 +- .github/workflows/psalm.yml | 19 ++--- .github/workflows/update-nextcloud-ocp.yml | 12 +-- 11 files changed, 248 insertions(+), 160 deletions(-) diff --git a/.github/workflows/block-merge-freeze.yml b/.github/workflows/block-merge-freeze.yml index f2d029c99..2e4b3e25d 100644 --- a/.github/workflows/block-merge-freeze.yml +++ b/.github/workflows/block-merge-freeze.yml @@ -22,11 +22,15 @@ jobs: if: github.event.pull_request.draft == false - runs-on: ubuntu-latest + runs-on: ubuntu-latest-low 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: Register server reference to fallback to master branch + run: | + server_ref="$(if [ "${{ github.base_ref }}" = "main" ]; then echo -n "master"; else echo -n "${{ github.base_ref }}"; fi)" + echo "server_ref=$server_ref" >> $GITHUB_ENV + - name: Download version.php from ${{ env.server_ref }} + run: curl https://raw.githubusercontent.com/nextcloud/server/${{ env.server_ref }}/version.php --output version.php - name: Run check run: cat version.php | grep 'OC_VersionString' | grep -i -v 'RC' diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 68ed22809..895eb594e 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -12,22 +12,24 @@ jobs: name: Build and deploy steps: - name: Check actor permission level - uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2 + # Only allow admin to deploy on release + if: github.event.release + uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v2 with: require: admin - name: Checkout - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1 + uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 id: versions with: - fallbackNode: '^16' - fallbackNpm: '^8' + fallbackNode: '^20' + fallbackNpm: '^10' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ steps.versions.outputs.nodeVersion }} @@ -35,6 +37,8 @@ jobs: run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - name: Install dependencies & build + env: + CYPRESS_INSTALL_BINARY: 0 run: | npm ci npm run build --if-present diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml index 0fdb3ebf5..bfdcb1460 100644 --- a/.github/workflows/lint-php-cs.yml +++ b/.github/workflows/lint-php-cs.yml @@ -22,12 +22,13 @@ jobs: steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Set up php - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + - name: Set up php8.2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: - php-version: 8.1 + php-version: 8.2 + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development env: diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml index 22f861242..ace42769c 100644 --- a/.github/workflows/lint-php.yml +++ b/.github/workflows/lint-php.yml @@ -5,13 +5,7 @@ name: Lint php -on: - pull_request: - push: - branches: - - main - - master - - stable* +on: pull_request permissions: contents: read @@ -25,18 +19,19 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: [ "8.0", "8.1", "8.2" ] + php-versions: [ '8.0', '8.1', '8.2', '8.3' ] name: php-lint steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: php-version: ${{ matrix.php-versions }} + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development env: @@ -48,7 +43,7 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest + runs-on: ubuntu-latest-low needs: php-lint if: always() diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 4e6748d4b..4e3bd5eec 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -3,27 +3,9 @@ # https://github.com/nextcloud/.github # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -name: PHPUnit mysql - -on: - pull_request: - paths: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - push: - branches: - - main - - master - - stable* +name: PHPUnit MySQL + +on: pull_request permissions: contents: read @@ -33,17 +15,58 @@ concurrency: cancel-in-progress: true jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + matrix: ${{ steps.versions.outputs.sparse-matrix }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@d594a6929da316b732c53355e52a1ead77ba36c7 # v1.2.0 + with: + matrix: '{"mysql-versions": ["8.1"]}' + + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - 'appinfo/**' + - 'lib/**' + - 'templates/**' + - 'tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + phpunit-mysql: runs-on: ubuntu-latest + needs: [changes, matrix] + if: needs.changes.outputs.src != 'false' + strategy: - matrix: - php-versions: ['8.0', '8.1', '8.2', '8.3'] - server-versions: ['master'] + matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} + + name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} services: mysql: - image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6:latest + image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest ports: - 4444:3306/tcp env: @@ -57,19 +80,19 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: submodules: true repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation @@ -86,7 +109,7 @@ jobs: - name: Check composer file existence id: check_composer - uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 + uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2 with: files: apps/${{ env.APP_NAME }}/composer.json @@ -150,8 +173,8 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest - needs: phpunit-mysql + runs-on: ubuntu-latest-low + needs: [changes, phpunit-mysql] if: always() @@ -159,4 +182,4 @@ jobs: steps: - name: Summary status - run: if ${{ needs.phpunit-mysql.result != 'success' }}; then exit 1; fi + run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml index 7ba3f6e27..d18ef028e 100644 --- a/.github/workflows/phpunit-oci.yml +++ b/.github/workflows/phpunit-oci.yml @@ -5,25 +5,7 @@ name: PHPUnit OCI -on: - pull_request: - paths: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - push: - branches: - - main - - master - - stable* +on: pull_request permissions: contents: read @@ -33,13 +15,53 @@ concurrency: cancel-in-progress: true jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + php-max: ${{ steps.versions.outputs.php-max-list }} + server-max: ${{ steps.versions.outputs.branches-max-list }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@d594a6929da316b732c53355e52a1ead77ba36c7 # v1.2.0 + + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - 'appinfo/**' + - 'lib/**' + - 'templates/**' + - 'tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + phpunit-oci: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + + needs: [changes, matrix] + if: needs.changes.outputs.src != 'false' strategy: matrix: - php-versions: ['8.0'] - server-versions: ['master'] + php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }} + server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} services: oracle: @@ -69,19 +91,19 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: submodules: true repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation @@ -93,7 +115,7 @@ jobs: - name: Check composer file existence id: check_composer - uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 + uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2 with: files: apps/${{ env.APP_NAME }}/composer.json @@ -157,8 +179,8 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest - needs: phpunit-oci + runs-on: ubuntu-latest-low + needs: [changes, phpunit-oci] if: always() @@ -166,4 +188,4 @@ jobs: steps: - name: Summary status - run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi + run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-oci.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index c944d35c5..7111f3017 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -5,25 +5,7 @@ name: PHPUnit pgsql -on: - pull_request: - paths: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - push: - branches: - - main - - master - - stable* +on: pull_request permissions: contents: read @@ -33,13 +15,53 @@ concurrency: cancel-in-progress: true jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + php-max: ${{ steps.versions.outputs.php-max-list }} + server-max: ${{ steps.versions.outputs.branches-max-list }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@d594a6929da316b732c53355e52a1ead77ba36c7 # v1.2.0 + + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - 'appinfo/**' + - 'lib/**' + - 'templates/**' + - 'tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + phpunit-pgsql: runs-on: ubuntu-latest + needs: [changes, matrix] + if: needs.changes.outputs.src != 'false' + strategy: matrix: - php-versions: ['8.0'] - server-versions: ['master'] + php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }} + server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} services: postgres: @@ -59,19 +81,19 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: submodules: true repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation @@ -83,7 +105,7 @@ jobs: - name: Check composer file existence id: check_composer - uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 + uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2 with: files: apps/${{ env.APP_NAME }}/composer.json @@ -147,8 +169,8 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest - needs: phpunit-pgsql + runs-on: ubuntu-latest-low + needs: [changes, phpunit-pgsql] if: always() @@ -156,4 +178,4 @@ jobs: steps: - name: Summary status - run: if ${{ needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi + run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 35463b0dc..1deb1bdd5 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -5,25 +5,7 @@ name: PHPUnit sqlite -on: - pull_request: - paths: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - push: - branches: - - main - - master - - stable* +on: pull_request permissions: contents: read @@ -33,13 +15,53 @@ concurrency: cancel-in-progress: true jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + php-max: ${{ steps.versions.outputs.php-max-list }} + server-max: ${{ steps.versions.outputs.branches-max-list }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@d594a6929da316b732c53355e52a1ead77ba36c7 # v1.2.0 + + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - 'appinfo/**' + - 'lib/**' + - 'templates/**' + - 'tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + phpunit-sqlite: runs-on: ubuntu-latest + needs: [changes, matrix] + if: needs.changes.outputs.src != 'false' + strategy: matrix: - php-versions: ['8.0'] - server-versions: ['master'] + php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }} + server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} steps: - name: Set app env @@ -48,19 +70,19 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: submodules: true repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation @@ -72,7 +94,7 @@ jobs: - name: Check composer file existence id: check_composer - uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 + uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2 with: files: apps/${{ env.APP_NAME }}/composer.json @@ -136,8 +158,8 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest - needs: phpunit-sqlite + runs-on: ubuntu-latest-low + needs: [changes, phpunit-sqlite] if: always() @@ -145,4 +167,4 @@ jobs: steps: - name: Summary status - run: if ${{ needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi + run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml index 559e183f3..0e7359dec 100644 --- a/.github/workflows/pr-feedback.yml +++ b/.github/workflows/pr-feedback.yml @@ -30,5 +30,5 @@ jobs: Thank you for contributing to Nextcloud and we hope to hear from you soon! days-before-feedback: 14 start-date: "2023-07-10" - exempt-authors: "${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot" + exempt-authors: "${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot,skjnldsv,datenangebot" exempt-bots: true diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index bc5430b2b..ff526a2a0 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -5,13 +5,7 @@ name: Static analysis -on: - pull_request: - push: - branches: - - master - - main - - stable* +on: pull_request concurrency: group: psalm-${{ github.head_ref || github.run_id }} @@ -21,15 +15,16 @@ jobs: static-analysis: runs-on: ubuntu-latest - name: Nextcloud + name: static-psalm-analysis steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Set up php - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + - name: Set up php8.2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: - php-version: 8.1 + php-version: 8.2 + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development env: diff --git a/.github/workflows/update-nextcloud-ocp.yml b/.github/workflows/update-nextcloud-ocp.yml index bd2d39a88..b71c21a38 100644 --- a/.github/workflows/update-nextcloud-ocp.yml +++ b/.github/workflows/update-nextcloud-ocp.yml @@ -17,23 +17,23 @@ jobs: strategy: fail-fast: false matrix: - branches: ["main", "master", "stable28", "stable27", "stable26"] + branches: ['main', 'master', 'stable28', 'stable27', 'stable26'] name: update-nextcloud-ocp-${{ matrix.branches }} steps: - id: checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ matrix.branches }} submodules: true continue-on-error: true - - name: Set up php8.1 + - name: Set up php8.2 if: steps.checkout.outcome == 'success' - uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2 with: - php-version: 8.1 + php-version: 8.2 # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none @@ -100,7 +100,7 @@ jobs: - name: Create Pull Request if: steps.checkout.outcome == 'success' - uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v3 + uses: peter-evans/create-pull-request@b1ddad2c994a25fbc81a28b3ec0e368bb2021c50 # v3 with: token: ${{ secrets.COMMAND_BOT_PAT }} commit-message: "chore(dev-deps): Bump nextcloud/ocp package"