PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
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 3 years ago CustomersScriptsController.php 3 years ago
CustomersListTable.php
197 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Customers;
4
5 use SureCart\Models\Product;
6 use SureCart\Models\Customer;
7 use SureCart\Support\Currency;
8 use SureCart\Support\TimeDate;
9 use SureCart\Controllers\Admin\Tables\ListTable;
10 /**
11 * Create a new table class that will extend the WP_List_Table
12 */
13 class CustomersListTable extends ListTable {
14 /**
15 * Prepare the items for the table to process
16 *
17 * @return Void
18 */
19 public function prepare_items() {
20 $columns = $this->get_columns();
21 $hidden = $this->get_hidden_columns();
22 $sortable = $this->get_sortable_columns();
23
24 $this->_column_headers = array( $columns, $hidden, $sortable );
25
26 $query = $this->table_data();
27 if ( is_wp_error( $query ) ) {
28 $this->items = [];
29 return;
30 }
31
32 $this->set_pagination_args(
33 [
34 'total_items' => $query->pagination->count,
35 'per_page' => $this->get_items_per_page( 'customerss' ),
36 ]
37 );
38
39 $this->items = $query->data;
40 }
41
42 /**
43 * Override the parent columns method. Defines the columns to use in your listing table
44 *
45 * @return Array
46 */
47 public function get_columns() {
48 return [
49 'name' => __( 'Name', 'surecart' ),
50 'email' => __( 'Email', 'surecart' ),
51 'created' => __( 'Created', 'surecart' ),
52 'mode' => '',
53 ];
54 }
55
56 /**
57 * Displays the checkbox column.
58 *
59 * @param Product $product The product model.
60 */
61 public function column_cb( $product ) {
62 ?>
63 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $product['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
64 <input id="cb-select-<?php echo esc_attr( $product['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $product['id'] ); ?>" />
65 <?php
66 }
67
68 /**
69 * Define which columns are hidden
70 *
71 * @return Array
72 */
73 public function get_hidden_columns() {
74 return array();
75 }
76
77 /**
78 * Define the sortable columns
79 *
80 * @return Array
81 */
82 public function get_sortable_columns() {
83 return array( 'title' => array( 'title', false ) );
84 }
85
86 /**
87 * Get the table data
88 *
89 * @return Object
90 */
91 private function table_data() {
92 return Customer::with( [ 'orders' ] )
93 ->where( [ 'query' => $this->get_search_query() ] )
94 ->paginate(
95 [
96 'per_page' => $this->get_items_per_page( 'customers' ),
97 'page' => $this->get_pagenum(),
98 ]
99 );
100 }
101
102 /**
103 * Nothing found.
104 *
105 * @return void
106 */
107 public function no_items() {
108 echo esc_html_e( 'No customers found.', 'surecart' );
109 }
110
111 /**
112 * Handle the orders column.
113 *
114 * @param \SureCart\Models\Customer $customer Customer model.
115 *
116 * @return string
117 */
118 public function column_orders( $customer ) {
119 return __( 'No price', 'surecart' );
120 }
121
122 /**
123 * The customer email.
124 *
125 * @param \SureCart\Models\Customer $customer The customer model.
126 *
127 * @return string
128 */
129 public function column_email( $customer ) {
130 return sanitize_email( $customer->email );
131 }
132
133 /**
134 * Name column
135 *
136 * @param \SureCart\Models\Customer $customer Customer model.
137 *
138 * @return string
139 */
140 public function column_name( $customer ) {
141 ob_start();
142 ?>
143 <a class="row-title" aria-label="<?php echo esc_attr( 'Edit Customer', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'customers', $customer->id ) ); ?>">
144 <?php echo wp_kses_post( $customer->name ?? $customer->email ); ?>
145 </a>
146
147 <?php
148 echo $this->row_actions(
149 [
150 'edit' => '<a href="' . esc_url( \SureCart::getUrl()->edit( 'customers', $customer->id ) ) . '" aria-label="' . esc_attr( 'Edit Customer', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
151 ],
152 );
153 ?>
154
155 <?php
156 return ob_get_clean();
157 }
158
159 /**
160 * Toggle archive action link and text.
161 *
162 * @param \SureCart\Models\Product $product Product model.
163 * @return string
164 */
165 public function action_toggle_archive( $product ) {
166 $text = $product->archived ? __( 'Un-Archive', 'surecart' ) : __( 'Archive', 'surecart' );
167 $confirm_message = $product->archived ? __( 'Are you sure you want to restore this product? This will be be available to purchase.', 'surecart' ) : __( 'Are you sure you want to archive this product? This will be unavailable for purchase.', 'surecart' );
168 $link = \SureCart::getUrl()->toggleArchive( 'product', $product->id );
169
170 return sprintf(
171 '<a class="submitdelete" onclick="return confirm(\'%1s\')" href="%2s" aria-label="%3s">%4s</a>',
172 esc_attr( $confirm_message ),
173 esc_url( $link ),
174 esc_attr__( 'Toggle Product Archive', 'surecart' ),
175 esc_html( $text )
176 );
177 }
178
179 /**
180 * Define what data to show on each column of the table
181 *
182 * @param \SureCart\Models\Product $product Product model.
183 * @param String $column_name - Current column name.
184 *
185 * @return Mixed
186 */
187 public function column_default( $product, $column_name ) {
188 switch ( $column_name ) {
189 case 'name':
190 return '<a href="' . \SureCart::getUrl()->edit( 'product', $product->id ) . '">' . $product->name . '</a>';
191 case 'name':
192 case 'description':
193 return $product->$column_name ?? '';
194 }
195 }
196 }
197