PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.0.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.0.0
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 / Controllers / Admin / Orders / OrdersListTable.php
surecart / app / src / Controllers / Admin / Orders Last commit date
OrderScriptsController.php 4 years ago OrdersListTable.php 3 years ago OrdersViewController.php 4 years ago
OrdersListTable.php
281 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 'all' => __( 'All', 'surecart' ),
66 'paid' => __( 'Paid', 'surecart' ),
67 'processing' => __( 'Processing', 'surecart' ),
68 'payment_failed' => __( 'Failed', 'surecart' ),
69 'canceled' => __( 'Canceled', 'surecart' ),
70 ];
71
72 $link = \SureCart::getUrl()->index( 'orders' );
73
74 foreach ( $stati as $status => $label ) {
75 $current_link_attributes = '';
76
77 if ( ! empty( $_GET['status'] ) ) {
78 if ( $status === $_GET['status'] ) {
79 $current_link_attributes = ' class="current" aria-current="page"';
80 }
81 } elseif ( 'all' === $status ) {
82 $current_link_attributes = ' class="current" aria-current="page"';
83 }
84
85 $link = add_query_arg( 'status', $status, $link );
86
87 $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . $label . '</a>';
88 }
89
90 // filter links
91 return apply_filters( 'sc_order_status_links', $status_links );
92 }
93
94 /**
95 * Override the parent columns method. Defines the columns to use in your listing table
96 *
97 * @return Array
98 */
99 public function get_columns() {
100 return [
101 // 'cb' => '<input type="checkbox" />',
102 'order' => __( 'Order', 'surecart' ),
103 'status' => __( 'Status', 'surecart' ),
104 'method' => __( 'Method', 'surecart' ),
105 'integrations' => __( 'Integrations', 'surecart' ),
106 'total' => __( 'Total', 'surecart' ),
107 'type' => __( 'Type', 'surecart' ),
108 'created' => __( 'Date', 'surecart' ),
109 'mode' => '',
110 ];
111 }
112
113 /**
114 * Displays the checkbox column.
115 *
116 * @param Product $product The product model.
117 */
118 public function column_cb( $product ) {
119 ?>
120 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $product['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
121 <input id="cb-select-<?php echo esc_attr( $product['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $product['id'] ); ?>" />
122 <?php
123 }
124
125 /**
126 * Define which columns are hidden
127 *
128 * @return Array
129 */
130 public function get_hidden_columns() {
131 return array();
132 }
133
134 /**
135 * Define the sortable columns
136 *
137 * @return Array
138 */
139 public function get_sortable_columns() {
140 return array( 'title' => array( 'title', false ) );
141 }
142
143 /**
144 * Get the table data
145 *
146 * @return Array
147 */
148 protected function table_data() {
149 return Order::where(
150 [
151 'status' => $this->getStatus(),
152 'query' => $this->get_search_query(),
153 ]
154 )->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' ] )
155 ->paginate(
156 [
157 'per_page' => $this->get_items_per_page( 'orders' ),
158 'page' => $this->get_pagenum(),
159 ]
160 );
161 }
162
163 /**
164 * Get the archive query status.
165 *
166 * @return boolean|null
167 */
168 public function getStatus() {
169 $status = sanitize_text_field( wp_unslash( $_GET['status'] ?? 'all' ) );
170 if ( 'paid' === $status ) {
171 return [ 'paid' ];
172 }
173 if ( 'payment_failed' === $status ) {
174 return [ 'payment_failed' ];
175 }
176 if ( 'processing' === $status ) {
177 return [ 'processing' ];
178 }
179 if ( 'canceled' === $status ) {
180 return [ 'canceled' ];
181 }
182 if ( 'all' === $status ) {
183 return [];
184 }
185 return $status ? [ esc_html( $status ) ] : [];
186 }
187
188 /**
189 * Handle the total column
190 *
191 * @param \SureCart\Models\Order $order The order model.
192 *
193 * @return string
194 */
195 public function column_total( $order ) {
196 return '<sc-format-number type="currency" currency="' . strtoupper( esc_html( $order->checkout->currency ) ) . '" value="' . (float) $order->checkout->amount_due . '"></sc-format-number>';
197 }
198
199 /**
200 * Show the payment method for the order.
201 *
202 * @param \SureCart\Models\Order $order The order model.
203 *
204 * @return string
205 */
206 public function column_method( $order ) {
207 if ( isset( $order->checkout->manual_payment_method->name ) ) {
208 return '<sc-tag>' . $order->checkout->manual_payment_method->name . '</sc-tag>';
209 }
210 ob_start();
211 ?>
212 <sc-payment-method id="sc-method-<?php echo esc_attr( $order->id ); ?>"></sc-payment-method>
213 <script>
214 document.getElementById('sc-method-<?php echo esc_attr( $order->id ); ?>').paymentMethod = <?php echo wp_json_encode( $order->checkout->payment_method ); ?>;
215 </script>
216 <?php
217 return ob_get_clean();
218 }
219
220 /**
221 * The type of order.
222 *
223 * @param \SureCart\Models\Order $order The order model.
224 *
225 * @return string
226 */
227 public function column_type( $order ) {
228 if ( ! empty( $order->order_type ) && 'subscription' === $order->order_type ) {
229 return '<sc-tag type="success">' . esc_html__( 'Subscription Renewal', 'surecart' ) . '</sc-tag>';
230 }
231
232 return '<sc-tag type="info">' . esc_html__( 'Checkout', 'surecart' ) . '</sc-tag>';
233 }
234
235 /**
236 * Handle the status
237 *
238 * @param \SureCart\Models\Order $order Order Model.
239 *
240 * @return string
241 */
242 public function column_status( $order ) {
243 if ( ! empty( $order->checkout->charge->fully_refunded ) ) {
244 return '<sc-tag type="danger">' . __( 'Refunded', 'surecart' ) . '</sc-tag>';
245 }
246
247 if ( ! empty( $order->checkout->payment_method->processor_type ) && 'paypal' === $order->checkout->payment_method->processor_type ) {
248 if ( 'requires_approval' === $order->status ) {
249 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>';
250 }
251 }
252
253 return '<sc-order-status-badge status="' . esc_attr( $order->status ) . '"></sc-order-status-badge>';
254 }
255
256 /**
257 * Name of the coupon
258 *
259 * @param \SureCart\Models\Promotion $promotion Promotion model.
260 *
261 * @return string
262 */
263 public function column_order( $order ) {
264 ob_start();
265 ?>
266 <a class="row-title" aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'order', $order->id ) ); ?>">
267 #<?php echo sanitize_text_field( $order->number ?? $order->id ); ?>
268 </a>
269 <br />
270 <a aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'order', $order->id ) ); ?>">
271 <?php
272 // translators: Customer name.
273 echo sprintf( esc_html__( 'By %s', 'surecart' ), esc_html( $order->checkout->customer->name ?? $order->checkout->customer->email ) );
274 ?>
275 </a>
276 <?php
277
278 return ob_get_clean();
279 }
280 }
281