PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.0
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 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.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Models / Purchase.php
surecart / app / src / Models Last commit date
Traits 2 years ago AbandonedCheckout.php 3 years ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 3 years ago Activation.php 3 years ago ApiToken.php 3 years ago BalanceTransaction.php 3 years ago Brand.php 3 years ago Bump.php 3 years ago BuyLink.php 3 years ago CancellationAct.php 3 years ago CancellationReason.php 3 years ago Charge.php 3 years ago Checkout.php 2 years ago Collection.php 3 years ago Component.php 3 years ago Coupon.php 3 years ago Customer.php 2 years ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago DatabaseModel.php 2 years ago Download.php 3 years ago Event.php 3 years ago Form.php 3 years ago Fulfillment.php 3 years ago FulfillmentItem.php 3 years ago IncomingWebhook.php 2 years ago Integration.php 3 years ago Invoice.php 3 years ago License.php 3 years ago LineItem.php 2 years ago ManualPaymentMethod.php 3 years ago Media.php 3 years ago Model.php 2 years ago ModelInterface.php 3 years ago Order.php 3 years ago OrderProtocol.php 3 years ago PaymentIntent.php 3 years ago PaymentMethod.php 3 years ago Period.php 3 years ago PortalProtocol.php 3 years ago PortalSession.php 3 years ago Price.php 3 years ago Processor.php 3 years ago Product.php 2 years ago ProductCollection.php 2 years ago ProductGroup.php 2 years ago ProductMedia.php 3 years ago Promotion.php 3 years ago ProvisionalAccount.php 3 years ago Purchase.php 3 years ago Refund.php 3 years ago RegisteredWebhook.php 2 years ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.php 2 years ago ShippingMethod.php 3 years ago ShippingProfile.php 3 years ago ShippingProtocol.php 3 years ago ShippingRate.php 3 years ago ShippingZone.php 3 years ago Statistic.php 3 years ago Subscription.php 2 years ago SubscriptionProtocol.php 3 years ago TaxProtocol.php 3 years ago TaxRegistration.php 3 years ago TaxZone.php 3 years ago Upload.php 3 years ago User.php 2 years ago Variant.php 2 years ago VariantOption.php 2 years ago VariantValue.php 2 years ago VerificationCode.php 3 years ago Webhook.php 2 years ago WebhookRegistration.php 2 years ago
Purchase.php
162 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Order;
6 use SureCart\Models\Traits\HasCustomer;
7 use SureCart\Models\Traits\HasProduct;
8 use SureCart\Models\Traits\HasRefund;
9 use SureCart\Models\Traits\HasSubscription;
10
11 /**
12 * Purchase model.
13 */
14 class Purchase extends Model {
15 use HasCustomer, HasProduct, HasSubscription, HasRefund;
16
17 /**
18 * Rest API endpoint
19 *
20 * @var string
21 */
22 protected $endpoint = 'purchases';
23
24 /**
25 * Object name
26 *
27 * @var string
28 */
29 protected $object_name = 'purchase';
30
31 /**
32 * Set the product attribute
33 *
34 * @param string $value Product properties.
35 * @return void
36 */
37 public function setInitialOrderAttribute( $value ) {
38 $this->setRelation( 'initial_order', $value, Order::class );
39 }
40
41 /**
42 * Revoke the purchase.
43 *
44 * @param string $id Model id.
45 *
46 * @return $this|\WP_Error
47 */
48 protected function revoke( $id = 0 ) {
49 $id = $id ? $id : $this->id;
50
51 if ( $this->fireModelEvent( 'revoking' ) === false ) {
52 return false;
53 }
54
55 if ( empty( $id ) ) {
56 return new \WP_Error( 'not_saved', 'You can only revoke an existing purchase.' );
57 }
58
59 $model = $this->makeRequest(
60 [
61 'method' => 'PATCH',
62 'query' => $this->query,
63 ],
64 $this->endpoint . '/' . $id . '/revoke/',
65 );
66
67 if ( is_wp_error( $model ) ) {
68 return $model;
69 }
70
71 $this->resetAttributes();
72
73 $this->fill( $model );
74
75 $this->fireModelEvent( 'revoked' );
76
77 // purchase revoked event.
78 do_action( 'surecart/purchase_revoked', $this );
79
80 return $this;
81 }
82
83 /**
84 * Invoke the purchase.
85 *
86 * @param string $id Model id.
87 *
88 * @return $this|\WP_Error
89 */
90 protected function invoke( $id = 0 ) {
91 $id = $id ? $id : $this->id;
92
93 if ( $this->fireModelEvent( 'invoking' ) === false ) {
94 return false;
95 }
96
97 if ( empty( $id ) ) {
98 return new \WP_Error( 'not_saved', 'You can only invoke an existing purchase.' );
99 }
100
101 $model = $this->makeRequest(
102 [
103 'method' => 'PATCH',
104 'query' => $this->getQuery(),
105 ],
106 $this->endpoint . '/' . $id . '/invoke/',
107 );
108
109 if ( is_wp_error( $model ) ) {
110 return $model;
111 }
112
113 $this->resetAttributes();
114
115 $this->fill( $model );
116
117 $this->fireModelEvent( 'invoked' );
118
119 // purchase invoked event.
120 do_action( 'surecart/purchase_invoked', $this );
121
122 return $this;
123 }
124
125 /**
126 * Has the product changed?
127 */
128 protected function getHasProductChangedAttribute() {
129 return (bool) $this->getPreviousProductIdAttribute();
130 }
131
132 /**
133 * Get the previous product ID.
134 *
135 * @return string
136 */
137 protected function getPreviousProductIdAttribute() {
138 if ( empty( $this->attributes['previous_attributes']['product'] ) ) {
139 return false;
140 }
141 if ( is_string( $this->attributes['previous_attributes']['product'] ) ) {
142 return $this->attributes['previous_attributes']['product'];
143 }
144 if ( ! empty( $this->attributes['previous_attributes']['product']['id'] ) ) {
145 return $this->attributes['previous_attributes']['product']['id'];
146 }
147 return false;
148 }
149
150 /**
151 * Get the previous quantity
152 *
153 * @return integer
154 */
155 protected function getPreviousQuantityAttribute() {
156 if ( empty( $this->attributes['previous_attributes']['quantity'] ) ) {
157 return false;
158 }
159 return $this->attributes['previous_attributes']['quantity'];
160 }
161 }
162