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 / Services / SubscriptionService.php
wp-user-avatar / src / Membership / Services Last commit date
EUVATChecker 3 years ago Calculator.php 3 years ago CouponService.php 3 years ago CustomerService.php 3 years ago OrderService.php 4 months ago SubscriptionService.php 4 months ago TaxService.php 3 years ago index.php 3 years ago
SubscriptionService.php
114 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\Services;
4
5 use ProfilePress\Core\Classes\PROFILEPRESS_sql;
6 use ProfilePress\Core\Membership\Models\Subscription\SubscriptionBillingFrequency;
7 use ProfilePress\Core\Membership\Models\Subscription\SubscriptionFactory;
8 use ProfilePress\Core\Membership\Repositories\SubscriptionRepository;
9 use ProfilePress\Core\ShortcodeParser\MyAccount\MyAccountTag;
10 use ProfilePressVendor\Carbon\CarbonImmutable;
11
12 class SubscriptionService
13 {
14 public function get_plan_expiration_datetime($plan_id)
15 {
16 $expiration_datetime = '';
17
18 $plan = ppress_get_plan($plan_id);
19
20 if ($plan->is_recurring()) {
21
22 $carbon = CarbonImmutable::now(wp_timezone());
23
24 if ($plan->has_free_trial()) {
25
26 $duration = explode('_', $plan->get_free_trial());
27 $period = $carbon->add($duration[0], $duration[1]);
28
29 } else {
30
31 $period = $plan->billing_frequency;
32
33 switch ($period) {
34 case SubscriptionBillingFrequency::DAILY :
35 $period = $carbon->addDay();
36 break;
37 case SubscriptionBillingFrequency::WEEKLY :
38 $period = $carbon->addWeek();
39 break;
40 case SubscriptionBillingFrequency::QUARTERLY :
41 $period = $carbon->addMonths(3);
42 break;
43 case SubscriptionBillingFrequency::EVERY_6_MONTHS :
44 $period = $carbon->addMonths(6);
45 break;
46 case SubscriptionBillingFrequency::YEARLY :
47 $period = $carbon->addYear();
48 break;
49 default:
50 $period = $carbon->addMonth();
51 break;
52 }
53 }
54
55 $expiration_datetime = $period->toDateTimeString();
56 }
57
58 return apply_filters('ppress_plan_expiration_datetime', $expiration_datetime, $plan_id, $plan);
59 }
60
61 /**
62 * @param $sub_id
63 *
64 * @return false|int
65 */
66 public function delete_subscription($sub_id)
67 {
68 $sub = SubscriptionFactory::fromId($sub_id);
69
70 if ($sub->exists()) {
71 $sub->cancel(true);
72 }
73
74 $sub->remove_plan_role_from_customer();
75
76 $result = SubscriptionRepository::init()->delete($sub_id);
77
78 if ($result) {
79 PROFILEPRESS_sql::delete_meta_data_by_flag($sub->get_meta_flag_id());
80 }
81
82 do_action('ppress_subscription_deleted', $sub_id, $sub);
83
84 return $result;
85 }
86
87 public function frontend_view_sub_url($subscription_id)
88 {
89 return add_query_arg(['sub_id' => $subscription_id], MyAccountTag::get_endpoint_url('list-subscriptions'));
90 }
91
92 public function admin_view_sub_url($subscription_id)
93 {
94 return add_query_arg(
95 ['ppress_subscription_action' => 'edit', 'id' => $subscription_id],
96 PPRESS_MEMBERSHIP_SUBSCRIPTIONS_SETTINGS_PAGE
97 );
98 }
99
100 /**
101 * @return self
102 */
103 public static function init()
104 {
105 static $instance = null;
106
107 if (is_null($instance)) {
108 $instance = new self();
109 }
110
111 return $instance;
112 }
113 }
114