PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.1
4.17.1 4.17.0 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 / SubscriptionAfterExpiredNotification.php
wp-user-avatar / src / Membership / Emails Last commit date
AbstractMembershipEmail.php 1 month ago EmailDataTrait.php 2 weeks ago NewOrderAdminNotification.php 2 years ago NewOrderReceipt.php 2 years ago RenewalOrderReceipt.php 2 years ago SubscriptionAfterExpiredNotification.php 1 day ago SubscriptionCancelledNotification.php 2 years ago SubscriptionCompletedNotification.php 2 years ago SubscriptionExpirationReminder.php 4 months ago SubscriptionExpiredNotification.php 1 day ago SubscriptionPaymentFailedNotification.php 2 weeks ago SubscriptionRenewalReminder.php 4 months ago index.php 4 years ago
SubscriptionAfterExpiredNotification.php
68 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 SubscriptionAfterExpiredNotification extends AbstractMembershipEmail
11 {
12 const ID = 'subscription_after_expired_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 ( ! apply_filters('ppress_subscription_after_expired_reminder_email_enabled', true)) return;
25
26 if (ppress_get_setting(self::ID . '_email_enabled', 'on') !== 'on') return;
27
28 $reminder_days = (int)apply_filters('ppress_' . self::ID . '_reminder_days',
29 ppress_get_setting(self::ID . '_reminder_days', '2', true)
30 );
31
32 $subDate = CarbonImmutable::now(wp_timezone())->subDays($reminder_days);
33
34 $subscriptions = SubscriptionRepository::init()->retrieveBy([
35 'status' => [SubscriptionStatus::EXPIRED],
36 'number' => 0,
37 'date_column' => 'expiration_date',
38 'start_date' => $subDate->startOfDay()->utc()->toDateTimeString(),
39 'end_date' => $subDate->endOfDay()->utc()->toDateTimeString()
40 ]);
41
42 if ( ! is_array($subscriptions) || empty($subscriptions)) return;
43
44 foreach ($subscriptions as $subscription) {
45
46 // skip customers that have resubscribed to the plan since it expired.
47 if (CustomerFactory::fromId($subscription->customer_id)->has_active_subscription($subscription->plan_id)) continue;
48
49 $placeholders_values = $this->get_subscription_placeholders_values($subscription);
50
51 $subject = apply_filters('ppress_' . self::ID . '_email_subject', $this->parse_placeholders(
52 ppress_get_setting(self::ID . '_email_subject', esc_html__('Your subscription has expired.', 'wp-user-avatar'), true),
53 $placeholders_values,
54 $subscription
55 ), $subscription);
56
57 $message = apply_filters('ppress_' . self::ID . '_email_content', $this->parse_placeholders(
58 ppress_get_setting(self::ID . '_email_content', $this->get_subscription_expired_content(), true),
59 $placeholders_values,
60 $subscription
61 ), $subscription);
62
63 $recipient = apply_filters('ppress_' . self::ID . '_recipient', CustomerFactory::fromId($subscription->customer_id)->get_email(), $subscription);
64
65 ppress_send_email($recipient, $subject, $message);
66 }
67 }
68 }