PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
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 1 year ago BumpsListTable.php 2 months ago
BumpsListTable.php
286 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Bumps;
4
5 use SureCart\Models\Bump;
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 BumpsListTable extends ListTable {
12 public $checkbox = true;
13 public $error = '';
14
15 /**
16 * Prepare the items for the table to process
17 *
18 * @return Void
19 */
20 public function prepare_items() {
21 $columns = $this->get_columns();
22 $hidden = $this->get_hidden_columns();
23 $sortable = $this->get_sortable_columns();
24
25 $this->_column_headers = array( $columns, $hidden, $sortable );
26
27 $query = $this->table_data();
28 if ( is_wp_error( $query ) ) {
29 $this->error = $query->get_error_message();
30 $this->items = [];
31 return;
32 }
33
34 $this->set_pagination_args(
35 [
36 'total_items' => $query->pagination->count,
37 'per_page' => $this->get_items_per_page( 'bumps' ),
38 ]
39 );
40
41 $this->items = $query->data;
42 }
43
44 /**
45 * @global int $post_id
46 * @global string $comment_status
47 * @global string $comment_type
48 */
49 protected function get_views() {
50 $stati = [
51 'active' => __( 'Active', 'surecart' ),
52 'archived' => __( 'Archived', 'surecart' ),
53 'all' => __( 'All', 'surecart' ),
54 ];
55
56 foreach ( $stati as $status => $label ) {
57 $link = admin_url( 'admin.php?page=sc-bumps' );
58 $current_link_attributes = '';
59
60 if ( ! empty( $_GET['status'] ) ) {
61 if ( $status === $_GET['status'] ) {
62 $current_link_attributes = ' class="current" aria-current="page"';
63 }
64 } elseif ( 'active' === $status ) {
65 $current_link_attributes = ' class="current" aria-current="page"';
66 }
67
68 $link = add_query_arg( 'status', $status, $link );
69
70 $link = esc_url( $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 array_merge(
94 [
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 parent::get_columns()
104 );
105 }
106
107 /**
108 * Displays the checkbox column.
109 *
110 * @param Bump $bump The bump model.
111 */
112 public function column_cb( $bump ) {
113 ?>
114 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $bump['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
115 <input id="cb-select-<?php echo esc_attr( $bump['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $bump['id'] ); ?>" />
116 <?php
117 }
118
119 /**
120 * Show any integrations.
121 */
122 public function column_integrations( $bump ) {
123 $list = $this->bumpIntegrationsList( $bump->id );
124 return $list ? $list : '-';
125 }
126
127 /**
128 * Define which columns are hidden
129 *
130 * @return Array
131 */
132 public function get_hidden_columns() {
133 return array();
134 }
135
136 /**
137 * Define the sortable columns
138 *
139 * @return Array
140 */
141 public function get_sortable_columns() {
142 return array( 'title' => array( 'title', false ) );
143 }
144
145 /**
146 * Get the table data
147 *
148 * @return Array
149 */
150 private function table_data() {
151 return Bump::where(
152 [
153 'archived' => $this->getArchiveStatus(),
154 'query' => $this->get_search_query(),
155 ]
156 )
157 ->with( [ 'price', 'price.product' ] )
158 ->paginate(
159 [
160 'per_page' => $this->get_items_per_page( 'bumps' ),
161 'page' => $this->get_pagenum(),
162 ]
163 );
164 }
165
166 /**
167 * Nothing found.
168 *
169 * @return void
170 */
171 public function no_items() {
172 if ( $this->error ) {
173 echo esc_html( $this->error );
174 return;
175 }
176 echo esc_html_e( 'No order bumps found.', 'surecart' );
177 }
178
179 /**
180 * Handle the type column output.
181 *
182 * @param \SureCart\Models\Price $bump Bump model.
183 *
184 * @return string
185 */
186 public function column_type( $bump ) {
187 if ( $bump->recurring ) {
188 return '<sc-tag type="success">
189 <div
190 style="
191 display: flex;
192 align-items: center;
193 gap: 0.5em;"
194 >
195 <sc-icon name="repeat"></sc-icon>
196 ' . esc_html__( 'Subscription', 'surecart' ) . '
197 </div>
198 </sc-tag>';
199 }
200
201 return '<sc-tag type="info">
202 <div
203 style="
204 display: flex;
205 align-items: center;
206 gap: 0.5em;"
207 >
208 <sc-icon name="bookmark"></sc-icon>
209 ' . esc_html__( 'One-Time', 'surecart' ) . '
210 </div>
211 </sc-tag>';
212 }
213
214 /**
215 * Price
216 *
217 * @param \SureCart\Models\Bump $bump Bump model.
218 *
219 * @return string
220 */
221 public function column_price( $bump ) {
222 if ( empty( $bump->price->id ) ) {
223 return;
224 }
225
226 $price = $bump->price ?? null;
227
228 ob_start();
229 ?>
230 <strong><?php echo esc_html( $price->product->name ); ?></strong><br/>
231 <?php echo esc_html( $price->display_amount ); ?>
232 <?php echo esc_html( $price->short_interval_text ); ?>
233 <?php echo esc_html( $price->short_interval_count_text ); ?>
234 <?php
235 return ob_get_clean();
236 }
237
238 /**
239 * Name column
240 *
241 * @param \SureCart\Models\Bump $bump Bump model.
242 *
243 * @return string
244 */
245 public function column_name( $bump ) {
246 ob_start();
247 ?>
248
249 <div>
250 <a class="row-title" aria-label="<?php esc_attr_e( 'Edit Bump', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'bump', $bump->id ) ); ?>">
251 <?php echo esc_html( $bump->name ? $bump->name : $bump->price->product->name ); ?>
252 </a>
253
254 <?php
255 echo $this->row_actions(
256 [
257 'edit' => ' <a href="' . esc_url( \SureCart::getUrl()->edit( 'bump', $bump->id ) ) . '" aria-label="' . esc_attr__( 'Edit Bump', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
258 ],
259 );
260 ?>
261 </div>
262
263 </div>
264 <?php
265 return ob_get_clean();
266 }
267
268 /**
269 * Define what data to show on each column of the table
270 *
271 * @param \SureCart\Models\Bump $bump Bump model.
272 * @param String $column_name - Current column name.
273 *
274 * @return Mixed
275 */
276 public function column_default( $bump, $column_name ) {
277 // Call the parent method to handle custom columns.
278 parent::column_default( $bump, $column_name );
279
280 switch ( $column_name ) {
281 case 'description':
282 return esc_html( $bump->$column_name ?? '' );
283 }
284 }
285 }
286