PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / voxel / triggers / taxonomy-updated.php
suretriggers / src / Integrations / voxel / triggers Last commit date
collection-post-created.php 2 years ago collection-post-updated.php 2 years ago comment-reply-created-timeline.php 2 years ago membership-plan-activated.php 10 months ago membership-plan-canceled.php 10 months ago membership-plan-switched.php 10 months ago membership-plan-updated.php 10 months ago membership-user-registered.php 2 years ago new-comment-timeline.php 2 years ago new-message-post-created.php 1 year ago new-order-placed.php 2 years ago new-profile-created.php 2 years ago new-wall-post-by-user.php 1 year ago order-approved-by-vendor.php 2 years ago order-canceled-by-customer.php 2 years ago order-declined-by-vendor.php 2 years ago orders-claim-listing.php 1 year ago orders-promotion-activated.php 1 year ago orders-promotion-canceled.php 1 year ago post-approved.php 2 years ago post-rejected.php 2 years ago post-review-approved.php 1 year ago post-reviewed.php 2 years ago post-submitted.php 2 years ago post-updated.php 2 years ago profile-approved.php 2 years ago profile-rejected.php 2 years ago profile-reviewed.php 1 year ago profile-updated.php 2 years ago profile-wall-new-post.php 1 year ago taxonomy-updated.php 10 months ago timeline-post-approved.php 1 year ago user-receives-message.php 2 years ago users-timeline-approved.php 1 year ago users-timeline-created.php 1 year ago voxel-comment-liked.php 1 year ago voxel-post-followed.php 1 year ago voxel-post-liked.php 1 year ago voxel-post-quoted.php 1 year ago voxel-post-reposted.php 1 year ago voxel-post-unfollowed.php 1 year ago voxel-user-mentioned-in-comment.php 1 year ago voxel-user-mentioned-in-post.php 1 year ago wall-post-approved.php 1 year ago
taxonomy-updated.php
207 lines
1 <?php
2 /**
3 * TaxonomyUpdated.
4 * php version 5.6
5 *
6 * @category TaxonomyUpdated
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\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Integrations\Voxel\Voxel;
20
21 if ( ! class_exists( 'TaxonomyUpdated' ) ) :
22
23 /**
24 * TaxonomyUpdated
25 *
26 * @category TaxonomyUpdated
27 * @package SureTriggers
28 * @author BSF <username@example.com>
29 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
30 * @link https://www.brainstormforce.com/
31 * @since 1.0.0
32 *
33 * @psalm-suppress UndefinedTrait
34 */
35 class TaxonomyUpdated {
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'Voxel';
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'voxel_taxonomy_updated';
50
51 use SingletonLoader;
52
53 /**
54 * Constructor
55 *
56 * @since 1.0.0
57 */
58 public function __construct() {
59 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
60 add_action( 'set_object_terms', [ $this, 'trigger_listener' ], 10, 6 );
61 }
62
63 /**
64 * Register action.
65 *
66 * @param array $triggers trigger data.
67 * @return array
68 */
69 public function register( $triggers ) {
70 $triggers[ $this->integration ][ $this->trigger ] = [
71 'label' => __( 'Taxonomy Updated', 'suretriggers' ),
72 'action' => $this->trigger,
73 'function' => [ $this, 'trigger_listener' ],
74 'priority' => 10,
75 'accepted_args' => 6,
76 ];
77
78 return $triggers;
79 }
80
81 /**
82 * Trigger listener
83 *
84 * @param int $object_id Object ID.
85 * @param array $terms An array of object terms.
86 * @param array $tt_ids An array of term taxonomy IDs.
87 * @param string $taxonomy Taxonomy slug.
88 * @param bool $append Whether to append new terms to the old terms.
89 * @param array $old_tt_ids Old array of term taxonomy IDs.
90 * @return void
91 */
92 public function trigger_listener( $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids ) {
93 $post_type = get_post_type( $object_id );
94 if ( false === $post_type || ( 'post' !== $post_type && ! post_type_exists( $post_type ) ) ) {
95 return;
96 }
97
98 if ( ! class_exists( 'Voxel\Post' ) || ! class_exists( 'Voxel\Post_Type' ) ) {
99 return;
100 }
101
102 $post = \Voxel\Post::force_get( $object_id );
103 if ( ! $post ) {
104 return;
105 }
106
107 $post_type_string = get_post_type( $object_id );
108 $post_type_obj = \Voxel\Post_Type::get( $post_type_string );
109 if ( ! $post_type_obj ) {
110 return;
111 }
112
113 if ( $tt_ids === $old_tt_ids ) {
114 return;
115 }
116
117 $context = WordPress::get_post_context( $object_id );
118 $context['post'] = Voxel::get_post_fields( $object_id );
119 $context['post_type'] = $post_type_string;
120
121 $context['taxonomy'] = $taxonomy;
122 $context['terms_added'] = array_diff( $tt_ids, $old_tt_ids );
123 $context['terms_removed'] = array_diff( $old_tt_ids, $tt_ids );
124 $context['current_terms'] = $tt_ids;
125 $context['previous_terms'] = $old_tt_ids;
126
127 $added_terms = [];
128 foreach ( $context['terms_added'] as $term_id ) {
129 $term = get_term( $term_id );
130 if ( $term && ! is_wp_error( $term ) ) {
131 $added_terms[] = [
132 'term_id' => $term->term_id,
133 'name' => $term->name,
134 'slug' => $term->slug,
135 ];
136 }
137 }
138 $context['added_terms_details'] = $added_terms;
139
140 $removed_terms = [];
141 foreach ( $context['terms_removed'] as $term_id ) {
142 $term = get_term( $term_id );
143 if ( $term && ! is_wp_error( $term ) ) {
144 $removed_terms[] = [
145 'term_id' => $term->term_id,
146 'name' => $term->name,
147 'slug' => $term->slug,
148 ];
149 }
150 }
151 $context['removed_terms_details'] = $removed_terms;
152
153 $current_terms = [];
154 foreach ( $context['current_terms'] as $term_id ) {
155 $term = get_term( $term_id );
156 if ( $term && ! is_wp_error( $term ) ) {
157 $current_terms[] = [
158 'term_id' => $term->term_id,
159 'name' => $term->name,
160 'slug' => $term->slug,
161 ];
162 }
163 }
164 $context['current_terms_details'] = $current_terms;
165
166 $post_fields = $post_type_obj->get_fields();
167 $voxel_taxonomy_field = null;
168
169 foreach ( $post_fields as $field ) {
170 $field_props = $field->get_props();
171 if ( isset( $field_props['type'] ) && 'taxonomy' === $field_props['type'] ) {
172 if ( isset( $field_props['taxonomy'] ) && $field_props['taxonomy'] === $taxonomy ) {
173 $voxel_taxonomy_field = $field_props;
174 break;
175 }
176 }
177 }
178
179 $context['is_voxel_taxonomy_field'] = ! is_null( $voxel_taxonomy_field );
180 $context['voxel_field_data'] = $voxel_taxonomy_field;
181
182 $update_type = 'updated';
183 if ( empty( $context['terms_removed'] ) && ! empty( $context['terms_added'] ) ) {
184 $update_type = 'added';
185 } elseif ( ! empty( $context['terms_removed'] ) && empty( $context['terms_added'] ) ) {
186 $update_type = 'removed';
187 }
188 $context['update_type'] = $update_type;
189
190 AutomationController::sure_trigger_handle_trigger(
191 [
192 'trigger' => $this->trigger,
193 'context' => $context,
194 ]
195 );
196 }
197 }
198
199 /**
200 * Ignore false positive
201 *
202 * @psalm-suppress UndefinedMethod
203 */
204 TaxonomyUpdated::get_instance();
205
206 endif;
207