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.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 / CouponService.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
CouponService.php
82 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\Services;
4
5 use ProfilePress\Core\Membership\Models\Coupon\CouponFactory;
6 use ProfilePress\Core\Membership\Models\Coupon\CouponUnit;
7 use ProfilePress\Core\Membership\Models\Order\OrderStatus;
8 use ProfilePress\Core\Membership\Models\Order\OrderType;
9 use ProfilePress\Core\Membership\Repositories\OrderRepository;
10
11 class CouponService
12 {
13 public function get_coupon_percentage_fee($percentage, $subtotal)
14 {
15 return Calculator::init($percentage)->
16 dividedBy('100')->
17 multipliedBy($subtotal)->
18 val();
19 }
20
21 /**
22 * Checks whether a customer has used a particular discount code.
23 *
24 * This is used to prevent users from spamming discount codes.
25 *
26 * @param int $customer_id
27 * @param string $code The discount code to check against the customer ID.
28 *
29 * @return bool
30 */
31 function customer_has_used_discount($customer_id, $code)
32 {
33 $result = OrderRepository::init()->retrieveBy([
34 'coupon_code' => $code,
35 'status' => [OrderStatus::COMPLETED, OrderStatus::REFUNDED],
36 'customer_id' => (int)$customer_id,
37 'number' => 1
38 ]);
39
40 return ! empty($result);
41 }
42
43 /**
44 * Returns a formatted discount amount with a '%' sign appended (percentage-based) or with the
45 * currency sign added to the amount (flat discount rate).
46 *
47 * @param string $amount Discount amount.
48 * @param string $type Discount amount - either 'percentage' or 'flat'.
49 *
50 * @return string
51 */
52 function format_discount_display($amount, $type)
53 {
54 $discount = '';
55 if ($type == CouponUnit::PERCENTAGE) {
56 $discount = $amount . '%';
57 } elseif ($type == CouponUnit::FLAT) {
58 $discount = ppress_display_amount($amount);
59 }
60
61 return $discount;
62 }
63
64 public function validate_discount($code, $plan_id = 0, $order_type = OrderType::NEW_ORDER)
65 {
66 return CouponFactory::fromCode($code)->is_valid($plan_id, $order_type);
67 }
68
69 /**
70 * @return self
71 */
72 public static function init()
73 {
74 static $instance = null;
75
76 if (is_null($instance)) {
77 $instance = new self();
78 }
79
80 return $instance;
81 }
82 }