PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
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 / geo-directory / Triggers / listing-added.php
suretriggers / src / Integrations / geo-directory / Triggers Last commit date
claim-approved.php 1 year ago claim-rejected.php 1 year ago claimed-listing-added.php 1 year ago listing-added.php 1 year ago upgraded-listing.php 1 year ago
listing-added.php
205 lines
1 <?php
2 /**
3 * ListingAdded
4 *
5 * @package SureTriggers
6 * @category Integration
7 * @author BSF
8 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
9 * @link https://www.brainstormforce.com/
10 * @since 1.0.0
11 */
12
13 namespace SureTriggers\Integrations\GeoDirectory\Triggers;
14
15 use SureTriggers\Controllers\AutomationController;
16 use SureTriggers\Traits\SingletonLoader;
17 use SureTriggers\Integrations\WordPress\WordPress;
18
19 if ( ! class_exists( 'ListingAdded' ) ) :
20
21 /**
22 * ListingAdded
23 *
24 * @category ListingAdded
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class ListingAdded {
32
33 use SingletonLoader;
34
35 /**
36 * Integration name.
37 *
38 * @var string
39 */
40 public $integration = 'GeoDirectory';
41
42 /**
43 * Trigger name.
44 *
45 * @var string
46 */
47 public $trigger = 'geodir_listing_added';
48
49 /**
50 * Constructor.
51 */
52 public function __construct() {
53 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
54 }
55
56 /**
57 * Register trigger.
58 *
59 * @param array $triggers Registered triggers.
60 * @return array Modified triggers.
61 */
62 public function register( $triggers ) {
63 $triggers[ $this->integration ][ $this->trigger ] = [
64 'label' => __( 'New Place Listing Added', 'suretriggers' ),
65 'action' => $this->trigger,
66 'common_action' => 'geodir_post_published',
67 'function' => [ $this, 'trigger_listener' ],
68 'priority' => 10,
69 'accepted_args' => 2,
70 ];
71
72 return $triggers;
73 }
74
75 /**
76 * Trigger listener.
77 *
78 * @param object $gd_post GeoDirectory post object.
79 * @param array $data Post metadata.
80 * @return void
81 */
82 public function trigger_listener( $gd_post, $data ) {
83 if ( empty( $gd_post ) || empty( $gd_post->ID ) ) {
84 return;
85 }
86
87 $post_id = absint( $gd_post->ID );
88 if ( ! $post_id ) {
89 return;
90 }
91
92 $post = get_post( $post_id );
93 if ( ! $post ) {
94 return;
95 }
96
97 $post_type = $post->post_type;
98
99 if ( ! function_exists( 'geodir_is_gd_post_type' ) || ! geodir_is_gd_post_type( $post_type ) ) {
100 return;
101 }
102
103 $user_id = absint( $post->post_author );
104 $user = WordPress::get_user_context( $user_id );
105
106 $description = $post->post_content;
107
108 $categories = [];
109 $cat_taxonomy = $post_type . 'category';
110 if ( taxonomy_exists( $cat_taxonomy ) ) {
111 $terms = wp_get_post_terms( $post_id, $cat_taxonomy );
112 if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) {
113 foreach ( $terms as $term ) {
114 $categories[] = $term->name;
115 }
116 }
117 }
118
119 $tags = [];
120 $tag_taxonomy = $post_type . '_tags';
121 if ( taxonomy_exists( $tag_taxonomy ) ) {
122 $terms = wp_get_post_terms( $post_id, $tag_taxonomy );
123 if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) {
124 foreach ( $terms as $term ) {
125 $tags[] = $term->name;
126 }
127 }
128 }
129
130 $attachments = [];
131 if ( function_exists( 'geodir_get_images' ) ) {
132 $images = geodir_get_images( $post_id );
133 if ( ! empty( $images ) ) {
134 foreach ( $images as $image ) {
135 if ( ! empty( $image->file ) ) {
136 $attachments[] = $image->file;
137 }
138 }
139 }
140 }
141
142 $address = '';
143 $country = '';
144 $region = '';
145 $city = '';
146 $postal_code = '';
147 $latitude = '';
148 $longitude = '';
149
150 if ( isset( $gd_post->street ) ) {
151 $address = $gd_post->street;
152 }
153 if ( isset( $gd_post->country ) ) {
154 $country = $gd_post->country;
155 }
156 if ( isset( $gd_post->region ) ) {
157 $region = $gd_post->region;
158 }
159 if ( isset( $gd_post->city ) ) {
160 $city = $gd_post->city;
161 }
162 if ( isset( $gd_post->zip ) ) {
163 $postal_code = $gd_post->zip;
164 }
165 if ( isset( $gd_post->latitude ) ) {
166 $latitude = $gd_post->latitude;
167 }
168 if ( isset( $gd_post->longitude ) ) {
169 $longitude = $gd_post->longitude;
170 }
171
172 $context = array_merge(
173 $user,
174 [
175 'listing_id' => $post_id,
176 'listing_title' => $post->post_title,
177 'listing_type' => $post_type,
178 'listing_url' => get_permalink( $post_id ),
179 'description' => $description,
180 'categories' => $categories,
181 'tags' => $tags,
182 'attachments' => $attachments,
183 'address' => $address,
184 'country' => $country,
185 'region' => $region,
186 'city' => $city,
187 'postal_code' => $postal_code,
188 'latitude' => $latitude,
189 'longitude' => $longitude,
190 ]
191 );
192
193 AutomationController::sure_trigger_handle_trigger(
194 [
195 'trigger' => $this->trigger,
196 'context' => $context,
197 ]
198 );
199 }
200 }
201
202 ListingAdded::get_instance();
203
204 endif;
205