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