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 / Customers / CustomersController.php
surecart / app / src / Controllers / Admin / Customers Last commit date
CustomersController.php 8 months ago CustomersListTable.php 2 months ago CustomersScriptsController.php 3 months ago
CustomersController.php
129 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Customers;
4
5 use SureCart\Controllers\Admin\AdminController;
6 use SureCart\Models\Customer;
7 use SureCart\Controllers\Admin\Customers\CustomersListTable;
8 use SureCart\Background\BulkActionService;
9
10 /**
11 * Handles product admin requests.
12 */
13 class CustomersController extends AdminController {
14
15 /**
16 * Customers index.
17 */
18 public function index() {
19 // instantiate the bulk actions service.
20 $bulk_action_service = new BulkActionService();
21 $bulk_action_service->bootstrap();
22
23 // instantiate the customers list table.
24 $table = new CustomersListTable( $bulk_action_service );
25 $table->prepare_items();
26 $this->withHeader(
27 array(
28 'breadcrumbs' => [
29 'customers' => [
30 'title' => __( 'Customers', 'surecart' ),
31 ],
32 ],
33 )
34 );
35 return \SureCart::view( 'admin/customers/index' )->with( [ 'table' => $table ] );
36 }
37
38 /**
39 * Customers edit.
40 *
41 * @param \SureCartCore\Requests\RequestInterface $request Request.
42 */
43 public function edit( $request ) {
44 // enqueue needed script.
45 add_action( 'admin_enqueue_scripts', \SureCart::closure()->method( CustomersScriptsController::class, 'enqueue' ) );
46
47 $this->preloadPaths(
48 [
49 '/wp/v2/users/me',
50 '/wp/v2/types?context=view',
51 '/wp/v2/types?context=edit',
52 '/surecart/v1/customers/' . $request->query( 'id' ) . '?context=edit&expand%5B0%5D=balances',
53 ]
54 );
55
56 // return view.
57 return '<div id="app"></div>';
58 }
59
60 /**
61 * Confirm Bulk Delete.
62 */
63 public function confirmBulkDelete() {
64 // find the customers queued for bulk deletion.
65 if ( empty( $_REQUEST['bulk_action_customer_ids'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
66 wp_die(
67 sprintf(
68 '%s <a href="%s">%s</a>',
69 esc_html__( 'No customers selected. Please choose at least one customer to delete.', 'surecart' ),
70 esc_url( admin_url( 'admin.php?page=sc-customers' ) ),
71 esc_html__( 'Go Back', 'surecart' )
72 )
73 );
74 }
75
76 $customers = Customer::where(
77 [
78 'ids' => array_map( 'esc_html', $_REQUEST['bulk_action_customer_ids'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
79 ]
80 )->get();
81
82 // handle empty.
83 if ( empty( $customers ) ) {
84 wp_die( esc_html( _n( 'This customer has already been deleted.', 'These customers have already been deleted.', count( $_REQUEST['bulk_action_customer_ids'] ), 'surecart' ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
85 }
86
87 // handle error.
88 if ( is_wp_error( $customers ) ) {
89 wp_die( implode( ' ', array_map( 'esc_html', $customers->get_error_messages() ) ) );
90 }
91
92 // add header.
93 $this->withHeader(
94 [
95 'delete' => [
96 'title' => _n( 'Delete Customer', 'Delete Customers.', count( $customers ), 'surecart' ),
97 ],
98 ],
99 );
100
101 // return view.
102 return \SureCart::view( 'admin/customers/confirm-bulk-delete' )->with( [ 'customers' => $customers ] );
103 }
104
105 /**
106 * Bulk Delete.
107 */
108 public function bulkDelete() {
109 $customer_ids = array_map(
110 'sanitize_text_field',
111 $_REQUEST['bulk_action_customer_ids'] // phpcs:ignore WordPress.Security.NonceVerification.Recommended
112 );
113
114 // create bulk action.
115 $action = \SureCart::bulkAction()->createBulkAction(
116 'delete_customers',
117 $customer_ids
118 );
119
120 // handle error.
121 if ( is_wp_error( $action ) ) {
122 wp_die( implode( ' ', array_map( 'esc_html', $action->get_error_messages() ) ) );
123 }
124
125 // redirect.
126 return \SureCart::redirect()->to( esc_url_raw( admin_url( 'admin.php?page=sc-customers' ) ) );
127 }
128 }
129