PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 / Referral.php
surecart / app / src / Models Last commit date
Blocks 1 year ago Concerns 1 year ago Traits 1 year ago AbandonedCheckout.php 2 years ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 3 years ago Activation.php 2 years ago Affiliation.php 2 years ago AffiliationProduct.php 1 year ago AffiliationProtocol.php 2 years ago AffiliationRequest.php 2 years ago ApiToken.php 3 years ago BalanceTransaction.php 3 years ago Brand.php 3 years ago BulkAction.php 2 years ago Bump.php 1 year ago BuyLink.php 2 years ago CancellationAct.php 3 years ago CancellationReason.php 3 years ago Charge.php 1 year ago Checkout.php 1 year ago Click.php 2 years ago Collection.php 2 years ago CommissionStructure.php 2 years ago Component.php 3 years ago Coupon.php 1 year ago Customer.php 2 years ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago DatabaseModel.php 1 year ago Discount.php 1 year ago Download.php 3 years ago Event.php 3 years ago Export.php 2 years ago Form.php 3 years ago Fulfillment.php 3 years 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 Invoice.php 1 year ago License.php 2 years ago LineItem.php 1 year ago ManualPaymentMethod.php 1 year ago Media.php 1 year ago Model.php 1 year ago ModelInterface.php 3 years ago Order.php 2 years ago OrderProtocol.php 3 years ago PaymentInstrument.php 1 year ago PaymentIntent.php 3 years ago PaymentMethod.php 1 year ago Payout.php 2 years ago PayoutGroup.php 2 years ago Period.php 3 years ago PortalProtocol.php 3 years ago PortalSession.php 3 years ago Price.php 1 year ago Processor.php 1 year ago Product.php 1 year ago ProductCollection.php 1 year ago ProductGroup.php 2 years ago ProductMedia.php 1 year ago Promotion.php 1 year ago ProvisionalAccount.php 2 years ago Purchase.php 2 years ago Referral.php 2 years ago ReferralItem.php 2 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 1 year ago SubscriptionProtocol.php 3 years ago TaxOverride.php 2 years ago TaxProtocol.php 3 years ago TaxRegistration.php 3 years ago TaxZone.php 3 years ago Upload.php 3 years ago Upsell.php 1 year ago UpsellFunnel.php 2 years 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
Referral.php
199 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Traits\HasAffiliation;
6 use SureCart\Models\Traits\HasCheckout;
7 use SureCart\Models\Traits\HasPayout;
8 use SureCart\Models\Traits\HasReferralItems;
9
10 /**
11 * Referral model
12 */
13 class Referral extends Model {
14 use HasAffiliation, HasCheckout, HasPayout, HasReferralItems;
15
16 /**
17 * Rest API endpoint
18 *
19 * @var string
20 */
21 protected $endpoint = 'referrals';
22
23 /**
24 * Object name
25 *
26 * @var string
27 */
28 protected $object_name = 'referral';
29
30 /**
31 * Approve a referral
32 *
33 * @param string $id Referral ID.
34 *
35 * @return $this|\WP_Error
36 */
37 protected function approve( $id = null ) {
38 if ( $id ) {
39 $this->setAttribute( 'id', $id );
40 }
41
42 if ( $this->fireModelEvent( 'approving' ) === false ) {
43 return $this;
44 }
45
46 if ( empty( $this->attributes['id'] ) ) {
47 return new \WP_Error( 'not_saved', 'Please create the referral.' );
48 }
49
50 $approved = \SureCart::request(
51 $this->endpoint . '/' . $this->attributes['id'] . '/approve',
52 [
53 'method' => 'PATCH',
54 'query' => $this->query,
55 ]
56 );
57
58 if ( is_wp_error( $approved ) ) {
59 return $approved;
60 }
61
62 $this->resetAttributes();
63 $this->fill( $approved );
64 $this->fireModelEvent( 'approved' );
65
66 return $this;
67 }
68
69 /**
70 * Deny a referral
71 *
72 * @param string $id Referral ID.
73 *
74 * @return $this|\WP_Error
75 */
76 protected function deny( $id = null ) {
77 if ( $id ) {
78 $this->setAttribute( 'id', $id );
79 }
80
81 if ( $this->fireModelEvent( 'denying' ) === false ) {
82 return $this;
83 }
84
85 if ( empty( $this->attributes['id'] ) ) {
86 return new \WP_Error( 'not_saved', 'Please create the referral.' );
87 }
88
89 $denied = \SureCart::request(
90 $this->endpoint . '/' . $this->attributes['id'] . '/deny',
91 [
92 'method' => 'PATCH',
93 'query' => $this->query,
94 ]
95 );
96
97 if ( is_wp_error( $denied ) ) {
98 return $denied;
99 }
100
101 $this->resetAttributes();
102 $this->fill( $denied );
103 $this->fireModelEvent( 'denied' );
104
105 return $this;
106 }
107
108 /**
109 * Make a referral as in review
110 *
111 * @param string $id Referral ID.
112 *
113 * @return $this|\WP_Error
114 */
115 protected function make_reviewing( $id = null ) {
116 if ( $id ) {
117 $this->setAttribute( 'id', $id );
118 }
119
120 if ( $this->fireModelEvent( 'making_reviewing' ) === false ) {
121 return $this;
122 }
123
124 if ( empty( $this->attributes['id'] ) ) {
125 return new \WP_Error( 'not_saved', 'Please create the referral.' );
126 }
127
128 $reviewing = \SureCart::request(
129 $this->endpoint . '/' . $this->attributes['id'] . '/make_reviewing',
130 [
131 'method' => 'PATCH',
132 'query' => $this->query,
133 ]
134 );
135
136 if ( is_wp_error( $reviewing ) ) {
137 return $reviewing;
138 }
139
140 $this->resetAttributes();
141 $this->fill( $reviewing );
142 $this->fireModelEvent( 'made_reviewing' );
143
144 return $this;
145 }
146
147 /**
148 * Set the affiliation attribute
149 *
150 * @param object $value Array of payout objects.
151 *
152 * @return void
153 */
154 public function setAttributedClickAttribute( $value ) {
155 $this->setRelation( 'attributed_click', $value, Click::class );
156 }
157
158 /**
159 * Get the display status attribute.
160 *
161 * @return string
162 */
163 public function getStatusDisplayTextAttribute() {
164 $statuses = [
165 'reviewing' => __( 'Reviewing', 'surecart' ),
166 'paid' => __( 'In Payout', 'surecart' ),
167 'denied' => __( 'Denied', 'surecart' ),
168 'cancelled' => __( 'Cancelled', 'surecart' ),
169 'approved' => __( 'Approved', 'surecart' ),
170 ];
171 return $statuses[ $this->status ] ?? '';
172 }
173
174 /**
175 * Get the display status attribute.
176 *
177 * @return string
178 */
179 public function getStatusTypeAttribute() {
180 $types = [
181 'reviewing' => 'warning',
182 'paid' => 'success',
183 'denied' => 'danger',
184 'cancelled' => 'default',
185 'approved' => 'info',
186 ];
187 return $types[ $this->status ] ?? 'default';
188 }
189
190 /**
191 * Get the editable attribute.
192 *
193 * @return bool
194 */
195 public function getEditableAttribute() {
196 return 'paid' !== $this->status;
197 }
198 }
199