PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
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 / change-ticket-status.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
change-ticket-status.php
167 lines
1 <?php
2 /**
3 * ChangeTicketStatusSupportGenix.
4 * php version 5.6
5 *
6 * @category ChangeTicketStatusSupportGenix
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 * ChangeTicketStatusSupportGenix
23 */
24 class ChangeTicketStatusSupportGenix 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 = 'change_ticket_status_support_genix';
41
42 /**
43 * Allowed status codes.
44 *
45 * @var array
46 */
47 protected $allowed_statuses = [ 'N', 'C', 'P', 'R' ];
48
49 /**
50 * Register action.
51 *
52 * @param array $actions actions.
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Change Ticket Status', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61
62 return $actions;
63 }
64
65 /**
66 * Action listener.
67 *
68 * @param int $user_id User ID.
69 * @param int $automation_id Automation ID.
70 * @param array $fields Fields.
71 * @param array $selected_options Selected options.
72 *
73 * @return array
74 * @throws Exception Exception.
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 global $wpdb;
78
79 if ( ! class_exists( 'Mapbd_wps_ticket' ) ) {
80 return [
81 'status' => 'error',
82 'message' => __( 'Support Genix plugin is not installed or active.', 'suretriggers' ),
83 ];
84 }
85
86 $ticket_id = isset( $selected_options['ticket_id'] ) ? (int) $selected_options['ticket_id'] : 0;
87 $new_status = isset( $selected_options['status'] ) ? sanitize_text_field( $selected_options['status'] ) : '';
88
89 if ( $ticket_id <= 0 || empty( $new_status ) ) {
90 return [
91 'status' => 'error',
92 'message' => __( 'Ticket ID and target status are required.', 'suretriggers' ),
93 ];
94 }
95
96 if ( ! in_array( $new_status, $this->allowed_statuses, true ) ) {
97 return [
98 'status' => 'error',
99 'message' => __( 'Unsupported status. Allowed: N (New), C (Closed), P (In-progress), R (Re-open).', 'suretriggers' ),
100 ];
101 }
102
103 try {
104 $ticket = Mapbd_wps_ticket::FindBy( 'id', $ticket_id );
105 } catch ( Exception $e ) {
106 return [
107 'status' => 'error',
108 'message' => $e->getMessage(),
109 ];
110 }
111
112 if ( empty( $ticket ) ) {
113 return [
114 'status' => 'error',
115 'message' => sprintf(
116 /* translators: %d: ticket id */
117 __( 'Ticket with ID %d was not found.', 'suretriggers' ),
118 $ticket_id
119 ),
120 ];
121 }
122
123 try {
124 $update = new Mapbd_wps_ticket();
125 $update->status( $new_status );
126 $update->last_status_update_time( gmdate( 'Y-m-d H:i:s' ) );
127 if ( 'R' === $new_status ) {
128 $update->re_open_time( gmdate( 'Y-m-d H:i:s' ) );
129 $update->re_open_by( get_current_user_id() );
130 $update->re_open_by_type( 'A' );
131 }
132 $update->SetWhereUpdate( 'id', $ticket_id );
133 $update->UnsetAllExcepts( 'status,last_status_update_time,re_open_time,re_open_by,re_open_by_type' );
134 $updated = $update->Update();
135 } catch ( Exception $e ) {
136 return [
137 'status' => 'error',
138 'message' => $e->getMessage(),
139 ];
140 }
141
142 if ( ! $updated ) {
143 return [
144 'status' => 'error',
145 'message' => __( 'Failed to update ticket status.', 'suretriggers' ),
146 ];
147 }
148
149 $updated_ticket = Mapbd_wps_ticket::FindBy( 'id', $ticket_id );
150 if ( $updated_ticket ) {
151 // Third-party hook names defined by the Support Genix plugin; cannot be renamed.
152 //phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
153 do_action( 'apbd-wps/action/ticket-status-change', $updated_ticket, get_current_user_id() );
154 //phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
155 do_action( 'apbd-wps/action/ticket-property-update', $updated_ticket, 'status' );
156 }
157
158 return [
159 'status' => 'success',
160 'ticket_id' => $ticket_id,
161 'new_status' => $new_status,
162 ];
163 }
164 }
165
166 ChangeTicketStatusSupportGenix::get_instance();
167