PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / jetengine / triggers / specific-post-field-update.php
suretriggers / src / Integrations / jetengine / triggers Last commit date
specific-post-field-update.php 3 years ago
specific-post-field-update.php
171 lines
1 <?php
2 /**
3 * SpecificPostFieldUpdate.
4 * php version 5.6
5 *
6 * @category SpecificPostFieldUpdate
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\JetEngine\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19
20 if ( ! class_exists( 'SpecificPostFieldUpdate' ) ) :
21
22 /**
23 * SpecificPostFieldUpdate
24 *
25 * @category SpecificPostFieldUpdate
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 *
32 * @psalm-suppress UndefinedTrait
33 */
34 class SpecificPostFieldUpdate {
35
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'JetEngine';
43
44
45 /**
46 * Trigger name.
47 *
48 * @var string
49 */
50 public $trigger = 'specific_post_field_update';
51
52 use SingletonLoader;
53
54
55 /**
56 * Constructor
57 *
58 * @since 1.0.0
59 */
60 public function __construct() {
61 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
62 }
63
64 /**
65 * Register action.
66 *
67 * @param array $triggers trigger data.
68 * @return array
69 */
70 public function register( $triggers ) {
71
72 $triggers[ $this->integration ][ $this->trigger ] = [
73 'label' => __( 'A user updates a specific JetEngine field on a specific post type', 'suretriggers' ),
74 'action' => $this->trigger,
75 'common_action' => [ 'added_post_meta', 'updated_post_meta' ],
76 'function' => [ $this, 'trigger_listener' ],
77 'priority' => 10,
78 'accepted_args' => 4,
79 ];
80
81 return $triggers;
82 }
83
84 /**
85 * Trigger listener
86 *
87 * @param int $meta_id Meta ID.
88 * @param int $object_id Object ID.
89 * @param int $meta_key Meta Key.
90 * @param int $meta_value Meta Value.
91 * @return void|bool
92 */
93 public function trigger_listener( $meta_id, $object_id, $meta_key, $meta_value ) {
94
95 // Bail out if value didn't change or if meta value is empty.
96 if ( 'updated_post_meta' === current_action() && '_edit_lock' !== $meta_key ) {
97 if ( empty( $meta_value ) ) {
98 return false;
99 }
100
101 $metaboxes = (array) get_option( 'jet_engine_meta_boxes', [] );
102
103 $post_fields = array_filter(
104 $metaboxes,
105 function( $metabox ) {
106 /**
107 *
108 * Ignore line
109 *
110 * @phpstan-ignore-next-line
111 */
112 return 'post' === $metabox['args']['object_type'];
113 }
114 );
115
116 $post_fields = array_column( $post_fields, 'meta_fields' );
117
118 $meta_values = get_post_meta( $object_id );
119
120 $meta_keys = [];
121
122 foreach ( (array) $meta_values as $key => $value ) {
123 /**
124 *
125 * Ignore line
126 *
127 * @phpstan-ignore-next-line
128 */
129 if ( ! empty( $value[0] ) ) {
130 $meta_keys[] = $key;
131 }
132 }
133
134 $options_checked = [];
135 if ( ! empty( $post_fields ) ) {
136 foreach ( $post_fields as $fields ) {
137 if ( is_array( $fields ) ) {
138 foreach ( $fields as $val ) {
139 if ( $val['name'] == $meta_key ) {
140 $options_checked[] = $val['name'];
141 }
142 }
143 }
144 }
145 }
146
147 if ( ! empty( $options_checked ) ) {
148 $context['post'] = WordPress::get_post_context( $object_id );
149 $context['field_id'] = $options_checked[0];
150 $context[ $options_checked[0] ] = get_post_meta( $object_id, $options_checked[0], true );
151
152 AutomationController::sure_trigger_handle_trigger(
153 [
154 'trigger' => $this->trigger,
155 'context' => $context,
156 ]
157 );
158 }
159 }
160 }
161 }
162
163 /**
164 * Ignore false positive
165 *
166 * @psalm-suppress UndefinedMethod
167 */
168 SpecificPostFieldUpdate::get_instance();
169
170 endif;
171