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