From 655326897c452a08693a5e0e9c458cc47265056c Mon Sep 17 00:00:00 2001 From: fenn-cs Date: Thu, 26 Sep 2024 13:00:52 +0200 Subject: [PATCH] fix(ShareAPI): Send mails for mail shares by default It looks like, the frontend it needs to provide the `sendMail` param for the backend to decide wether mails would be sent. Our UI does not have that at the moment so it should default to sending emails always for mail shares. Not exactly sure how this was handled earlier but this is a good starting point. Resolves : https://github.com/nextcloud/server/issues/48012 Signed-off-by: fenn-cs --- .../lib/Controller/ShareAPIController.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index cf83587467724..f9fe716716ada 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -658,8 +658,24 @@ public function createShare( $this->checkInheritedAttributes($share); // Handle mail send - if ($sendMail === 'true' || $sendMail === 'false') { - $share->setMailSend($sendMail === 'true'); + if (is_null($sendMail)) { + // Define a default behavior when sendMail is not provided + if($shareType === IShare::TYPE_EMAIL) { + // For email shares, the default is to send the mail + $share->setMailSend(true); + } else { + // For all other share types, the default is to not send the mail + $share->setMailSend(false); + } + } else { + // Convert common "truthy" and "falsy" values to proper booleans + $sendMailBool = filter_var($sendMail, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); + + if ($sendMailBool !== null) { + $share->setMailSend($sendMailBool); + } else { + throw new OCSBadRequestException($this->l->t('Invalid value for sendMail')); + } } if ($shareType === IShare::TYPE_USER) {