'File shared with a client', self::FolderShared => 'Folder shared with a client', self::FileShareDigest => 'Multiple files/folders shared at once (digest)', self::ClientAccountApproved => 'Client account approved', self::ClientAccountDenied => 'Client account denied', self::ClientWelcome => 'Client welcome (staff-created account)', self::ClientInvited => 'Client invitation', self::ClientAccountEdited => 'Client account edited', self::AdminClientRegistered => 'Admin: new client registered', self::AdminClientUploaded => 'Admin: client uploaded a file', self::GroupMembershipRequested => 'Admin: group membership requested', self::GroupMembershipApproved => 'Group membership approved', self::GroupMembershipDenied => 'Group membership denied', self::CommentPosted => 'New comment on a file', self::CommentDigest => 'Multiple new comments (digest)', self::PasswordReset => 'Password reset', self::TwoFactorReset => 'Two-factor authentication removed by an admin', }; } public function defaultSubject(): string { return match ($this) { self::FileShared => 'A file has been shared with you', self::FolderShared => 'A folder has been shared with you', self::FileShareDigest => ':count items have been shared with you', self::CommentPosted => 'New comment on ":name"', self::CommentDigest => ':count new comments', self::ClientAccountApproved => 'Your account has been approved', self::ClientAccountDenied => 'Your account request was denied', self::ClientWelcome => 'Welcome', self::ClientInvited => "You've been invited to register", self::ClientAccountEdited => 'Your account was updated', self::AdminClientRegistered => 'A new client has registered', self::AdminClientUploaded => 'A client uploaded a file', self::GroupMembershipRequested => 'A client requested to join a group', self::GroupMembershipApproved => 'Your group membership request was approved', self::GroupMembershipDenied => 'Your group membership request was denied', self::PasswordReset => 'Reset Password Notification', self::TwoFactorReset => 'Two-factor authentication was removed from your account', }; } public function defaultBody(): string { return match ($this) { self::FileShared => 'The file ":name" has been shared with you.', self::FolderShared => 'The folder ":name" has been shared with you.', self::FileShareDigest => 'The following :count items have been shared with you:', self::CommentPosted => ':author commented on ":name".', self::CommentDigest => 'There are :count new comments for you:', self::ClientAccountApproved => 'Your account request has been approved. You can now log in.', self::ClientAccountDenied => "Hello :name,\n\nYour account request has been denied.", self::ClientWelcome => 'An account has been created for you. You can log in now.', self::ClientInvited => "Hello :name,\n\nYou've been invited to register a client account. The link below will let you set your own password.", self::ClientAccountEdited => 'Your account details were recently changed by an administrator. Contact your administrator if this was not expected.', self::AdminClientRegistered => 'A new client account was created: :name (:email).', self::AdminClientUploaded => 'The file ":file" was uploaded by :client.', self::GroupMembershipRequested => 'New membership request from :client for the group ":group".', self::GroupMembershipApproved => 'Your request to join the group ":group" has been approved.', self::GroupMembershipDenied => 'Your request to join the group ":group" has been denied.', self::PasswordReset => "You are receiving this email because we received a password reset request for your account.\n\nThis password reset link will expire in :count minutes.\n\nIf you did not request a password reset, no further action is required.", self::TwoFactorReset => 'An administrator removed two-factor authentication from your account. You can set it up again from your security settings. Contact your administrator if this was not expected.', }; } /** * @return array */ public function placeholders(): array { return match ($this) { self::FileShared, self::FolderShared => ['name' => 'The file or folder name'], self::FileShareDigest => ['count' => 'How many files/folders were shared at once'], self::CommentPosted => ['name' => 'The file name', 'author' => "The commenter's name"], // The list of files is appended after the body, like the share // digest's — never part of the customizable text. self::CommentDigest => ['count' => 'How many new comments there are'], self::ClientAccountApproved, self::ClientWelcome, self::ClientAccountEdited => [], self::ClientAccountDenied => ['name' => "The client's name"], self::ClientInvited => ['name' => "The invited person's name, or their email address if none was given"], self::AdminClientRegistered => ['name' => "The client's name", 'email' => "The client's email address"], self::AdminClientUploaded => ['file' => 'The file name', 'client' => "The uploading client's name"], self::GroupMembershipRequested => ['client' => "The client's name", 'group' => 'The group name'], self::GroupMembershipApproved, self::GroupMembershipDenied => ['group' => 'The group name'], self::PasswordReset => ['count' => 'Minutes until the reset link expires'], self::TwoFactorReset => [], }; } }