PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 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.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / support-genix / actions / create-ticket.php
suretriggers / src / Integrations / support-genix / actions Last commit date
change-ticket-status.php 2 months ago create-ticket.php 2 months ago reply-to-ticket.php 2 months ago
create-ticket.php
149 lines
1 <?php
2 /**
3 * CreateTicketSupportGenix.
4 * php version 5.6
5 *
6 * @category CreateTicketSupportGenix
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\SupportGenix\Actions;
15
16 use Exception;
17 use Mapbd_wps_ticket;
18 use SureTriggers\Integrations\AutomateAction;
19 use SureTriggers\Traits\SingletonLoader;
20
21 /**
22 * CreateTicketSupportGenix
23 */
24 class CreateTicketSupportGenix extends AutomateAction {
25
26 use SingletonLoader;
27
28 /**
29 * Integration type.
30 *
31 * @var string
32 */
33 public $integration = 'SupportGenix';
34
35 /**
36 * Action name.
37 *
38 * @var string
39 */
40 public $action = 'create_ticket_support_genix';
41
42 /**
43 * Register action.
44 *
45 * @param array $actions actions.
46 * @return array
47 */
48 public function register( $actions ) {
49 $actions[ $this->integration ][ $this->action ] = [
50 'label' => __( 'Create Ticket', 'suretriggers' ),
51 'action' => $this->action,
52 'function' => [ $this, 'action_listener' ],
53 ];
54
55 return $actions;
56 }
57
58 /**
59 * Action listener.
60 *
61 * @param int $user_id User ID.
62 * @param int $automation_id Automation ID.
63 * @param array $fields Fields.
64 * @param array $selected_options Selected options.
65 *
66 * @return array
67 * @throws Exception Exception.
68 */
69 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
70 if ( ! class_exists( 'Mapbd_wps_ticket' ) ) {
71 return [
72 'status' => 'error',
73 'message' => __( 'Support Genix plugin is not installed or active.', 'suretriggers' ),
74 ];
75 }
76
77 $title = isset( $selected_options['ticket_title'] ) ? sanitize_text_field( $selected_options['ticket_title'] ) : '';
78 $body = isset( $selected_options['ticket_body'] ) ? wp_kses_post( $selected_options['ticket_body'] ) : '';
79 $ticket_user = isset( $selected_options['ticket_user'] ) ? (int) $selected_options['ticket_user'] : 0;
80 $category_id = isset( $selected_options['cat_id'] ) ? (int) $selected_options['cat_id'] : 0;
81 $priority = isset( $selected_options['priority'] ) ? sanitize_text_field( $selected_options['priority'] ) : 'N';
82 $is_public = isset( $selected_options['is_public'] ) && 'Y' === $selected_options['is_public'] ? 'Y' : 'N';
83 $mailbox_id = isset( $selected_options['mailbox_id'] ) ? (int) $selected_options['mailbox_id'] : 0;
84
85 if ( empty( $title ) || empty( $body ) || $ticket_user <= 0 ) {
86 return [
87 'status' => 'error',
88 'message' => __( 'Ticket title, body, and ticket user id are required.', 'suretriggers' ),
89 ];
90 }
91
92 if ( ! get_userdata( $ticket_user ) ) {
93 return [
94 'status' => 'error',
95 'message' => sprintf(
96 /* translators: %d: WP user id */
97 __( 'User with ID %d was not found.', 'suretriggers' ),
98 $ticket_user
99 ),
100 ];
101 }
102
103 $priority = in_array( $priority, [ 'N', 'M', 'H' ], true ) ? $priority : 'N';
104
105 try {
106 $ticket = new Mapbd_wps_ticket();
107 $ticket->title( $title );
108 $ticket->ticket_body( $body );
109 $ticket->ticket_user( $ticket_user );
110 if ( $category_id > 0 ) {
111 $ticket->cat_id( $category_id );
112 }
113 $ticket->status( 'N' );
114 $ticket->priority( $priority );
115 $ticket->is_public( $is_public );
116 $ticket->opened_time( gmdate( 'Y-m-d H:i:s' ) );
117 $ticket->opened_by( $ticket_user );
118 $ticket->opened_by_type( 'U' );
119 if ( $mailbox_id > 0 ) {
120 $ticket->mailbox_id( $mailbox_id );
121 }
122
123 $created = Mapbd_wps_ticket::create_ticket( $ticket, [], false, true );
124 } catch ( Exception $e ) {
125 return [
126 'status' => 'error',
127 'message' => $e->getMessage(),
128 ];
129 }
130
131 if ( ! $created ) {
132 return [
133 'status' => 'error',
134 'message' => __( 'Support Genix rejected the ticket. Check required fields and custom field validation.', 'suretriggers' ),
135 ];
136 }
137
138 return [
139 'status' => 'success',
140 'ticket_id' => isset( $ticket->id ) ? $ticket->id : null,
141 'ticket_track_id' => isset( $ticket->ticket_track_id ) ? $ticket->ticket_track_id : null,
142 'title' => $title,
143 'ticket_user' => $ticket_user,
144 ];
145 }
146 }
147
148 CreateTicketSupportGenix::get_instance();
149