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