PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.4.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.4.2
4.7.2 4.7.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 All 281 releases
surecart / app / src / Models / Referral.php
Referral.php
200 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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\HasDates;
8 use SureCart\Models\Traits\HasPayout;
9 use SureCart\Models\Traits\HasReferralItems;
10
11 /**
12 * Referral model
13 */
14 class Referral extends Model {
15 use HasAffiliation, HasCheckout, HasPayout, HasReferralItems, HasDates;
16
17 /**
18 * Rest API endpoint
19 *
20 * @var string
21 */
22 protected $endpoint = 'referrals';
23
24 /**
25 * Object name
26 *
27 * @var string
28 */
29 protected $object_name = 'referral';
30
31 /**
32 * Approve a referral
33 *
34 * @param string $id Referral ID.
35 *
36 * @return $this|\WP_Error
37 */
38 protected function approve( $id = null ) {
39 if ( $id ) {
40 $this->setAttribute( 'id', $id );
41 }
42
43 if ( $this->fireModelEvent( 'approving' ) === false ) {
44 return $this;
45 }
46
47 if ( empty( $this->attributes['id'] ) ) {
48 return new \WP_Error( 'not_saved', 'Please create the referral.' );
49 }
50
51 $approved = \SureCart::request(
52 $this->endpoint . '/' . $this->attributes['id'] . '/approve',
53 [
54 'method' => 'PATCH',
55 'query' => $this->query,
56 ]
57 );
58
59 if ( is_wp_error( $approved ) ) {
60 return $approved;
61 }
62
63 $this->resetAttributes();
64 $this->fill( $approved );
65 $this->fireModelEvent( 'approved' );
66
67 return $this;
68 }
69
70 /**
71 * Deny a referral
72 *
73 * @param string $id Referral ID.
74 *
75 * @return $this|\WP_Error
76 */
77 protected function deny( $id = null ) {
78 if ( $id ) {
79 $this->setAttribute( 'id', $id );
80 }
81
82 if ( $this->fireModelEvent( 'denying' ) === false ) {
83 return $this;
84 }
85
86 if ( empty( $this->attributes['id'] ) ) {
87 return new \WP_Error( 'not_saved', 'Please create the referral.' );
88 }
89
90 $denied = \SureCart::request(
91 $this->endpoint . '/' . $this->attributes['id'] . '/deny',
92 [
93 'method' => 'PATCH',
94 'query' => $this->query,
95 ]
96 );
97
98 if ( is_wp_error( $denied ) ) {
99 return $denied;
100 }
101
102 $this->resetAttributes();
103 $this->fill( $denied );
104 $this->fireModelEvent( 'denied' );
105
106 return $this;
107 }
108
109 /**
110 * Make a referral as in review
111 *
112 * @param string $id Referral ID.
113 *
114 * @return $this|\WP_Error
115 */
116 protected function make_reviewing( $id = null ) {
117 if ( $id ) {
118 $this->setAttribute( 'id', $id );
119 }
120
121 if ( $this->fireModelEvent( 'making_reviewing' ) === false ) {
122 return $this;
123 }
124
125 if ( empty( $this->attributes['id'] ) ) {
126 return new \WP_Error( 'not_saved', 'Please create the referral.' );
127 }
128
129 $reviewing = \SureCart::request(
130 $this->endpoint . '/' . $this->attributes['id'] . '/make_reviewing',
131 [
132 'method' => 'PATCH',
133 'query' => $this->query,
134 ]
135 );
136
137 if ( is_wp_error( $reviewing ) ) {
138 return $reviewing;
139 }
140
141 $this->resetAttributes();
142 $this->fill( $reviewing );
143 $this->fireModelEvent( 'made_reviewing' );
144
145 return $this;
146 }
147
148 /**
149 * Set the affiliation attribute
150 *
151 * @param object $value Array of payout objects.
152 *
153 * @return void
154 */
155 public function setAttributedClickAttribute( $value ) {
156 $this->setRelation( 'attributed_click', $value, Click::class );
157 }
158
159 /**
160 * Get the display status attribute.
161 *
162 * @return string
163 */
164 public function getStatusDisplayTextAttribute() {
165 $statuses = [
166 'reviewing' => __( 'Reviewing', 'surecart' ),
167 'paid' => __( 'In Payout', 'surecart' ),
168 'denied' => __( 'Denied', 'surecart' ),
169 'cancelled' => __( 'Cancelled', 'surecart' ),
170 'approved' => __( 'Approved', 'surecart' ),
171 ];
172 return $statuses[ $this->status ] ?? '';
173 }
174
175 /**
176 * Get the display status attribute.
177 *
178 * @return string
179 */
180 public function getStatusTypeAttribute() {
181 $types = [
182 'reviewing' => 'warning',
183 'paid' => 'success',
184 'denied' => 'danger',
185 'cancelled' => 'default',
186 'approved' => 'info',
187 ];
188 return $types[ $this->status ] ?? 'default';
189 }
190
191 /**
192 * Get the editable attribute.
193 *
194 * @return bool
195 */
196 public function getEditableAttribute() {
197 return 'paid' !== $this->status;
198 }
199 }
200