PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Membership / Emails / SubscriptionExpirationReminder.php
wp-user-avatar / src / Membership / Emails Last commit date
AbstractMembershipEmail.php 1 week ago EmailDataTrait.php 1 year ago NewOrderAdminNotification.php 2 years ago NewOrderReceipt.php 2 years ago RenewalOrderReceipt.php 2 years ago SubscriptionAfterExpiredNotification.php 1 year ago SubscriptionCancelledNotification.php 2 years ago SubscriptionCompletedNotification.php 2 years ago SubscriptionExpirationReminder.php 3 months ago SubscriptionExpiredNotification.php 1 year ago SubscriptionRenewalReminder.php 3 months ago index.php 3 years ago
SubscriptionExpirationReminder.php
79 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\Emails;
4
5 use ProfilePress\Core\Membership\Models\Customer\CustomerFactory;
6 use ProfilePress\Core\Membership\Models\Subscription\SubscriptionStatus;
7 use ProfilePress\Core\Membership\Repositories\SubscriptionRepository;
8 use ProfilePressVendor\Carbon\CarbonImmutable;
9
10 class SubscriptionExpirationReminder extends AbstractMembershipEmail
11 {
12 const ID = 'subscription_expiration_reminder';
13
14 public function __construct()
15 {
16 add_action('ppress_daily_recurring_job', [$this, 'dispatch_email']);
17 }
18
19 /**
20 * @return void
21 */
22 public function dispatch_email()
23 {
24 if (ppress_get_setting(self::ID . '_email_enabled', 'on') !== 'on') return;
25
26 $reminder_days = (int)apply_filters('ppress_' . self::ID . '_reminder_days',
27 ppress_get_setting(self::ID . '_reminder_days', '1', true)
28 );
29
30 $subDate = CarbonImmutable::now(wp_timezone())->addDays($reminder_days);
31
32 $subscriptions = SubscriptionRepository::init()->retrieveBy([
33 'status' => [SubscriptionStatus::CANCELLED],
34 'limit' => 0,
35 'date_column' => 'expiration_date',
36 'start_date' => $subDate->startOfDay()->utc()->toDateTimeString(),
37 'end_date' => $subDate->endOfDay()->utc()->toDateTimeString()
38 ]);
39
40 $this->handler($subscriptions);
41
42 $subscriptions = SubscriptionRepository::init()->retrieveBy([
43 'status' => [SubscriptionStatus::ACTIVE, SubscriptionStatus::TRIALLING],
44 'limit' => 0,
45 'date_column' => 'expiration_date',
46 'start_date' => $subDate->startOfDay()->utc()->toDateTimeString(),
47 'end_date' => $subDate->endOfDay()->utc()->toDateTimeString(),
48 'profile_id' => 'EMPTY'
49 ]);
50
51 $this->handler($subscriptions);
52 }
53
54 private function handler($subscriptions)
55 {
56 if ( ! is_array($subscriptions) || empty($subscriptions)) return;
57
58 foreach ($subscriptions as $subscription) {
59
60 $placeholders_values = $this->get_subscription_placeholders_values($subscription);
61
62 $subject = apply_filters('ppress_' . self::ID . '_email_subject', $this->parse_placeholders(
63 ppress_get_setting(self::ID . '_email_subject', esc_html__('Your subscription is expiring soon.', 'wp-user-avatar'), true),
64 $placeholders_values,
65 $subscription
66 ), $subscription);
67
68 $message = apply_filters('ppress_' . self::ID . '_email_content', $this->parse_placeholders(
69 ppress_get_setting(self::ID . '_email_content', $this->get_subscription_renewal_reminder_content(true), true),
70 $placeholders_values,
71 $subscription
72 ), $subscription);
73
74 $recipient = apply_filters('ppress_' . self::ID . '_recipient', CustomerFactory::fromId($subscription->customer_id)->get_email(), $subscription);
75
76 ppress_send_email($recipient, $subject, $message);
77 }
78 }
79 }