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 / Customers / CustomersListTable.php
surecart / app / src / Controllers / Admin / Customers Last commit date
CustomersController.php 2 years ago CustomersListTable.php 1 year ago CustomersScriptsController.php 3 years ago
CustomersListTable.php
229 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Customers;
4
5 use SureCart\Models\Product;
6 use SureCart\Models\Customer;
7 use SureCart\Controllers\Admin\Tables\ListTable;
8 use SureCart\Controllers\Admin\Tables\HasModeFilter;
9
10 /**
11 * Create a new table class that will extend the WP_List_Table
12 */
13 class CustomersListTable extends ListTable {
14 use HasModeFilter;
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->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( 'customerss' ),
38 ]
39 );
40
41 $this->items = $query->data;
42 }
43
44 /**
45 * Override the parent columns method. Defines the columns to use in your listing table
46 *
47 * @return Array
48 */
49 public function get_columns() {
50 return [
51 'name' => __( 'Name', 'surecart' ),
52 'email' => __( 'Email', 'surecart' ),
53 'created' => __( 'Created', 'surecart' ),
54 'mode' => '',
55 ];
56 }
57
58 /**
59 * Displays the checkbox column.
60 *
61 * @param Product $product The product model.
62 */
63 public function column_cb( $product ) {
64 ?>
65 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $product['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
66 <input id="cb-select-<?php echo esc_attr( $product['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $product['id'] ); ?>" />
67 <?php
68 }
69
70 /**
71 * Define which columns are hidden
72 *
73 * @return Array
74 */
75 public function get_hidden_columns() {
76 return array();
77 }
78
79 /**
80 * Define the sortable columns
81 *
82 * @return Array
83 */
84 public function get_sortable_columns() {
85 return array( 'title' => array( 'title', false ) );
86 }
87
88 /**
89 * Get the table data
90 *
91 * @return object|\WP_Error
92 */
93 private function table_data() {
94 $mode = sanitize_text_field( wp_unslash( $_GET['mode'] ?? '' ) );
95 $conditions = array(
96 'query' => $this->get_search_query(),
97 );
98
99 if ( ! empty( $mode ) ) {
100 $conditions['live_mode'] = 'live' === $mode;
101 }
102
103 return Customer::where( $conditions )
104 ->paginate(
105 [
106 'per_page' => $this->get_items_per_page( 'customers' ),
107 'page' => $this->get_pagenum(),
108 ]
109 );
110 }
111
112 /**
113 * Nothing found.
114 *
115 * @return void
116 */
117 public function no_items() {
118 echo esc_html_e( 'No customers found.', 'surecart' );
119 }
120
121 /**
122 * The customer email.
123 *
124 * @param \SureCart\Models\Customer $customer The customer model.
125 *
126 * @return string
127 */
128 public function column_email( $customer ) {
129 return sanitize_email( $customer->email );
130 }
131
132 /**
133 * Name column
134 *
135 * @param \SureCart\Models\Customer $customer Customer model.
136 *
137 * @return string
138 */
139 public function column_name( $customer ) {
140 ob_start();
141 ?>
142 <a class="row-title" aria-label="<?php esc_attr_e( 'Edit Customer', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'customers', $customer->id ) ); ?>">
143 <?php echo wp_kses_post( $customer->name ?? $customer->email ); ?>
144 </a>
145
146 <?php
147 echo $this->row_actions(
148 [
149 'edit' => '<a href="' . esc_url( \SureCart::getUrl()->edit( 'customers', $customer->id ) ) . '" aria-label="' . esc_attr__( 'Edit Customer', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
150 ],
151 );
152 ?>
153
154 <?php
155 return ob_get_clean();
156 }
157
158 /**
159 * Define what data to show on each column of the table
160 *
161 * @param \SureCart\Models\Product $product Product model.
162 * @param String $column_name - Current column name.
163 *
164 * @return Mixed
165 */
166 public function column_default( $product, $column_name ) {
167 switch ( $column_name ) {
168 case 'name':
169 return '<a href="' . \SureCart::getUrl()->edit( 'product', $product->id ) . '">' . $product->name . '</a>';
170 case 'name':
171 case 'description':
172 return $product->$column_name ?? '';
173 }
174 }
175
176 /**
177 * Displays extra table navigation.
178 *
179 * @param string $which Top or bottom placement.
180 */
181 protected function extra_tablenav( $which ) {
182 ?>
183 <input type="hidden" name="page" value="sc-customers" />
184
185 <div class="alignleft actions">
186 <?php
187 if ( 'top' === $which ) {
188 ob_start();
189 $this->mode_dropdown();
190
191 /**
192 * Fires before the Filter button on the Posts and Pages list tables.
193 *
194 * The Filter button allows sorting by date and/or category on the
195 * Posts list table, and sorting by date on the Pages list table.
196 *
197 * @since 2.1.0
198 * @since 4.4.0 The `$post_type` parameter was added.
199 * @since 4.6.0 The `$which` parameter was added.
200 *
201 * @param string $post_type The post type slug.
202 * @param string $which The location of the extra table nav markup:
203 * 'top' or 'bottom' for WP_Posts_List_Table,
204 * 'bar' for WP_Media_List_Table.
205 */
206 do_action( 'restrict_manage_customers', $this->screen->post_type, $which );
207
208 $output = ob_get_clean();
209
210 if ( ! empty( $output ) ) {
211 echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
212 submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'filter-by-mode-submit' ) );
213 }
214 }
215
216 ?>
217 </div>
218
219 <?php
220 /**
221 * Fires immediately following the closing "actions" div in the tablenav
222 * for the affiliate referrals list table.
223 *
224 * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
225 */
226 do_action( 'manage_customers_extra_tablenav', $which );
227 }
228 }
229