-
Notifications
You must be signed in to change notification settings - Fork 3
/
flsupport-ticketcreatedcustomer.php
120 lines (100 loc) · 3.16 KB
/
flsupport-ticketcreatedcustomer.php
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
namespace Uncanny_Automator;
/**
* Class FLSUPPORT_TICKETCREATEDCUSTOMER
*
* @package Uncanny_Automator
*/
class FLSUPPORT_TICKETCREATEDCUSTOMER {
/**
* Integration code
*
* @var string
*/
public static $integration = 'FLSUPPORT';
/**
* @var string
*/
private $trigger_code;
/**
* @var string
*/
private $trigger_meta;
/**
* Set up Automator trigger constructor.
*/
public function __construct() {
$this->trigger_code = 'FLSTTICKETCREATEDCUST';
$this->trigger_meta = 'FLSTTICKETCREATEDCUST_META';
$this->define_trigger();
}
/**
* Define and register the trigger by pushing it into the Automator object
*/
public function define_trigger() {
$trigger = array(
'author' => Automator()->get_author_name( $this->trigger_code ),
'support_link' => Automator()->get_author_support_link( $this->trigger_code, 'integration/fluent-support/' ),
'integration' => self::$integration,
'code' => $this->trigger_code,
/* translators: Logged-in trigger - Fluent Support */
'sentence' => esc_attr__( 'A ticket is opened by a customer', 'uncanny-automator' ),
/* translators: Logged-in trigger - Fluent Support */
'select_option_name' => esc_attr__( 'A ticket is opened by a customer', 'uncanny-automator' ),
'action' => 'fluent_support/ticket_created',
'priority' => 20,
'accepted_args' => 2,
'validation_function' => array( $this, 'fsupport_ticket_opened' ),
'options' => array(),
);
Automator()->register->trigger( $trigger );
}
/**
* Validation function when the trigger action is hit
*
* @param $ticket
* @param $person
*/
public function fsupport_ticket_opened( $ticket, $person ) {
$user_id = get_current_user_id();
// Logged in users only.
if ( ! $user_id ) {
return;
}
$request_uri = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : '';
if ( ! strstr( $request_uri, '/customer-portal/tickets' ) ) {
return; // ticket is not opened by customer.
}
if ( ! is_object( $person ) || ! is_object( $ticket ) ) {
return;
}
$pass_args = array(
'code' => $this->trigger_code,
'meta' => $this->trigger_meta,
'user_id' => $user_id,
'ignore_post_id' => true,
'is_signed_in' => true,
);
$args = Automator()->maybe_add_trigger_entry( $pass_args, false );
if ( $args ) {
foreach ( $args as $result ) {
if ( true === $result['result'] ) {
$trigger_meta = array(
'user_id' => $user_id,
'trigger_id' => $result['args']['trigger_id'],
'trigger_log_id' => $result['args']['get_trigger_id'],
'run_number' => $result['args']['run_number'],
);
$trigger_meta['meta_key'] = 'FLSUPPORTTICKETID';
$trigger_meta['meta_value'] = $ticket->id;
Automator()->insert_trigger_meta( $trigger_meta );
$trigger_meta['meta_key'] = 'FLSUPPORTPERSONID';
$trigger_meta['meta_value'] = $person->id;
Automator()->insert_trigger_meta( $trigger_meta );
Automator()->maybe_trigger_complete( $result['args'] );
break;
}
}
}
}
}