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.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 / Tables / ListTable.php
surecart / app / src / Controllers / Admin / Tables Last commit date
HasModeFilter.php 1 year ago ListTable.php 1 year ago
ListTable.php
203 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Tables;
4
5 use SureCart\Models\Integration;
6 use SureCart\Support\TimeDate;
7
8 // WP_List_Table is not loaded automatically so we need to load it in our application.
9 if ( ! class_exists( 'WP_List_Table' ) ) {
10 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
11 }
12
13 /**
14 * Base list table class.
15 */
16 abstract class ListTable extends \WP_List_Table {
17 public $checkbox = true;
18
19 /**
20 * Show filters in extra tablenav top
21 *
22 * @param [type] $which
23 * @return void
24 */
25 protected function extra_tablenav( $which ) {
26 if ( 'top' === $which ) {
27 return $this->views();
28 }
29 }
30
31 /**
32 * Define which columns are hidden
33 *
34 * @return Array
35 */
36 public function get_hidden_columns() {
37 return array();
38 }
39
40 /**
41 * Get the archive query status.
42 *
43 * @return boolean|null
44 */
45 public function getArchiveStatus( $default = 'active' ) {
46 $status = sanitize_text_field( wp_unslash( $_GET['status'] ?? $default ) );
47 $archived = false;
48 if ( 'archived' === $status ) {
49 $archived = true;
50 }
51 if ( 'all' === $status ) {
52 $archived = null;
53 }
54
55 return $archived;
56 }
57
58 /**
59 * Handle the date
60 *
61 * @param \SureCart\Models\Model $model Model.
62 *
63 * @return string
64 */
65 public function column_date( $model ) {
66 $created = sprintf(
67 '<time datetime="%1$s" title="%2$s">%3$s</time>',
68 esc_attr( $model->created_at ),
69 esc_html( TimeDate::formatDateAndTime( $model->created_at ) ),
70 esc_html( TimeDate::humanTimeDiff( $model->created_at ) )
71 );
72 $updated = sprintf(
73 '%1$s <time datetime="%2$s" title="%3$s">%4$s</time>',
74 __( 'Updated', 'surecart' ),
75 esc_attr( $model->updated_at ),
76 esc_html( TimeDate::formatDateAndTime( $model->updated_at ) ),
77 esc_html( TimeDate::humanTimeDiff( $model->updated_at ) )
78 );
79 return $created . '<br /><small style="opacity: 0.75">' . $updated . '</small>';
80 }
81
82 /**
83 * Handle the created column
84 *
85 * @param \SureCart\Models\Model $model Model.
86 *
87 * @return string
88 */
89 public function column_created( $model ) {
90 return sprintf(
91 '<sc-format-date
92 date="%1$s"
93 month="long"
94 day="numeric"
95 year="numeric"
96 hour="numeric"
97 minute="numeric"
98 type="timestamp"></sc-format-date>',
99 esc_attr( $model->created_at )
100 );
101 }
102 /**
103 * The mode for the model.
104 *
105 * @param SureCart\Model $model Model.
106 *
107 * @return string
108 */
109 public function column_mode( $model ) {
110 return empty( $model->live_mode ) ? '<sc-tag type="warning">' . __( 'Test', 'surecart' ) . '</sc-tag>' : '';
111 }
112
113 /**
114 * Show an integrations list based on a product id.
115 *
116 * @param string $args The args.
117 *
118 * @return string
119 */
120 public function productIntegrationsList( $args ) {
121 // parse the args.
122 $args = wp_parse_args(
123 $args,
124 [
125 'product_id' => '',
126 'price_id' => '',
127 'variant_id' => '',
128 ]
129 );
130
131 // get the integration first by product id.
132 $integrations = Integration::where( 'model_id', $args['product_id'] );
133
134 $output = '';
135 $integrations = $integrations->group_by( 'integration_id' )->get();
136 if ( empty( $integrations ) || is_wp_error( $integrations ) ) {
137 return $output;
138 }
139
140 foreach ( $integrations as $integration ) {
141 $provider = (object) apply_filters( "surecart/integrations/providers/find/{$integration->provider}", [] );
142 $item = (object) apply_filters( "surecart/integrations/providers/{$integration->provider}/item", $integration->integration_id );
143 if ( $integration->price_id && $args['price_id'] && $integration->price_id !== $args['price_id'] ) {
144 continue;
145 }
146 if ( $integration->variant_id && $args['variant_id'] && $integration->variant_id !== $args['variant_id'] ) {
147 continue;
148 }
149 if ( ! empty( $item->label ) ) {
150 ob_start();
151 ?>
152 <sc-tooltip text="<?php echo esc_attr( $provider->label ?? '' ); ?>" type="text" style="display:inline-block; cursor: help">
153 <sc-flex justify-content="flex-start">
154 <?php if ( $provider->logo ) : ?>
155 <img src="<?php echo esc_url( $provider->logo ); ?>" style="width: 18px; height: 18px"/>
156 <?php endif; ?>
157 <?php echo wp_kses_post( $item->label ); ?>
158 </sc-flex>
159 </sc-tooltip>
160 <br />
161 <?php
162 $output .= ob_get_clean();
163 }
164 }
165 return $output;
166 }
167
168 /**
169 * Get the search query from the url args.
170 *
171 * @return string
172 */
173 public function get_search_query() {
174 $search = urldecode( $_GET['s'] ?? '' );
175 return str_replace( [ "\r", "\n" ], '', $search );
176 }
177
178 /**
179 * Display a search form
180 *
181 * @param string $text The 'submit' button label.
182 * @param string $input_id ID attribute value for the search input field.
183 *
184 * @return void
185 */
186 public function search_form( $text, $input_id ) {
187 ?>
188 <form id="posts-filter" method="get">
189 <?php if ( isset( $_GET['page'] ) ) : ?>
190 <input type="hidden" name="page" value="<?php echo esc_attr( $_GET['page'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>">
191 <?php endif; ?>
192 <?php if ( isset( $_GET['status'] ) ) : ?>
193 <input type="hidden" name="status" value="<?php echo esc_attr( $_GET['status'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>">
194 <?php endif; ?>
195 <?php if ( isset( $_GET['live_mode'] ) ) : ?>
196 <input type="hidden" name="live_mode" value="<?php echo esc_attr( $_GET['live_mode'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>">
197 <?php endif; ?>
198 <?php $this->search_box( $text, $input_id ); ?>
199 </form>
200 <?php
201 }
202 }
203