PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.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 / Bumps / BumpsListTable.php
surecart / app / src / Controllers / Admin / Bumps Last commit date
BumpScriptsController.php 3 years ago BumpsController.php 2 years ago BumpsListTable.php 3 years ago
BumpsListTable.php
310 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Bumps;
4
5 use SureCart\Models\Bump;
6 use SureCart\Support\Currency;
7 use SureCart\Support\TimeDate;
8 use SureCart\Controllers\Admin\Tables\ListTable;
9 use SureCart\Models\Integration;
10
11 /**
12 * Create a new table class that will extend the WP_List_Table
13 */
14 class BumpsListTable extends ListTable {
15 public $checkbox = true;
16 public $error = '';
17
18 /**
19 * Prepare the items for the table to process
20 *
21 * @return Void
22 */
23 public function prepare_items() {
24 $columns = $this->get_columns();
25 $hidden = $this->get_hidden_columns();
26 $sortable = $this->get_sortable_columns();
27
28 $this->_column_headers = array( $columns, $hidden, $sortable );
29
30 $query = $this->table_data();
31 if ( is_wp_error( $query ) ) {
32 $this->error = $query->get_error_message();
33 $this->items = [];
34 return;
35 }
36
37 $this->set_pagination_args(
38 [
39 'total_items' => $query->pagination->count,
40 'per_page' => $this->get_items_per_page( 'bumps' ),
41 ]
42 );
43
44 $this->items = $query->data;
45 }
46
47 /**
48 * @global int $post_id
49 * @global string $comment_status
50 * @global string $comment_type
51 */
52 protected function get_views() {
53 $stati = [
54 'active' => __( 'Active', 'surecart' ),
55 'archived' => __( 'Archived', 'surecart' ),
56 'all' => __( 'All', 'surecart' ),
57 ];
58
59 $link = admin_url( 'admin.php?page=sc-bumps' );
60
61 foreach ( $stati as $status => $label ) {
62 $current_link_attributes = '';
63
64 if ( ! empty( $_GET['status'] ) ) {
65 if ( $status === $_GET['status'] ) {
66 $current_link_attributes = ' class="current" aria-current="page"';
67 }
68 } elseif ( 'active' === $status ) {
69 $current_link_attributes = ' class="current" aria-current="page"';
70 }
71
72 $link = add_query_arg( 'status', $status, $link );
73
74 $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . $label . '</a>';
75 }
76
77 /**
78 * Filters the comment status links.
79 *
80 * @since 2.5.0
81 * @since 5.1.0 The 'Mine' link was added.
82 *
83 * @param string[] $status_links An associative array of fully-formed comment status links. Includes 'All', 'Mine',
84 * 'Pending', 'Approved', 'Spam', and 'Trash'.
85 */
86 return apply_filters( 'comment_status_links', $status_links );
87 }
88
89 /**
90 * Override the parent columns method. Defines the columns to use in your listing table
91 *
92 * @return Array
93 */
94 public function get_columns() {
95 return [
96 // 'cb' => '<input type="checkbox" />',
97 'name' => __( 'Name', 'surecart' ),
98 // 'description' => __( 'Description', 'surecart' ),
99 'price' => __( 'Price', 'surecart' ),
100 // 'type' => __( 'Type', 'surecart' ),
101 // 'integrations' => __( 'Integrations', 'surecart' ),
102 'date' => __( 'Date', 'surecart' ),
103 ];
104 }
105
106 /**
107 * Displays the checkbox column.
108 *
109 * @param Bump $bump The bump model.
110 */
111 public function column_cb( $bump ) {
112 ?>
113 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $bump['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
114 <input id="cb-select-<?php echo esc_attr( $bump['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $bump['id'] ); ?>" />
115 <?php
116 }
117
118 /**
119 * Show any integrations.
120 */
121 public function column_integrations( $bump ) {
122 $list = $this->bumpIntegrationsList( $bump->id );
123 return $list ? $list : '-';
124 }
125
126 /**
127 * Define which columns are hidden
128 *
129 * @return Array
130 */
131 public function get_hidden_columns() {
132 return array();
133 }
134
135 /**
136 * Define the sortable columns
137 *
138 * @return Array
139 */
140 public function get_sortable_columns() {
141 return array( 'title' => array( 'title', false ) );
142 }
143
144 /**
145 * Get the table data
146 *
147 * @return Array
148 */
149 private function table_data() {
150 return Bump::where(
151 [
152 'archived' => $this->getArchiveStatus(),
153 'query' => $this->get_search_query(),
154 ]
155 )
156 ->with( [ 'price', 'price.product' ] )
157 ->paginate(
158 [
159 'per_page' => $this->get_items_per_page( 'bumps' ),
160 'page' => $this->get_pagenum(),
161 ]
162 );
163 }
164
165 /**
166 * Nothing found.
167 *
168 * @return void
169 */
170 public function no_items() {
171 if ( $this->error ) {
172 echo esc_html( $this->error );
173 return;
174 }
175 echo esc_html_e( 'No order bumps found.', 'surecart' );
176 }
177
178 /**
179 * Handle the type column output.
180 *
181 * @param \SureCart\Models\Price $bump Bump model.
182 *
183 * @return string
184 */
185 public function column_type( $bump ) {
186 if ( $bump->recurring ) {
187 return '<sc-tag type="success">
188 <div
189 style="
190 display: flex;
191 align-items: center;
192 gap: 0.5em;"
193 >
194 <sc-icon name="repeat"></sc-icon>
195 ' . esc_html__( 'Subscription', 'surecart' ) . '
196 </div>
197 </sc-tag>';
198 }
199
200 return '<sc-tag type="info">
201 <div
202 style="
203 display: flex;
204 align-items: center;
205 gap: 0.5em;"
206 >
207 <sc-icon name="bookmark"></sc-icon>
208 ' . esc_html__( 'One-Time', 'surecart' ) . '
209 </div>
210 </sc-tag>';
211 }
212
213 /**
214 * Handle the status
215 *
216 * @param \SureCart\Models\Price $bump Bump model.
217 *
218 * @return string
219 */
220 public function column_date( $bump ) {
221 $created = sprintf(
222 '<time datetime="%1$s" title="%2$s">%3$s</time>',
223 esc_attr( $bump->created_at ),
224 esc_html( TimeDate::formatDateAndTime( $bump->created_at ) ),
225 esc_html( TimeDate::humanTimeDiff( $bump->created_at ) )
226 );
227 $updated = sprintf(
228 '%1$s <time datetime="%2$s" title="%3$s">%4$s</time>',
229 __( 'Updated', 'surecart' ),
230 esc_attr( $bump->updated_at ),
231 esc_html( TimeDate::formatDateAndTime( $bump->updated_at ) ),
232 esc_html( TimeDate::humanTimeDiff( $bump->updated_at ) )
233 );
234 return $created . '<br /><small style="opacity: 0.75">' . $updated . '</small>';
235 }
236
237 /**
238 * Price
239 *
240 * @param \SureCart\Models\Bump $bump Bump model.
241 *
242 * @return string
243 */
244 public function column_price( $bump ) {
245 if ( empty( $bump->price->id ) ) {
246 return;
247 }
248
249 $price = $bump->price ?? null;
250
251 ob_start();
252 ?>
253 <strong><?php echo esc_html( $price->product->name ); ?></strong><br/>
254 <sc-format-number type="currency" currency="<?php echo esc_attr( $price->currency ); ?>" value="<?php echo (float) $price->amount; ?>"></sc-format-number>
255 <sc-format-interval value="<?php echo (int) $price->recurring_interval_count; ?>" interval="<?php echo esc_attr( $price->recurring_interval ); ?>"></sc-format-interval>
256 <?php
257 return ob_get_clean();
258
259 return '<sc-format-number type="currency" currency="' . esc_attr( $price->currency ) . '" value="' . (float) $price->amount . '"></sc-format-number>';
260 }
261
262 /**
263 * Name column
264 *
265 * @param \SureCart\Models\Bump $bump Bump model.
266 *
267 * @return string
268 */
269 public function column_name( $bump ) {
270 ob_start();
271 ?>
272
273 <div>
274 <a class="row-title" aria-label="<?php echo esc_attr( 'Edit Bump', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'bump', $bump->id ) ); ?>">
275 <?php echo esc_html( $bump->name ? $bump->name : $bump->price->product->name ); ?>
276 </a>
277
278 <?php
279 echo $this->row_actions(
280 [
281 'edit' => ' <a href="' . esc_url( \SureCart::getUrl()->edit( 'bump', $bump->id ) ) . '" aria-label="' . esc_attr( 'Edit Bump', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
282 ],
283 );
284 ?>
285 </div>
286
287 </div>
288 <?php
289 return ob_get_clean();
290 }
291
292 /**
293 * Define what data to show on each column of the table
294 *
295 * @param \SureCart\Models\Bump $bump Bump model.
296 * @param String $column_name - Current column name.
297 *
298 * @return Mixed
299 */
300 public function column_default( $bump, $column_name ) {
301 switch ( $column_name ) {
302 case 'name':
303 return ' < a href = "' . \SureCart::getUrl()->edit( 'bump', $bump->id ) . '" > ' . $bump->name . ' < / a > ';
304 case 'name':
305 case 'description':
306 return $bump->$column_name ?? '';
307 }
308 }
309 }
310