PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 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 / eventon / triggers / event-cancelled.php
suretriggers / src / Integrations / eventon / triggers Last commit date
event-cancelled.php 3 months ago event-published.php 3 months ago event-updated.php 3 months ago
event-cancelled.php
175 lines
1 <?php
2 /**
3 * EventCancelled.
4 * php version 5.6
5 *
6 * @category EventCancelled
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\EventOn\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\EventOn\EventOn;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 if ( ! class_exists( 'EventOnEventCancelled' ) ) :
22
23 /**
24 * EventOnEventCancelled
25 *
26 * @category EventOnEventCancelled
27 * @package SureTriggers
28 * @author BSF <username@example.com>
29 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
30 * @link https://www.brainstormforce.com/
31 * @since 1.0.0
32 *
33 * @psalm-suppress UndefinedTrait
34 */
35 class EventOnEventCancelled {
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'EventOn';
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'eon_event_cancelled';
50
51 use SingletonLoader;
52
53 /**
54 * Previous internal status per post ID, captured before meta is written.
55 *
56 * @var array<int,string>
57 */
58 private $previous_status = [];
59
60 /**
61 * Constructor
62 *
63 * @since 1.0.0
64 */
65 public function __construct() {
66 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
67
68 // Capture the previous internal status before EventOn writes the new one.
69 add_action( 'pre_post_update', [ $this, 'capture_previous_status' ], 10, 1 );
70 }
71
72 /**
73 * Register action.
74 *
75 * @param array $triggers trigger data.
76 * @return array
77 */
78 public function register( $triggers ) {
79
80 $triggers[ $this->integration ][ $this->trigger ] = [
81 'label' => __( 'Event Cancelled', 'suretriggers' ),
82 'action' => $this->trigger,
83 'common_action' => 'eventon_save_meta',
84 'function' => [ $this, 'trigger_listener' ],
85 'priority' => 30,
86 'accepted_args' => 3,
87 ];
88
89 return $triggers;
90 }
91
92 /**
93 * Capture the previous _status value before the event meta is saved.
94 *
95 * @param int $post_id Post ID being updated.
96 * @return void
97 */
98 public function capture_previous_status( $post_id ) {
99 if ( ! is_numeric( $post_id ) ) {
100 return;
101 }
102
103 $post_id = (int) $post_id;
104 $post = get_post( $post_id );
105 if ( ! $post || 'ajde_events' !== $post->post_type ) {
106 return;
107 }
108
109 $previous = get_post_meta( $post_id, '_status', true );
110 $this->previous_status[ $post_id ] = is_string( $previous ) ? $previous : '';
111 }
112
113 /**
114 * Trigger listener.
115 *
116 * Fires after EventOn meta has been saved. Only triggers when the internal
117 * `_status` meta transitioned into `cancelled`.
118 *
119 * @param array $fields_ar Fields saved.
120 * @param int $post_id Event post ID.
121 * @param mixed $event EventOn event object.
122 *
123 * @return void
124 */
125 public function trigger_listener( $fields_ar, $post_id, $event ) {
126 unset( $fields_ar, $event );
127
128 if ( ! is_numeric( $post_id ) ) {
129 return;
130 }
131
132 $post_id = (int) $post_id;
133 $post = get_post( $post_id );
134 if ( ! $post || 'ajde_events' !== $post->post_type ) {
135 return;
136 }
137
138 $current_status = get_post_meta( $post_id, '_status', true );
139 if ( 'cancelled' !== $current_status ) {
140 return;
141 }
142
143 $previous = isset( $this->previous_status[ $post_id ] ) ? $this->previous_status[ $post_id ] : '';
144 if ( 'cancelled' === $previous ) {
145 return;
146 }
147
148 $context = EventOn::get_event_context( $post_id );
149 if ( empty( $context ) ) {
150 return;
151 }
152
153 $author_id = (int) $post->post_author;
154 if ( ! empty( $author_id ) ) {
155 $context = array_merge( WordPress::get_user_context( $author_id ), $context );
156 }
157
158 AutomationController::sure_trigger_handle_trigger(
159 [
160 'trigger' => $this->trigger,
161 'context' => $context,
162 ]
163 );
164 }
165 }
166
167 /**
168 * Ignore false positive
169 *
170 * @psalm-suppress UndefinedMethod
171 */
172 EventOnEventCancelled::get_instance();
173
174 endif;
175