PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.63
OttoKit: All-in-One Automation Platform v1.0.63
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 / Controllers / AutomationController.php
suretriggers / src / Controllers Last commit date
AuthController.php 1 year ago AutomationController.php 3 years ago EventController.php 3 years ago GlobalSearchController.php 1 year ago IntegrationsController.php 2 years ago OptionController.php 3 years ago RestController.php 1 year ago RoutesController.php 3 years ago SettingsController.php 3 years ago
AutomationController.php
135 lines
1 <?php
2 /**
3 * AutomationController.
4 * php version 5.6
5 *
6 * @category AutomationController
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\Controllers;
15
16 use SureTriggers\Traits\SingletonLoader;
17
18 /**
19 * AutomationController
20 *
21 * @category AutomationController
22 * @package SureTriggers
23 * @author BSF <username@example.com>
24 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
25 * @link https://www.brainstormforce.com/
26 * @since 1.0.0
27 */
28 class AutomationController {
29
30 use SingletonLoader;
31
32 /**
33 * Trigger handler.
34 *
35 * @param array $trigger_data trigger data.
36 */
37 public static function sure_trigger_handle_trigger( $trigger_data ) {
38 // Calll rest API.
39 return RestController::get_instance()->trigger_listener( $trigger_data );
40 }
41
42 /**
43 * Find the next node of automation on the basis of current node id.
44 *
45 * @param array $automation automation.
46 * @param int $id node id.
47 * @return mixed|null
48 */
49 public static function find_next_node( $automation, $id ) {
50 if ( is_array( $automation ) && isset( $automation['rules'] ) ) {
51 $rules = $automation['rules'];
52 foreach ( $rules as $rule ) {
53
54 if ( isset( $rule['parentId'] ) && $id === $rule['parentId'] ) {
55 return $rule;
56 }
57
58 if ( isset( $rule['rules'] ) ) {
59 foreach ( $rule['rules'] as $inner_rules ) {
60
61 if ( isset( $inner_rules['parentId'] ) && $id === $inner_rules['parentId'] ) {
62 return $inner_rules;
63 }
64 }
65 }
66 }
67 }
68
69 return null;
70 }
71
72 /**
73 * Register trigger listener.
74 *
75 * @return string
76 */
77 public function register_trigger_listener() {
78 $events = OptionController::get_option( 'triggers', [] );
79 $test_trigger_transient = OptionController::get_option( 'test_triggers', [] );
80
81 if ( empty( $events ) && empty( $test_trigger_transient ) ) {
82 return;
83 }
84
85 if ( empty( $events ) && ! empty( $test_trigger_transient ) ) {
86 $events = $test_trigger_transient;
87 }
88
89 if ( ! empty( $events ) && ! empty( $test_trigger_transient ) ) {
90 $events = array_merge( $events, $test_trigger_transient );
91 }
92
93 foreach ( $events as $trigger ) {
94 self::register_trigger( $trigger );
95 }
96 }
97
98 /**
99 * Register a given trigger.
100 *
101 * @param array $trigger trigger.
102 * @return bool
103 */
104 public static function register_trigger( $trigger ) {
105 if ( ! isset( $trigger['trigger'] ) || ! isset( $trigger['integration'] ) ) {
106 return;
107 }
108
109 $integration = $trigger['integration'];
110 $trigger_name = $trigger['trigger'];
111 $registered_triggers = EventController::get_instance()->triggers;
112
113 // If Event is not registered but used in automation then continue.
114 if ( ! isset( $registered_triggers[ $integration ][ $trigger_name ] ) ) {
115 return false;
116 }
117
118 $event = $registered_triggers[ $integration ][ $trigger_name ];
119
120 $action = isset( $event['common_action'] ) ? $event['common_action'] : $event['action'];
121
122 if ( ! is_array( $action ) ) {
123 add_action( $action, $event['function'], $event['priority'], $event['accepted_args'] );
124 } else {
125 foreach ( $action as $action_name ) {
126 add_action( $action_name, $event['function'], $event['priority'], $event['accepted_args'] );
127 }
128 }
129
130 return true;
131 }
132 }
133
134 AutomationController::get_instance();
135