No Description

Subscription.php 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace MailPoet\Router\Endpoints;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Config\AccessControl;
  5. use MailPoet\Subscription as UserSubscription;
  6. use MailPoet\WP\Functions as WPFunctions;
  7. class Subscription {
  8. const ENDPOINT = 'subscription';
  9. const ACTION_CAPTCHA = 'captcha';
  10. const ACTION_CAPTCHA_IMAGE = 'captchaImage';
  11. const ACTION_CONFIRM = 'confirm';
  12. const ACTION_MANAGE = 'manage';
  13. const ACTION_UNSUBSCRIBE = 'unsubscribe';
  14. const ACTION_CONFIRM_UNSUBSCRIBE = 'confirmUnsubscribe';
  15. public $allowedActions = [
  16. self::ACTION_CAPTCHA,
  17. self::ACTION_CAPTCHA_IMAGE,
  18. self::ACTION_CONFIRM,
  19. self::ACTION_MANAGE,
  20. self::ACTION_UNSUBSCRIBE,
  21. self::ACTION_CONFIRM_UNSUBSCRIBE,
  22. ];
  23. public $permissions = [
  24. 'global' => AccessControl::NO_ACCESS_RESTRICTION,
  25. ];
  26. /** @var UserSubscription\Pages */
  27. private $subscriptionPages;
  28. /** @var WPFunctions */
  29. private $wp;
  30. /** @var UserSubscription\Captcha */
  31. private $captcha;
  32. public function __construct(
  33. UserSubscription\Pages $subscriptionPages,
  34. WPFunctions $wp,
  35. UserSubscription\Captcha $captcha
  36. ) {
  37. $this->subscriptionPages = $subscriptionPages;
  38. $this->wp = $wp;
  39. $this->captcha = $captcha;
  40. }
  41. public function captcha($data) {
  42. $this->initSubscriptionPage(UserSubscription\Pages::ACTION_CAPTCHA, $data);
  43. }
  44. public function captchaImage($data) {
  45. $width = !empty($data['width']) ? (int)$data['width'] : null;
  46. $height = !empty($data['height']) ? (int)$data['height'] : null;
  47. $sessionId = !empty($data['captcha_session_id']) ? $data['captcha_session_id'] : null;
  48. return $this->captcha->renderImage($width, $height, $sessionId);
  49. }
  50. public function confirm($data) {
  51. $subscription = $this->initSubscriptionPage(UserSubscription\Pages::ACTION_CONFIRM, $data);
  52. $subscription->confirm();
  53. }
  54. public function confirmUnsubscribe($data) {
  55. $enableUnsubscribeConfirmation = $this->wp->applyFilters('mailpoet_unsubscribe_confirmation_enabled', true);
  56. if ($enableUnsubscribeConfirmation) {
  57. $this->initSubscriptionPage(UserSubscription\Pages::ACTION_CONFIRM_UNSUBSCRIBE, $data);
  58. } else {
  59. $this->unsubscribe($data);
  60. }
  61. }
  62. public function manage($data) {
  63. $this->initSubscriptionPage(UserSubscription\Pages::ACTION_MANAGE, $data);
  64. }
  65. public function unsubscribe($data) {
  66. $subscription = $this->initSubscriptionPage(UserSubscription\Pages::ACTION_UNSUBSCRIBE, $data);
  67. $subscription->unsubscribe();
  68. }
  69. private function initSubscriptionPage($action, $data) {
  70. return $this->subscriptionPages->init($action, $data, true, true);
  71. }
  72. }