PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
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 / voxel / actions / update-voxel-post-field.php
suretriggers / src / Integrations / voxel / actions Last commit date
add-post-profile-wall.php 10 months ago add-post-to-collection.php 10 months ago add-post-wall.php 10 months ago assign-listing-plan-to-user.php 6 months ago change-membership-plan.php 7 months ago claim-post.php 10 months ago delete-post.php 7 months ago delete-wall-post.php 10 months ago find-post.php 7 months ago follow-post.php 10 months ago get-address-by-coordinates.php 10 months ago get-coordinates-by-address.php 10 months ago get-member-by-email.php 9 months ago get-member-by-id.php 9 months ago get-member-by-profile-id.php 9 months ago get-post-by-id.php 10 months ago get-posts-by-voxel-field.php 10 months ago new-collection-post.php 1 year ago new-post.php 1 year ago new-profile.php 10 months ago remove-post-from-collection.php 10 months ago send-custom-in-app-notification.php 2 years ago send-direct-message.php 10 months ago send-email.php 10 months ago set-collection-post-verified.php 10 months ago set-custom-priority.php 10 months ago set-post-verified.php 10 months ago set-profile-verified.php 10 months ago update-collection-post.php 1 year ago update-post.php 10 months ago update-profile.php 10 months ago update-voxel-post-field.php 10 months ago update-voxel-taxonomy.php 10 months ago
update-voxel-post-field.php
276 lines
1 <?php
2 /**
3 * UpdateVoxelPostField.
4 * php version 5.6
5 *
6 * @category UpdateVoxelPostField
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\Voxel\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use Exception;
19
20 /**
21 * UpdateVoxelPostField
22 *
23 * @category UpdateVoxelPostField
24 * @package SureTriggers
25 * @author BSF <username@example.com>
26 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
27 * @link https://www.brainstormforce.com/
28 * @since 1.0.0
29 */
30 class UpdateVoxelPostField extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'Voxel';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'voxel_update_post_field';
45
46 use SingletonLoader;
47
48 /**
49 * Register action.
50 *
51 * @param array $actions action data.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Update Voxel Post Field', 'suretriggers' ),
57 'action' => 'voxel_update_post_field',
58 'function' => [ $this, 'action_listener' ],
59 ];
60
61 return $actions;
62 }
63
64 /**
65 * Action listener.
66 *
67 * @param int $user_id user_id.
68 * @param int $automation_id automation_id.
69 * @param array $fields fields.
70 * @param array $selected_options selectedOptions.
71 *
72 * @throws Exception Exception.
73 *
74 * @return bool|array
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 if ( ! class_exists( 'Voxel\Post' ) ) {
78 return [
79 'success' => false,
80 'message' => esc_attr__( 'Voxel classes not found', 'suretriggers' ),
81 ];
82 }
83
84 $post_id = isset( $selected_options['post_id'] ) ? absint( $selected_options['post_id'] ) : 0;
85 if ( ! $post_id ) {
86 return [
87 'success' => false,
88 'message' => esc_attr__( 'Post ID is required', 'suretriggers' ),
89 ];
90 }
91
92 $post = get_post( $post_id );
93 if ( ! $post ) {
94 return [
95 'success' => false,
96 'message' => esc_attr__( 'Post not found', 'suretriggers' ),
97 ];
98 }
99
100 $field_type = isset( $selected_options['field_type'] ) ? sanitize_text_field( $selected_options['field_type'] ) : '';
101
102 if ( 'wp_field' === $field_type ) {
103 $field_name = isset( $selected_options['field_name'] ) ? sanitize_text_field( $selected_options['field_name'] ) : '';
104 $field_value = isset( $selected_options['field_value'] ) ? $selected_options['field_value'] : '';
105
106 if ( empty( $field_name ) ) {
107 return [
108 'success' => false,
109 'message' => esc_attr__( 'Field name is required', 'suretriggers' ),
110 ];
111 }
112
113 return $this->update_wordpress_field( $post_id, $field_name, $field_value );
114
115 } elseif ( 'custom_field' === $field_type ) {
116 $post_type = get_post_type( $post_id );
117 if ( false === $post_type ) {
118 return [
119 'success' => false,
120 'message' => esc_attr__( 'Invalid post type', 'suretriggers' ),
121 ];
122 }
123 $post_fields = [];
124
125 if ( isset( $selected_options['field_row'] ) && is_array( $selected_options['field_row'] ) ) {
126 foreach ( $selected_options['field_row'] as $field ) {
127 if ( isset( $field['field_column_name'] ) ) {
128 $field_name = sanitize_text_field( $field['field_column_name'] );
129
130 if ( isset( $field[ $field_name ] ) && ! empty( $field[ $field_name ] ) ) {
131 $post_fields[ $field_name ] = $field[ $field_name ];
132 }
133 }
134 }
135 }
136
137 if ( empty( $post_fields ) ) {
138 return [
139 'success' => false,
140 'message' => esc_attr__( 'No custom field data provided to update', 'suretriggers' ),
141 ];
142 }
143
144 $result = \SureTriggers\Integrations\Voxel\Voxel::voxel_update_post( $post_fields, $post_id, $post_type );
145
146 if ( true === $result ) {
147 return [
148 'success' => true,
149 'message' => esc_attr__( 'Voxel custom fields updated successfully', 'suretriggers' ),
150 'post_id' => $post_id,
151 'post_url' => get_permalink( $post_id ),
152 ];
153 } else {
154 return [
155 'success' => false,
156 'message' => esc_attr__( 'Failed to update Voxel custom fields', 'suretriggers' ),
157 ];
158 }
159 } else {
160 return [
161 'success' => false,
162 'message' => esc_attr__( 'Invalid field type', 'suretriggers' ),
163 ];
164 }
165 }
166
167 /**
168 * Update WordPress standard field.
169 *
170 * @param int $post_id Post ID.
171 * @param string $field_name Field name.
172 * @param mixed $field_value Field value.
173 * @return array
174 */
175 private function update_wordpress_field( $post_id, $field_name, $field_value ) {
176 $update_data = [ 'ID' => $post_id ];
177
178 switch ( $field_name ) {
179 case 'post_title':
180 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
181 $update_data['post_title'] = sanitize_text_field( (string) $field_value );
182 }
183 break;
184 case 'post_content':
185 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
186 $update_data['post_content'] = wp_kses_post( (string) $field_value );
187 }
188 break;
189 case 'post_excerpt':
190 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
191 $update_data['post_excerpt'] = sanitize_textarea_field( (string) $field_value );
192 }
193 break;
194 case 'post_status':
195 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
196 $valid_statuses = get_post_stati();
197 $field_value_string = (string) $field_value;
198 if ( in_array( $field_value_string, array_keys( $valid_statuses ) ) ) {
199 $update_data['post_status'] = $field_value_string;
200 } else {
201 return [
202 'success' => false,
203 'message' => esc_attr__( 'Invalid post status', 'suretriggers' ),
204 ];
205 }
206 }
207 break;
208 case 'post_slug':
209 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
210 $update_data['post_name'] = sanitize_title( (string) $field_value );
211 }
212 break;
213 case 'post_date':
214 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
215 $date = sanitize_text_field( (string) $field_value );
216 if ( strtotime( $date ) ) {
217 $update_data['post_date'] = $date;
218 } else {
219 return [
220 'success' => false,
221 'message' => esc_attr__( 'Invalid date format', 'suretriggers' ),
222 ];
223 }
224 }
225 break;
226 case 'featured_image':
227 if ( is_string( $field_value ) || is_numeric( $field_value ) ) {
228 $image_id = absint( (string) $field_value );
229 if ( $image_id && wp_attachment_is_image( $image_id ) ) {
230 set_post_thumbnail( $post_id, $image_id );
231 return [
232 'success' => true,
233 'message' => esc_attr__( 'Featured image updated successfully', 'suretriggers' ),
234 'post_id' => $post_id,
235 'field_name' => $field_name,
236 ];
237 } else {
238 return [
239 'success' => false,
240 'message' => esc_attr__( 'Invalid image ID', 'suretriggers' ),
241 ];
242 }
243 }
244 break;
245 default:
246 update_post_meta( $post_id, $field_name, $field_value );
247 return [
248 'success' => true,
249 'message' => esc_attr__( 'Post meta updated successfully', 'suretriggers' ),
250 'post_id' => $post_id,
251 'field_name' => $field_name,
252 ];
253 }
254
255 $result = wp_update_post( $update_data );
256
257 if ( 0 === $result ) {
258 return [
259 'success' => false,
260 'message' => esc_attr__( 'Failed to update post: Unknown error', 'suretriggers' ),
261 ];
262 }
263
264 return [
265 'success' => true,
266 'message' => esc_attr__( 'WordPress field updated successfully', 'suretriggers' ),
267 'post_id' => $post_id,
268 'field_name' => $field_name,
269 ];
270 }
271
272
273 }
274
275 UpdateVoxelPostField::get_instance();
276