PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.0-beta2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.0-beta2
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 / CancellationInsights / CancellationInsightsListTable.php
surecart / app / src / Controllers / Admin / CancellationInsights Last commit date
CancellationInsightsController.php 2 years ago CancellationInsightsListTable.php 2 years ago CancellationInsightsScriptsController.php 3 years ago
CancellationInsightsListTable.php
209 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\CancellationInsights;
4
5 use SureCart\Controllers\Admin\Tables\ListTable;
6 use SureCart\Models\CancellationAct;
7
8 /**
9 * Create a new table class that will extend the WP_List_Table
10 */
11 class CancellationInsightsListTable 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 /**
42 * Override the parent columns method. Defines the columns to use in your listing table
43 *
44 * @return Array
45 */
46 public function get_columns() {
47 return [
48 'customer' => __( 'Customer', 'surecart' ),
49 'plan' => __( 'Plan', 'surecart' ),
50 'cancellation_reason' => __( 'Cancellation Reason', 'surecart' ),
51 'comment' => __( 'Comment', 'surecart' ),
52 'status' => __( 'Plan Status', 'surecart' ),
53 'date' => __( 'Date', 'surecart' ),
54 ];
55 }
56
57 /**
58 * The subscription product.
59 *
60 * @param \SureCart\Models\CancellationAct $act Cancellation reason model.
61 *
62 * @return string
63 */
64 public function column_plan( $act ) {
65 if ( empty( $act->subscription->price->product ) ) {
66 return __( 'No product', 'surecart' );
67 }
68 return '<a href="' . esc_url( \SureCart::getUrl()->show( 'subscription', $act->subscription->id ) ) . '">' . $act->subscription->price->product->name . '</a>';
69 }
70
71 /**
72 * The subscription product.
73 *
74 * @param \SureCart\Models\CancellationAct $act Cancellation reason model.
75 *
76 * @return string
77 */
78 public function column_date( $act ) {
79 return '<sc-format-date date="' . (int) $act->performed_at . '" type="timestamp" month="short" day="numeric" year="numeric" hour="numeric" minute="numeric"></sc-format-date>';
80 }
81
82 /**
83 * We only have one default view.
84 */
85 protected function get_views() {
86 return [ 'all' => __( 'All Cancellation Attempts', 'surecart' ) ];
87 }
88
89 /**
90 * Get the table data
91 *
92 * @return Object
93 */
94 protected function table_data() {
95 return CancellationAct::where(
96 [
97 'live_mode' => 'false' !== sanitize_text_field( wp_unslash( $_GET['live_mode'] ?? '' ) ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
98 ]
99 )
100 ->with(
101 [
102 'subscription',
103 'subscription.customer',
104 'cancellation_reason',
105 'subscription.price',
106 'price.product',
107 ]
108 )
109 ->paginate(
110 [
111 'per_page' => $this->get_items_per_page( 'cancellation_acts' ),
112 'page' => $this->get_pagenum(),
113 ]
114 );
115 }
116
117 /**
118 * Nothing found.
119 *
120 * @return void
121 */
122 public function no_items() {
123 echo esc_html_e( 'No cancellation acts.', 'surecart' );
124 }
125
126 /**
127 * The cancellation reason.
128 *
129 * @param \SureCart\Models\CancellationAct $act Cancellation act.
130 *
131 * @return string
132 */
133 public function column_cancellation_reason( $act ) {
134 return $act->cancellation_reason->label ?? '-';
135 }
136
137 /**
138 * The customer.
139 *
140 * @param \SureCart\Models\CancellationAct $act Cancellation act model.
141 *
142 * @return string
143 */
144 public function column_customer( $act ) {
145 ob_start();
146 ?>
147 <a class="row-title" aria-label="<?php esc_attr_e( 'Edit Customer', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'customers', $act->subscription->customer->id ) ); ?>">
148 <?php echo wp_kses_post( $act->subscription->customer->name ?? $act->subscription->customer->email ?? esc_html__( 'No name provided', 'surecart' ) ); ?>
149 </a>
150
151 <?php
152 echo $this->row_actions(
153 [
154 'edit' => '<a href="' . esc_url( \SureCart::getUrl()->edit( 'customers', $act->subscription->customer->id ) ) . '" aria-label="' . esc_attr( 'View Customer', 'surecart' ) . '">' . esc_html__( 'View Customer', 'surecart' ) . '</a>',
155 ],
156 );
157 ?>
158
159 <?php
160 return ob_get_clean();
161 }
162
163 /**
164 * Cancellation comment.
165 *
166 * @param \SureCart\Models\CancellationAct $act Cancellation act model.
167 *
168 * @return string
169 */
170 public function column_comment( $act ) {
171 return $act->comment ?? '-';
172 }
173
174 /**
175 * The status
176 *
177 * @param \SureCart\Models\CancellationAct $act Cancellation act model.
178 *
179 * @return string
180 */
181 public function column_status( $act ) {
182
183 if ( $act->preserved ) {
184 ob_start();
185 ?>
186 <sc-tag type="success"><?php
187 // translators: Subscription saver feature. This is displayed if the subscription has been "Saved" from cancellation.
188 echo esc_html__( 'Saved', 'surecart' ); ?> </sc-tag>
189 <?php if ( $act->coupon_applied ) { ?>
190 <sc-tag type="info"><?php echo esc_html__( 'Coupon Applied', 'surecart' ); ?></sc-tag>
191 <?php } ?>
192 <?php
193 return ob_get_clean();
194 }
195
196 $badge = '<sc-subscription-status-badge id="act-' . esc_attr( $act->id ) . '"></sc-subscription-status-badge>';
197
198 \SureCart::assets()->addComponentData(
199 'sc-subscription-status-badge',
200 '#act-' . esc_attr( $act->id ),
201 [
202 'subscription' => $act->subscription,
203 ]
204 );
205
206 return $badge;
207 }
208 }
209