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