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.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 / Upsells / UpsellsListTable.php
surecart / app / src / Controllers / Admin / Upsells Last commit date
UpsellScriptsController.php 1 year ago UpsellsController.php 1 year ago UpsellsListTable.php 1 year ago
UpsellsListTable.php
298 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Upsells;
4
5 use SureCart\Models\UpsellFunnel;
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 UpsellsListTable 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( 'upsells' ),
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-upsell-funnels' );
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 * @param string[] $status_links An associative array of fully-formed comment status links. Includes 'All', 'Mine',
80 * 'Pending', 'Approved', 'Spam', and 'Trash'.
81 */
82 return apply_filters( 'comment_status_links', $status_links );
83 }
84
85 /**
86 * Override the parent columns method. Defines the columns to use in your listing table
87 *
88 * @return array
89 */
90 public function get_columns() {
91 return [
92 'name' => __( 'Name', 'surecart' ),
93 'priority' => __( 'Priority', 'surecart' ),
94 'enabled' => __( 'Status', 'surecart' ),
95 'date' => __( 'Date', 'surecart' ),
96 ];
97 }
98
99 /**
100 * Displays the checkbox column.
101 *
102 * @param Upsell $upsell_funnel The upsell model.
103 */
104 public function column_cb( $upsell_funnel ) {
105 ?>
106 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $upsell_funnel['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
107 <input id="cb-select-<?php echo esc_attr( $upsell_funnel['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $upsell_funnel['id'] ); ?>" />
108 <?php
109 }
110
111 /**
112 * Get the priority column
113 *
114 * @return bool
115 */
116 public function column_priority( $upsell_funnel ) {
117 echo (int) $upsell_funnel->priority;
118 }
119
120 /**
121 * Define which columns are hidden
122 *
123 * @return array
124 */
125 public function get_hidden_columns() {
126 return array();
127 }
128
129 /**
130 * Define the sortable columns
131 *
132 * @return array
133 */
134 public function get_sortable_columns() {
135 return array( 'title' => array( 'title', false ) );
136 }
137
138 /**
139 * Get the table data
140 *
141 * @return array
142 */
143 private function table_data() {
144 return UpsellFunnel::where(
145 [
146 'archived' => $this->getArchiveStatus(),
147 'query' => $this->get_search_query(),
148 ]
149 )
150 ->where( [ 'sort' => 'priority:desc' ] )
151 ->paginate(
152 [
153 'per_page' => $this->get_items_per_page( 'upsells' ),
154 'page' => $this->get_pagenum(),
155 ]
156 );
157 }
158
159 /**
160 * Nothing found.
161 *
162 * @return void
163 */
164 public function no_items() {
165 if ( $this->error ) {
166 echo esc_html( $this->error );
167 return;
168 }
169 echo esc_html_e( 'No upsell funnels found.', 'surecart' );
170 }
171
172 /**
173 * Handle the type column output.
174 *
175 * @param \SureCart\Models\UpsellFunnel $upsell_funnel Upsell model.
176 *
177 * @return string
178 */
179 public function column_type( $upsell_funnel ) {
180 if ( $upsell_funnel->recurring ) {
181 return '<sc-tag type="success">
182 <div
183 style="
184 display: flex;
185 align-items: center;
186 gap: 0.5em;"
187 >
188 <sc-icon name="repeat"></sc-icon>
189 ' . esc_html__( 'Subscription', 'surecart' ) . '
190 </div>
191 </sc-tag>';
192 }
193
194 return '<sc-tag type="info">
195 <div
196 style="
197 display: flex;
198 align-items: center;
199 gap: 0.5em;"
200 >
201 <sc-icon name="bookmark"></sc-icon>
202 ' . esc_html__( 'One-Time', 'surecart' ) . '
203 </div>
204 </sc-tag>';
205 }
206
207 /**
208 * Handle the status
209 *
210 * @param \SureCart\Models\UpsellFunnel $upsell_funnel Upsell model.
211 *
212 * @return string
213 */
214 public function column_date( $upsell_funnel ) {
215 $created = sprintf(
216 '<time datetime="%1$s" title="%2$s">%3$s</time>',
217 esc_attr( $upsell_funnel->created_at ),
218 esc_html( TimeDate::formatDateAndTime( $upsell_funnel->created_at ) ),
219 esc_html( TimeDate::humanTimeDiff( $upsell_funnel->created_at ) )
220 );
221 $updated = sprintf(
222 '%1$s <time datetime="%2$s" title="%3$s">%4$s</time>',
223 __( 'Updated', 'surecart' ),
224 esc_attr( $upsell_funnel->updated_at ),
225 esc_html( TimeDate::formatDateAndTime( $upsell_funnel->updated_at ) ),
226 esc_html( TimeDate::humanTimeDiff( $upsell_funnel->updated_at ) )
227 );
228 return $created . '<br /><small style="opacity: 0.75">' . $updated . '</small>';
229 }
230
231 /**
232 * Enabled column
233 *
234 * @param \SureCart\Models\UpsellFunnel $upsell_funnel Upsell model.
235 *
236 * @return string
237 */
238 public function column_enabled( $upsell_funnel ) {
239 $toggle_url = add_query_arg(
240 [
241 'action' => 'toggle_enabled',
242 'nonce' => wp_create_nonce( 'archive_product' ), // use archive product nonce.
243 'id' => $upsell_funnel->id,
244 ]
245 );
246 ?>
247 <sc-switch checked="<?php echo esc_attr( $upsell_funnel->enabled ) ? 'true' : 'false'; ?>"
248 onClick="window.location.assign('<?php echo esc_url_raw( $toggle_url ); ?>'); document.querySelector('#loading-<?php echo esc_attr( $upsell_funnel->id ); ?>').style.display = '';"></sc-switch>
249 <sc-block-ui id="loading-<?php echo esc_attr( $upsell_funnel->id ); ?>" spinner style="display: none;"></sc-block-ui>
250 <?php
251 }
252
253 /**
254 * Name column
255 *
256 * @param \SureCart\Models\UpsellFunnel $upsell_funnel Upsell model.
257 *
258 * @return string
259 */
260 public function column_name( $upsell_funnel ) {
261 ob_start();
262 ?>
263 <div>
264 <a class="row-title" aria-label="<?php esc_attr_e( 'Edit Upsell', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'upsell', $upsell_funnel->id ) ); ?>">
265 <?php echo esc_html( $upsell_funnel->name ); ?>
266 </a>
267 <?php
268 echo $this->row_actions(
269 [
270 'edit' => ' <a href="' . esc_url( \SureCart::getUrl()->edit( 'upsell', $upsell_funnel->id ) ) . '" aria-label="' . esc_attr__( 'Edit Upsell Funnel', 'surecart' ) . '">' . esc_html__( 'Edit', 'surecart' ) . '</a>',
271 ],
272 );
273 ?>
274 </div>
275 <?php
276 return ob_get_clean();
277 }
278
279 /**
280 * Define what data to show on each column of the table
281 *
282 * @param \SureCart\Models\UpsellFunnel $upsell_funnel Upsell model.
283 * @param string $column_name - Current column name.
284 *
285 * @return mixed
286 */
287 public function column_default( $upsell_funnel, $column_name ) {
288 switch ( $column_name ) {
289 case 'name':
290 return ' < a href = "' . \SureCart::getUrl()->edit( 'upsell', $upsell_funnel->id ) . '" > ' . $upsell_funnel->name . ' < / a > ';
291
292 case 'name':
293 case 'description':
294 return $upsell_funnel->$column_name ?? '';
295 }
296 }
297 }
298