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 / geo-directory / Actions / add-place.php
suretriggers / src / Integrations / geo-directory / Actions Last commit date
add-category-to-place.php 2 years ago add-place.php 10 months ago add-tag-to-place.php 2 years ago remove-category-from-place.php 2 years ago remove-tag-from-place.php 2 years ago
add-place.php
216 lines
1 <?php
2 /**
3 * AddPlace.
4 * php version 5.6
5 *
6 * @category AddPlace
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\GeoDirectory\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use Exception;
19
20 /**
21 * AddPlace
22 *
23 * @category AddPlace
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 AddPlace extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'GeoDirectory';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'add_or_update_place';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Add/Update Place', 'suretriggers' ),
57 'action' => $this->action,
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 * @return array
73 * @throws Exception Error.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 $post_data = [];
77 $post_data['post_url'] = $selected_options['post_url'] ? $selected_options['post_url'] : '';
78 $post_data['post_title'] = $selected_options['post_title'] ? $selected_options['post_title'] : '';
79 $post_content = $selected_options['post_content'] ? $selected_options['post_content'] : '';
80 $patterns = [
81 '/<head\b[^>]*>.*?<\/head>/is',
82 '/<script\b[^>]*>.*?<\/script>/is',
83 '/<style\b[^>]*>.*?<\/style>/is',
84 ];
85 $post_data['post_content'] = preg_replace( $patterns, '', $post_content );
86 $post_type = 'gd_place';
87 $post_data['post_type'] = $post_type;
88
89 $post_data['post_status'] = $selected_options['post_status'] ? $selected_options['post_status'] : '';
90 $meta_array = [];
91
92 if ( ! empty( $selected_options['post_meta'] ) ) {
93 foreach ( $selected_options['post_meta'] as $meta ) {
94 $meta_key = $meta['metaKey'];
95 $meta_value = $meta['metaValue'];
96 $meta_array[ $meta_key ] = $meta_value;
97 }
98 $post_data['meta_input'] = $meta_array;
99 }
100 if ( isset( $selected_options['post_url'] ) && ! empty( $selected_options['post_url'] ) ) {
101 $url = $selected_options['post_url'];
102 $parts = explode( '/', $url );
103 $parts = array_values( array_filter( $parts ) );
104 $slug = end( $parts );
105 $post_exists = get_page_by_path( strval( $slug ), OBJECT, 'gd_place' );
106 if ( $post_exists ) {
107 $post_data['ID'] = $post_exists->ID;
108 wp_update_post( $post_data );
109 $post_details = static::gd_update_post( $post_exists->ID, $selected_options, true );
110 $post_data = get_post( $post_exists->ID );
111
112 return array_merge( (array) $post_data, $post_details );
113 } else {
114 return [
115 'status' => 'error',
116 'message' => 'The URL entered is incorrect. Please provide the correct URL for the post',
117 ];
118 }
119 }
120
121 $post_id = wp_insert_post( $post_data );
122 $post_data = (array) get_post( $post_id );
123 if ( ! $post_id ) {
124 $this->set_error(
125 [
126 'post_data' => $post_data,
127 'msg' => __( 'Failed to insert post!', 'suretriggers' ),
128
129 ]
130 );
131 return [];
132 }
133 $post_details = static::gd_update_post( $post_id, $selected_options, false );
134
135 $post_data = (array) get_post( $post_id );
136 return array_merge( $post_data, $post_details );
137 }
138
139 /**
140 * Update Place Table
141 *
142 * @param int $post_id post_id.
143 * @param array $gd_post post data.
144 * @param bool $update New or update.
145 *
146 * @return array
147 * @throws Exception Error.
148 */
149 public function gd_update_post( $post_id, $gd_post, $update ) {
150 global $wpdb;
151 unset( $gd_post['post_url'] );
152 $post_type = 'gd_place';
153 $postarr['post_id'] = $post_id;
154 $postarr['post_status'] = 'pending';
155 $place_category = array_column( $gd_post['place_category'], 'value' );
156 $postarr['post_category'] = implode( ',', $place_category );
157 $place_tag = array_column( $gd_post['place_tag'], 'value' );
158
159 wp_set_post_terms( $post_id, $place_tag, $post_type . '_tags', $update );
160 wp_set_post_terms( $post_id, $place_category, $post_type . 'category', $update );
161 $postarr['post_tags'] = implode( ',', $place_tag );
162 // Save location info.
163 $postarr = self::save_location( $gd_post, $postarr );
164
165 // Copy post_title to _search_title.
166 if ( isset( $gd_post['post_title'] ) ) {
167 $postarr['_search_title'] = $gd_post['post_title'];
168 }
169
170 $format = array_fill( 0, count( $postarr ), '%s' );
171
172 $wpdb->update(
173 "{$wpdb->prefix}geodir_gd_place_detail",
174 $postarr,
175 [ 'post_id' => $post_id ],
176 $format
177 );
178 return $postarr;
179 }
180
181 /**
182 * Save location info.
183 *
184 * @param array $gd_post post data.
185 * @param array $postarr post array.
186 *
187 * @return array
188 */
189 private function save_location( $gd_post, $postarr ) {
190 if ( isset( $gd_post['street'] ) ) {
191 $postarr['street'] = sanitize_text_field( stripslashes( $gd_post['street'] ) );
192 }
193 if ( isset( $gd_post['city'] ) ) {
194 $postarr['city'] = sanitize_text_field( stripslashes( $gd_post['city'] ) );
195 }
196 if ( isset( $gd_post['country'] ) ) {
197 $postarr['country'] = sanitize_text_field( stripslashes( $gd_post['country'] ) );
198 }
199 if ( isset( $gd_post['zip'] ) ) {
200 $postarr['zip'] = sanitize_text_field( stripslashes( $gd_post['zip'] ) );
201 }
202 if ( isset( $gd_post['latitude'] ) ) {
203 $postarr['latitude'] = sanitize_text_field( stripslashes( $gd_post['latitude'] ) );
204 }
205 if ( isset( $gd_post['longitude'] ) ) {
206 $postarr['longitude'] = sanitize_text_field( stripslashes( $gd_post['longitude'] ) );
207 }
208 return $postarr;
209 }
210
211
212
213 }
214
215 AddPlace::get_instance();
216