PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.2.1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.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
Blocks 1 year ago Concerns 1 year ago Traits 1 year ago AbandonedCheckout.php 1 year ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 4 years ago Activation.php 1 year ago Affiliation.php 1 year ago AffiliationProduct.php 1 year ago AffiliationProtocol.php 2 years ago AffiliationRequest.php 1 year ago ApiToken.php 3 years ago BalanceTransaction.php 1 year ago Brand.php 4 years ago BulkAction.php 2 years ago Bump.php 1 year ago BuyLink.php 2 years ago CancellationAct.php 1 year ago CancellationReason.php 3 years ago Charge.php 1 year ago Checkout.php 1 year ago Click.php 1 year ago Collection.php 2 years ago CommissionStructure.php 2 years ago Component.php 4 years ago Coupon.php 1 year ago Customer.php 1 year ago CustomerLink.php 4 years ago CustomerNotificationProtocol.php 4 years ago CustomerPortalProtocol.php 1 year ago DatabaseModel.php 1 year ago Discount.php 1 year ago Download.php 4 years ago Event.php 4 years ago Export.php 2 years ago ExternalApiModel.php 1 year ago Form.php 3 years ago Fulfillment.php 1 year ago FulfillmentItem.php 1 year ago GalleryItem.php 1 year ago GalleryItemAttachment.php 1 year ago GalleryItemMedia.php 1 year ago GalleryItemProductMedia.php 1 year ago IncomingWebhook.php 1 year ago Integration.php 2 years ago IntegrationCatalog.php 1 year ago Invoice.php 1 year ago License.php 1 year ago LineItem.php 1 year ago ManualPaymentMethod.php 1 year ago Media.php 1 year ago Model.php 1 year ago ModelInterface.php 4 years ago Order.php 1 year ago OrderProtocol.php 4 years ago PaymentFailure.php 1 year ago PaymentInstrument.php 1 year ago PaymentIntent.php 4 years ago PaymentMethod.php 1 year ago Payout.php 1 year ago PayoutGroup.php 2 years ago Period.php 1 year ago PortalSession.php 4 years ago Price.php 1 year ago Processor.php 1 year ago Product.php 1 year ago ProductCollection.php 1 year ago ProductGroup.php 1 year ago ProductMedia.php 1 year ago Promotion.php 1 year ago ProvisionalAccount.php 2 years ago Purchase.php 2 years ago Referral.php 1 year ago ReferralItem.php 2 years ago Refund.php 1 year ago RegisteredWebhook.php 2 years ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.php 1 year 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 4 years ago Subscription.php 1 year ago SubscriptionProtocol.php 4 years ago TaxOverride.php 2 years ago TaxProtocol.php 4 years ago TaxRegistration.php 1 year ago TaxZone.php 4 years ago Upload.php 4 years ago Upsell.php 1 year ago UpsellFunnel.php 1 year ago User.php 2 years ago Variant.php 1 year ago VariantOption.php 2 years ago VariantOptionValue.php 1 year ago VariantValue.php 2 years ago VerificationCode.php 3 years ago Webhook.php 1 year ago WebhookRegistration.php 2 years ago
Purchase.php
163 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\HasLicense;
8 use SureCart\Models\Traits\HasProduct;
9 use SureCart\Models\Traits\HasRefund;
10 use SureCart\Models\Traits\HasSubscription;
11
12 /**
13 * Purchase model.
14 */
15 class Purchase extends Model {
16 use HasCustomer, HasProduct, HasSubscription, HasRefund, HasLicense;
17
18 /**
19 * Rest API endpoint
20 *
21 * @var string
22 */
23 protected $endpoint = 'purchases';
24
25 /**
26 * Object name
27 *
28 * @var string
29 */
30 protected $object_name = 'purchase';
31
32 /**
33 * Set the product attribute
34 *
35 * @param string $value Product properties.
36 * @return void
37 */
38 public function setInitialOrderAttribute( $value ) {
39 $this->setRelation( 'initial_order', $value, Order::class );
40 }
41
42 /**
43 * Revoke the purchase.
44 *
45 * @param string $id Model id.
46 *
47 * @return $this|\WP_Error
48 */
49 protected function revoke( $id = 0 ) {
50 $id = $id ? $id : $this->id;
51
52 if ( $this->fireModelEvent( 'revoking' ) === false ) {
53 return false;
54 }
55
56 if ( empty( $id ) ) {
57 return new \WP_Error( 'not_saved', 'You can only revoke an existing purchase.' );
58 }
59
60 $model = $this->makeRequest(
61 [
62 'method' => 'PATCH',
63 'query' => $this->query,
64 ],
65 $this->endpoint . '/' . $id . '/revoke/',
66 );
67
68 if ( is_wp_error( $model ) ) {
69 return $model;
70 }
71
72 $this->resetAttributes();
73
74 $this->fill( $model );
75
76 $this->fireModelEvent( 'revoked' );
77
78 // purchase revoked event.
79 do_action( 'surecart/purchase_revoked', $this );
80
81 return $this;
82 }
83
84 /**
85 * Invoke the purchase.
86 *
87 * @param string $id Model id.
88 *
89 * @return $this|\WP_Error
90 */
91 protected function invoke( $id = 0 ) {
92 $id = $id ? $id : $this->id;
93
94 if ( $this->fireModelEvent( 'invoking' ) === false ) {
95 return false;
96 }
97
98 if ( empty( $id ) ) {
99 return new \WP_Error( 'not_saved', 'You can only invoke an existing purchase.' );
100 }
101
102 $model = $this->makeRequest(
103 [
104 'method' => 'PATCH',
105 'query' => $this->getQuery(),
106 ],
107 $this->endpoint . '/' . $id . '/invoke/',
108 );
109
110 if ( is_wp_error( $model ) ) {
111 return $model;
112 }
113
114 $this->resetAttributes();
115
116 $this->fill( $model );
117
118 $this->fireModelEvent( 'invoked' );
119
120 // purchase invoked event.
121 do_action( 'surecart/purchase_invoked', $this );
122
123 return $this;
124 }
125
126 /**
127 * Has the product changed?
128 */
129 protected function getHasProductChangedAttribute() {
130 return (bool) $this->getPreviousProductIdAttribute();
131 }
132
133 /**
134 * Get the previous product ID.
135 *
136 * @return string
137 */
138 protected function getPreviousProductIdAttribute() {
139 if ( empty( $this->attributes['previous_attributes']['product'] ) ) {
140 return false;
141 }
142 if ( is_string( $this->attributes['previous_attributes']['product'] ) ) {
143 return $this->attributes['previous_attributes']['product'];
144 }
145 if ( ! empty( $this->attributes['previous_attributes']['product']['id'] ) ) {
146 return $this->attributes['previous_attributes']['product']['id'];
147 }
148 return false;
149 }
150
151 /**
152 * Get the previous quantity
153 *
154 * @return integer
155 */
156 protected function getPreviousQuantityAttribute() {
157 if ( empty( $this->attributes['previous_attributes']['quantity'] ) ) {
158 return false;
159 }
160 return $this->attributes['previous_attributes']['quantity'];
161 }
162 }
163