diff --git a/controller/Controller.class.php b/controller/Controller.class.php index 8fc4736e..1eb42ac3 100644 --- a/controller/Controller.class.php +++ b/controller/Controller.class.php @@ -101,6 +101,7 @@ class Controller $router->any('/list/subscribe', 'MailActions::executeSubscribe'); $router->any('/list/subscribed', 'MailActions::executeSubscribed'); $router->get('/list/confirm/{hash}', 'MailActions::executeConfirm'); + $router->get('/list/unsubscribe/{email}', 'MailActions::executeUnsubscribe'); $router->any('/dmca', 'ReportActions::executeDmca'); diff --git a/controller/action/MailActions.class.php b/controller/action/MailActions.class.php index ef564daa..c1a8ed22 100644 --- a/controller/action/MailActions.class.php +++ b/controller/action/MailActions.class.php @@ -60,7 +60,6 @@ class MailActions extends Actions } - public static function prepareSubscribeFormPartial(array $vars) { $vars += ['btnClass' => 'btn-primary', 'returnUrl' => Request::getRelativeUri()]; @@ -70,4 +69,16 @@ class MailActions extends Actions return $vars; } + + public static function executeUnsubscribe(string $email) + { + $decodedEmail = Encoding::base64DecodeUrlsafe($email); + if (!$decodedEmail) + { + return ['mail/unsubscribe', ['error' => 'Invalid unsubscribe link']]; + } + + $response = LBRY::unsubscribe($decodedEmail); + return ['mail/unsubscribe', ['error' => $response['error']]]; + } } \ No newline at end of file diff --git a/data/i18n/en.yaml b/data/i18n/en.yaml index 00ca0cce..b847f5d9 100644 --- a/data/i18n/en.yaml +++ b/data/i18n/en.yaml @@ -58,6 +58,7 @@ email: confirm_email_button: Confirm Subscription confirm_email_subject: Confirm Your Subscription to LBRY confirm_success: Great success! Welcome to LBRY. + confirm_unsubscribe: You are unsubscribed. disclaimer: You will receive 1-2 messages a month, only from LBRY Inc. and only about LBRY. You can easily unsubscribe at any time. go: Go invalid_confirm_hash: This link is expired or invalid. Please enter your email address again. @@ -112,6 +113,7 @@ page: header: Frequently Asked Questions funnier: One day this will be funnier but today is not that day. join: Join Email List + unsubscribe: Unsubscribe refer: count0: Don't fret, we still like you. count1: Great start! Thanks for sharing. @@ -243,6 +245,7 @@ social: title: home: LBRY - Content Freedom join: Join LBRY Email List + unsubscribe: Unsubscribe learn: Learn About LBRY publish: Publish refer: Share and Earn diff --git a/lib/thirdparty/LBRY.class.php b/lib/thirdparty/LBRY.class.php index 3caf74d3..53401a7a 100644 --- a/lib/thirdparty/LBRY.class.php +++ b/lib/thirdparty/LBRY.class.php @@ -16,4 +16,9 @@ class LBRY ]); return $response['data']['lbc_usd'] ?? 0; } + + public static function unsubscribe($email) + { + return Curl::post(static::getApiUrl('/user_unsubscribe/new'), ['email' => $email], ['json_response' => true]); + } } \ No newline at end of file diff --git a/view/template/mail/unsubscribe.php b/view/template/mail/unsubscribe.php new file mode 100644 index 00000000..b291409e --- /dev/null +++ b/view/template/mail/unsubscribe.php @@ -0,0 +1,13 @@ + + false]) ?> +
+
+

{{page.unsubscribe}}

+ +
+ +
{{email.confirm_unsubscribe}}
+ +
+
+ $learnFooter ?? false]) ?>