Skip to content

Commit f3fc1e9

Browse files
committed
Merge remote-tracking branch 'origin/develop' into feature/CC-73-simplify-cart_hash
2 parents e5503bb + 01d887d commit f3fc1e9

File tree

15 files changed

+481
-888
lines changed

15 files changed

+481
-888
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
**/.DS_Store
12
/vendor/*
23
/node_modules/*
34
.nvimrc

composer.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
},
2929
"require": {
3030
"webdevstudios/oops-wp": "^0.1",
31-
"composer/installers": "^1.6",
32-
"firebase/php-jwt": "^5.0"
31+
"composer/installers": "^1.6"
3332
},
3433
"archive": {
3534
"exclude": [

composer.lock

Lines changed: 136 additions & 178 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/AbandonedCarts/CartHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ protected function save_cart_data( $user_id, $customer_data ) {
242242
$user_id,
243243
$customer_data['billing']['email'],
244244
maybe_serialize( [
245-
'products' => WC()->cart->get_cart(),
245+
'products' => array_values( WC()->cart->get_cart() ),
246246
'coupons' => WC()->cart->get_applied_coupons(),
247247
'customer' => $customer_data,
248248
'shipping_method' => WC()->checkout()->get_posted_data()['shipping_method'],

src/Ajax/GenerateSecretKey.php

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/Plugin.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
use WebDevStudios\CCForWoo\AbandonedCarts\CartHandler;
2222
use WebDevStudios\CCForWoo\AbandonedCarts\CartsTable;
2323
use WebDevStudios\CCForWoo\AbandonedCarts\CartRecovery;
24-
use WebDevStudios\CCForWoo\Ajax\GenerateSecretKey;
25-
use WebDevStudios\CCForWoo\Rest\V1\Registrar as RestRegistrar;
26-
use WebDevStudios\CCForWoo\Rest\V1\AuthHandler as RestAuthHandler;
24+
use WebDevStudios\CCForWoo\Rest\Registrar as RestRegistrar;
2725

2826
/**
2927
* "Core" plugin class.
@@ -79,8 +77,6 @@ final class Plugin extends ServiceRegistrar {
7977
CartsTable::class,
8078
CartRecovery::class,
8179
RestRegistrar::class,
82-
RestAuthHandler::class,
83-
GenerateSecretKey::class,
8480
];
8581

8682
/**

src/Rest/V1/Endpoints/AbandonedCarts.php renamed to src/Rest/AbandonedCarts/Controller.php

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
<?php
22
/**
3-
* REST API endpoint for collection of Abandoned Carts.
3+
* Controller for wc/cc-woo/abandoned-carts endpoint.
44
*
5-
* @author George Gecewicz <[email protected]>
6-
* @package WebDevStudios\CCForWoo\Rest\V1
5+
* @package WebDevStudios\CCForWoo\Rest\AbandonedCarts
76
* @since 2019-10-16
87
*/
98

10-
namespace WebDevStudios\CCForWoo\Rest\V1\Endpoints;
9+
namespace WebDevStudios\CCForWoo\Rest\AbandonedCarts;
1110

1211
use WP_REST_Server;
1312
use WP_REST_Request;
1413
use WP_REST_Controller;
1514
use WP_REST_Response;
15+
use WP_Error;
1616
use WC_Product;
1717

1818
use WebDevStudios\CCForWoo\AbandonedCarts\CartsTable;
1919
use WebDevStudios\CCForWoo\AbandonedCarts\Cart;
20-
use WebDevStudios\CCForWoo\Rest\V1\Registrar;
20+
use WebDevStudios\CCForWoo\Rest\Registrar;
2121

2222
/**
23-
* Class AbandonedCarts
23+
* Class AbandonedCarts\Controller
2424
*
25-
* @author George Gecewicz <[email protected]>
26-
* @package WebDevStudios\CCForWoo\Rest\V1
25+
* @package WebDevStudios\CCForWoo\Rest\AbandonedCarts
2726
* @since 2019-10-16
2827
*/
29-
class AbandonedCarts extends WP_REST_Controller {
28+
class Controller extends WP_REST_Controller {
3029

3130
/**
3231
* This endpoint's rest base.
@@ -55,17 +54,37 @@ public function __construct() {
5554
*/
5655
public function register_routes() {
5756
register_rest_route(
58-
Registrar::$namespace, '/' . $this->rest_base,
57+
Registrar::$namespace,
58+
'/' . $this->rest_base,
5959
[
6060
[
61-
'methods' => WP_REST_Server::READABLE,
62-
'callback' => [ $this, 'get_items' ],
61+
'methods' => WP_REST_Server::READABLE,
62+
'callback' => [ $this, 'get_items' ],
63+
'permission_callback' => [ $this, 'get_items_permissions_check' ],
64+
'args' => Schema::get_collection_params(),
6365
],
64-
'schema' => null,
66+
'schema' => [ '\WebDevStudios\CCForWoo\Rest\AbandonedCarts\Schema', 'get_public_item_schema' ],
6567
]
6668
);
6769
}
6870

71+
/**
72+
* Check whether a given request has permission to show abandoned carts.
73+
*
74+
* @author George Gecewicz <[email protected]>
75+
* @since 2019-11-12
76+
*
77+
* @param WP_REST_Request $request Full details about the request.
78+
* @return WP_Error|boolean
79+
*/
80+
public function get_items_permissions_check( $request ) {
81+
if ( ! wc_rest_check_manager_permissions( 'settings', 'read' ) ) {
82+
return new WP_Error( 'cc-woo-rest-not-allowed', esc_html__( 'Sorry, you cannot list resources.', 'cc-woo' ), [ 'status' => rest_authorization_required_code() ] );
83+
}
84+
85+
return true;
86+
}
87+
6988
/**
7089
* Register the Abandoned Carts endpoint.
7190
*
@@ -188,7 +207,7 @@ private function get_cart_data( int $per_page, int $offset, string $date_min, st
188207
);
189208
// phpcs:enable WordPress.DB.PreparedSQL
190209

191-
return $this->prepare_cart_data_for_api( $data );
210+
return $this->prepare_cart_data_for_api_response( $data );
192211
}
193212

194213
/**
@@ -230,7 +249,7 @@ private function get_dates_where( string $date_min, string $date_max ) : string
230249
* @param array $data The carts whose fields need preparation.
231250
* @return array
232251
*/
233-
private function prepare_cart_data_for_api( array $data ) {
252+
private function prepare_cart_data_for_api_response( array $data ) {
234253
foreach ( $data as $cart ) {
235254
$cart->cart_contents = maybe_unserialize( $cart->cart_contents );
236255
$cart->cart_contents = $this->get_additional_product_fields( $cart->cart_contents );

0 commit comments

Comments
 (0)