PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.2.1
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 / Controllers / Admin / Orders / OrdersListTable.php
surecart / app / src / Controllers / Admin / Orders Last commit date
OrderScriptsController.php 3 years ago OrdersListTable.php 3 years ago OrdersViewController.php 3 years ago
OrdersListTable.php
277 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Orders;
4
5 use SureCart\Models\Order;
6 use SureCart\Controllers\Admin\Tables\ListTable;
7
8 /**
9 * Create a new table class that will extend the WP_List_Table
10 */
11 class OrdersListTable extends ListTable {
12 /**
13 * Prepare the items for the table to process
14 *
15 * @return Void
16 */
17 public function prepare_items() {
18 $columns = $this->get_columns();
19 $hidden = $this->get_hidden_columns();
20 $sortable = $this->get_sortable_columns();
21
22 $this->_column_headers = array( $columns, $hidden, $sortable );
23
24 $query = $this->table_data();
25 if ( is_wp_error( $query ) ) {
26 $this->items = [];
27 return;
28 }
29
30 $this->set_pagination_args(
31 [
32 'total_items' => $query->pagination->count,
33 'per_page' => $this->get_items_per_page( 'orders' ),
34 ]
35 );
36
37 $this->items = $query->data;
38 }
39
40 /**
41 * Show any integrations.
42 *
43 * @param \SureCart\Models\Order $order Order.
44 */
45 public function column_integrations( $order ) {
46 $output = '';
47
48 // loop through each purchase.
49 if ( ! empty( $order->checkout->purchases->data ) ) {
50 foreach ( $order->checkout->purchases->data as $purchase ) {
51 $output .= $this->productIntegrationsList( $purchase->product );
52 }
53 }
54
55 return $output ? $output : '-';
56 }
57
58 /**
59 * @global int $post_id
60 * @global string $comment_status
61 * @global string $comment_type
62 */
63 protected function get_views() {
64 $stati = [
65 'paid' => __( 'Paid', 'surecart' ),
66 'processing' => __( 'Processing', 'surecart' ),
67 'payment_failed' => __( 'Failed', 'surecart' ),
68 'all' => __( 'All', 'surecart' ),
69 ];
70
71 $link = \SureCart::getUrl()->index( 'orders' );
72
73 foreach ( $stati as $status => $label ) {
74 $current_link_attributes = '';
75
76 if ( ! empty( $_GET['status'] ) ) {
77 if ( $status === $_GET['status'] ) {
78 $current_link_attributes = ' class="current" aria-current="page"';
79 }
80 } elseif ( 'paid' === $status ) {
81 $current_link_attributes = ' class="current" aria-current="page"';
82 }
83
84 $link = add_query_arg( 'status', $status, $link );
85
86 $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . $label . '</a>';
87 }
88
89 // filter links
90 return apply_filters( 'sc_order_status_links', $status_links );
91 }
92
93 /**
94 * Override the parent columns method. Defines the columns to use in your listing table
95 *
96 * @return Array
97 */
98 public function get_columns() {
99 return [
100 // 'cb' => '<input type="checkbox" />',
101 'order' => __( 'Order', 'surecart' ),
102 'status' => __( 'Status', 'surecart' ),
103 'method' => __( 'Method', 'surecart' ),
104 'integrations' => __( 'Integrations', 'surecart' ),
105 'total' => __( 'Total', 'surecart' ),
106 'type' => __( 'Type', 'surecart' ),
107 'created' => __( 'Date', 'surecart' ),
108 'mode' => '',
109 ];
110 }
111
112 /**
113 * Displays the checkbox column.
114 *
115 * @param Product $product The product model.
116 */
117 public function column_cb( $product ) {
118 ?>
119 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $product['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
120 <input id="cb-select-<?php echo esc_attr( $product['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $product['id'] ); ?>" />
121 <?php
122 }
123
124 /**
125 * Define which columns are hidden
126 *
127 * @return Array
128 */
129 public function get_hidden_columns() {
130 return array();
131 }
132
133 /**
134 * Define the sortable columns
135 *
136 * @return Array
137 */
138 public function get_sortable_columns() {
139 return array( 'title' => array( 'title', false ) );
140 }
141
142 /**
143 * Get the table data
144 *
145 * @return Array
146 */
147 protected function table_data() {
148 return Order::where(
149 [
150 'status' => $this->getStatus(),
151 'query' => $this->get_search_query(),
152 ]
153 )->with( [ 'checkout', 'checkout.charge', 'checkout.customer', 'checkout.payment_method', 'checkout.manual_payment_method', 'checkout.purchases', 'payment_method.card', 'payment_method.payment_instrument', 'payment_method.paypal_account', 'payment_method.bank_account' ] )
154 ->paginate(
155 [
156 'per_page' => $this->get_items_per_page( 'orders' ),
157 'page' => $this->get_pagenum(),
158 ]
159 );
160 }
161
162 /**
163 * Get the archive query status.
164 *
165 * @return boolean|null
166 */
167 public function getStatus() {
168 $status = sanitize_text_field( wp_unslash( $_GET['status'] ?? 'paid' ) );
169 if ( 'paid' === $status ) {
170 return [ 'paid' ];
171 }
172 if ( 'payment_failed' === $status ) {
173 return [ 'payment_failed' ];
174 }
175 if ( 'processing' === $status ) {
176 return [ 'processing' ];
177 }
178 if ( 'all' === $status ) {
179 return [];
180 }
181 return $status ? [ esc_html( $status ) ] : [];
182 }
183
184 /**
185 * Handle the total column
186 *
187 * @param \SureCart\Models\Order $order The order model.
188 *
189 * @return string
190 */
191 public function column_total( $order ) {
192 return '<sc-format-number type="currency" currency="' . strtoupper( esc_html( $order->checkout->currency ) ) . '" value="' . (float) $order->checkout->amount_due . '"></sc-format-number>';
193 }
194
195 /**
196 * Show the payment method for the order.
197 *
198 * @param \SureCart\Models\Order $order The order model.
199 *
200 * @return string
201 */
202 public function column_method( $order ) {
203 if ( isset( $order->checkout->manual_payment_method->name ) ) {
204 return '<sc-tag>' . $order->checkout->manual_payment_method->name . '</sc-tag>';
205 }
206 ob_start();
207 ?>
208 <sc-payment-method id="sc-method-<?php echo esc_attr( $order->id ); ?>"></sc-payment-method>
209 <script>
210 document.getElementById('sc-method-<?php echo esc_attr( $order->id ); ?>').paymentMethod = <?php echo wp_json_encode( $order->checkout->payment_method ); ?>;
211 </script>
212 <?php
213 return ob_get_clean();
214 }
215
216 /**
217 * The type of order.
218 *
219 * @param \SureCart\Models\Order $order The order model.
220 *
221 * @return string
222 */
223 public function column_type( $order ) {
224 if ( ! empty( $order->order_type ) && 'subscription' === $order->order_type ) {
225 return '<sc-tag type="success">' . esc_html__( 'Subscription Renewal', 'surecart' ) . '</sc-tag>';
226 }
227
228 return '<sc-tag type="info">' . esc_html__( 'Checkout', 'surecart' ) . '</sc-tag>';
229 }
230
231 /**
232 * Handle the status
233 *
234 * @param \SureCart\Models\Order $order Order Model.
235 *
236 * @return string
237 */
238 public function column_status( $order ) {
239 if ( ! empty( $order->checkout->charge->fully_refunded ) ) {
240 return '<sc-tag type="danger">' . __( 'Refunded', 'surecart' ) . '</sc-tag>';
241 }
242
243 if ( ! empty( $order->checkout->payment_intent->processor_type ) && 'paypal' === $order->checkout->payment_intent->processor_type ) {
244 if ( 'requires_approval' === $order->status ) {
245 return '<sc-tooltip text="' . __( 'Paypal is taking a closer look at this payment. It’s required for some payments and normally takes up to 3 business days.', 'surecart' ) . '" type="warning"><sc-order-status-badge status="' . esc_attr( $order->status ) . '"></sc-order-status-badge></sc-tooltip>';
246 }
247 }
248
249 return '<sc-order-status-badge status="' . esc_attr( $order->status ) . '"></sc-order-status-badge>';
250 }
251
252 /**
253 * Name of the coupon
254 *
255 * @param \SureCart\Models\Promotion $promotion Promotion model.
256 *
257 * @return string
258 */
259 public function column_order( $order ) {
260 ob_start();
261 ?>
262 <a class="row-title" aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'order', $order->id ) ); ?>">
263 #<?php echo sanitize_text_field( $order->number ?? $order->id ); ?>
264 </a>
265 <br />
266 <a aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'order', $order->id ) ); ?>">
267 <?php
268 // translators: Customer name.
269 echo sprintf( esc_html__( 'By %s', 'surecart' ), esc_html( $order->checkout->customer->name ?? $order->checkout->customer->email ) );
270 ?>
271 </a>
272 <?php
273
274 return ob_get_clean();
275 }
276 }
277