1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<?php // phpcs:ignoreFile
namespace AutomateWoo\Rules;
use WC_Order;
defined( 'ABSPATH' ) || exit;
/** * OrderIsCustomersFirst rule class. */ class OrderIsCustomersFirst extends Abstract_Bool {
public $data_item = 'order';
function init() { $this->title = __( "Order - Is Customer's First", 'automatewoo' ); }
/** * @param WC_Order $order * @param $compare * @param $value * @return bool */ function validate( $order, $compare, $value ) { $customer = [ $order->get_billing_email() ];
if ( $order->get_user_id() ) { $customer[] = $order->get_user_id(); }
$orders = wc_get_orders( [ 'type' => 'shop_order', 'customer' => $customer, 'limit' => 1, 'return' => 'ids', 'exclude' => [ $order->get_id() ], 'date_created' => '<' . $order->get_date_created()->getTimestamp(), ] );
$is_first = empty( $orders );
switch ( $value ) { case 'yes': return $is_first;
case 'no': return ! $is_first; } }
}
|