PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.5
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.5
8.0.5 8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 All 47 releases
← All changes | integrations/wpforo/includes/triggers.php +318 -0 7.8.8 → 8.0.5 View file →
@@ -1,0 +1,318 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\wpForo\Triggers
6 + * @since 1.0.0
7 + */
8 +// Exit if accessed directly
9 +if( !defined( 'ABSPATH' ) ) exit;
10 +
11 +/**
12 + * Register plugin specific triggers
13 + *
14 + * @param array $triggers
15 + * @return mixed
16 + */
17 +function gamipress_wpforo_activity_triggers( $triggers ) {
18 +
19 + $triggers[__( 'wpForo', 'gamipress' )] = array(
20 +
21 + // New post
22 + 'gamipress_wpforo_new_post' => __( 'Reply to a topic', 'gamipress' ),
23 + 'gamipress_wpforo_specific_topic_new_post' => __( 'Reply to a specific topic', 'gamipress' ),
24 + 'gamipress_wpforo_specific_forum_new_post' => __( 'Reply to a topic on a specific forum', 'gamipress' ),
25 + // New topic
26 + 'gamipress_wpforo_new_topic' => __( 'Create a new topic', 'gamipress' ),
27 + 'gamipress_wpforo_specific_forum_new_topic' => __( 'Create a new topic on a specific forum', 'gamipress' ),
28 + // Like post
29 + 'gamipress_wpforo_like_post' => __( 'Like a post', 'gamipress' ),
30 + 'gamipress_wpforo_specific_topic_like_post' => __( 'Like a post on a specific topic', 'gamipress' ),
31 + 'gamipress_wpforo_specific_forum_like_post' => __( 'Like a post on a specific forum', 'gamipress' ),
32 + 'gamipress_wpforo_user_like_post' => __( 'Get a like on a post', 'gamipress' ),
33 + // Dislike post
34 + 'gamipress_wpforo_dislike_post' => __( 'Dislike a post', 'gamipress' ),
35 + 'gamipress_wpforo_specific_topic_dislike_post' => __( 'Dislike a post on a specific topic', 'gamipress' ),
36 + 'gamipress_wpforo_specific_forum_dislike_post' => __( 'Dislike a post on a specific forum', 'gamipress' ),
37 + 'gamipress_wpforo_user_dislike_post' => __( 'Get a dislike on a post', 'gamipress' ),
38 + // Vote up a post
39 + 'gamipress_wpforo_vote_up_post' => __( 'Vote up a post', 'gamipress' ),
40 + 'gamipress_wpforo_specific_topic_vote_up_post' => __( 'Vote up a post on a specific topic', 'gamipress' ),
41 + 'gamipress_wpforo_specific_forum_vote_up_post' => __( 'Vote up a post on a specific forum', 'gamipress' ),
42 + 'gamipress_wpforo_user_vote_up_post' => __( 'Get a vote up on a post', 'gamipress' ),
43 + // Vote down a post
44 + 'gamipress_wpforo_vote_down_post' => __( 'Vote down a post', 'gamipress' ),
45 + 'gamipress_wpforo_specific_topic_vote_down_post' => __( 'Vote down a post on a specific topic', 'gamipress' ),
46 + 'gamipress_wpforo_specific_forum_vote_down_post' => __( 'Vote down a post on a specific forum', 'gamipress' ),
47 + 'gamipress_wpforo_user_vote_down_post' => __( 'Get a vote down on a post', 'gamipress' ),
48 + // Answer question
49 + 'gamipress_wpforo_answer_question' => __( 'Answer a question', 'gamipress' ),
50 + 'gamipress_wpforo_specific_forum_answer_question' => __( 'Answer a question of a specific forum', 'gamipress' ),
51 + 'gamipress_wpforo_user_answer_question' => __( 'Get a question answered', 'gamipress' ),
52 + // Delete post
53 + 'gamipress_wpforo_delete_post' => __( 'Delete a reply', 'gamipress' ),
54 + // Delete topic
55 + 'gamipress_wpforo_delete_topic' => __( 'Delete a topic', 'gamipress' ),
56 + );
57 +
58 + return $triggers;
59 +
60 +}
61 +add_filter( 'gamipress_activity_triggers', 'gamipress_wpforo_activity_triggers' );
62 +
63 +
64 +/**
65 + * Build custom activity trigger label
66 + *
67 + * @since 1.0.0
68 + *
69 + * @param string $title
70 + * @param integer $requirement_id
71 + * @param array $requirement
72 + *
73 + * @return string
74 + */
75 +function gamipress_wpforo_activity_trigger_label( $title, $requirement_id, $requirement ) {
76 +
77 + $forum_id = ( isset( $requirement['wpf_forum'] ) ) ? $requirement['wpf_forum'] : '';
78 + $topic_id = ( isset( $requirement['wpf_topic'] ) ) ? $requirement['wpf_topic'] : '';
79 +
80 + switch( $requirement['trigger_type'] ) {
81 +
82 + case 'gamipress_wpforo_specific_forum_new_post':
83 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
84 + return sprintf( __( 'Reply on %s forum', 'gamipress' ), $forum_title );
85 + break;
86 + case 'gamipress_wpforo_specific_forum_new_topic':
87 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
88 + return sprintf( __( 'Create a topic on %s forum', 'gamipress' ), $forum_title );
89 + break;
90 + case 'gamipress_wpforo_specific_forum_like_post':
91 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
92 + return sprintf( __( 'Like a post on %s forum', 'gamipress' ), $forum_title );
93 + break;
94 + case 'gamipress_wpforo_specific_forum_dislike_post':
95 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
96 + return sprintf( __( 'Dislike a post on %s forum', 'gamipress' ), $forum_title );
97 + break;
98 + case 'gamipress_wpforo_specific_forum_vote_up_post':
99 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
100 + return sprintf( __( 'Vote up a post on %s forum', 'gamipress' ), $forum_title );
101 + break;
102 + case 'gamipress_wpforo_specific_forum_vote_down_post':
103 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
104 + return sprintf( __( 'Vote down a post on %s forum', 'gamipress' ), $forum_title );
105 + break;
106 + case 'gamipress_wpforo_specific_forum_answer_question':
107 + $forum_title = gamipress_wpforo_get_forum_title( $forum_id );
108 + return sprintf( __( 'Answer question on %s forum', 'gamipress' ), $forum_title );
109 + break;
110 + // Topics
111 + case 'gamipress_wpforo_specific_topic_new_post':
112 + $topic_title = gamipress_wpforo_get_topic_title( $topic_id );
113 + return sprintf( __( 'Reply on %s topic', 'gamipress' ), $topic_title );
114 + break;
115 + case 'gamipress_wpforo_specific_topic_like_post':
116 + $topic_title = gamipress_wpforo_get_topic_title( $topic_id );
117 + return sprintf( __( 'Like a post on %s topic', 'gamipress' ), $topic_title );
118 + break;
119 + case 'gamipress_wpforo_specific_topic_dislike_post':
120 + $topic_title = gamipress_wpforo_get_topic_title( $topic_id );
121 + return sprintf( __( 'Dislike a post on %s topic', 'gamipress' ), $topic_title );
122 + break;
123 + case 'gamipress_wpforo_specific_topic_vote_up_post':
124 + $topic_title = gamipress_wpforo_get_topic_title( $topic_id );
125 + return sprintf( __( 'Vote up a post on %s topic', 'gamipress' ), $topic_title );
126 + break;
127 + case 'gamipress_wpforo_specific_topic_vote_down_post':
128 + $topic_title = gamipress_wpforo_get_topic_title( $topic_id );
129 + return sprintf( __( 'Vote down a post on %s topic', 'gamipress' ), $topic_title );
130 + break;
131 +
132 +
133 + }
134 +
135 + return $title;
136 +}
137 +add_filter( 'gamipress_activity_trigger_label', 'gamipress_wpforo_activity_trigger_label', 10, 3 );
138 +
139 +
140 +/**
141 + * Get user for a given trigger action.
142 + *
143 + * @since 1.0.0
144 + *
145 + * @param integer $user_id user ID to override.
146 + * @param string $trigger Trigger name.
147 + * @param array $args Passed trigger args.
148 + * @return integer User ID.
149 + */
150 +function gamipress_wpforo_trigger_get_user_id( $user_id, $trigger, $args ) {
151 +
152 + switch ( $trigger ) {
153 + // New post
154 + case 'gamipress_wpforo_new_post':
155 + case 'gamipress_wpforo_specific_topic_new_post':
156 + case 'gamipress_wpforo_specific_forum_new_post':
157 + // New topic
158 + case 'gamipress_wpforo_new_topic':
159 + case 'gamipress_wpforo_specific_forum_new_topic':
160 + // Like post
161 + case 'gamipress_wpforo_like_post':
162 + case 'gamipress_wpforo_specific_topic_like_post':
163 + case 'gamipress_wpforo_specific_forum_like_post':
164 + case 'gamipress_wpforo_user_like_post':
165 + // Dislike post
166 + case 'gamipress_wpforo_dislike_post':
167 + case 'gamipress_wpforo_specific_topic_dislike_post':
168 + case 'gamipress_wpforo_specific_forum_dislike_post':
169 + case 'gamipress_wpforo_user_dislike_post':
170 + // Vote up a post
171 + case 'gamipress_wpforo_vote_up_post':
172 + case 'gamipress_wpforo_specific_topic_vote_up_post':
173 + case 'gamipress_wpforo_specific_forum_vote_up_post':
174 + case 'gamipress_wpforo_user_vote_up_post':
175 + // Vote down a post
176 + case 'gamipress_wpforo_vote_down_post':
177 + case 'gamipress_wpforo_specific_topic_vote_down_post':
178 + case 'gamipress_wpforo_specific_forum_vote_down_post':
179 + case 'gamipress_wpforo_user_vote_down_post':
180 + // Answer question
181 + case 'gamipress_wpforo_answer_question':
182 + case 'gamipress_wpforo_specific_forum_answer_question':
183 + case 'gamipress_wpforo_user_answer_question':
184 + // Delete post
185 + case 'gamipress_wpforo_delete_post':
186 + // Delete topic
187 + case 'gamipress_wpforo_delete_topic':
188 + $user_id = $args[1];
189 + break;
190 + }
191 +
192 + return $user_id;
193 +
194 +}
195 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_wpforo_trigger_get_user_id', 10, 3);
196 +
197 +
198 +/**
199 + * Get the id for a given specific trigger action.
200 + *
201 + * @since 1.0.0
202 + *
203 + * @param integer $specific_id Specific ID.
204 + * @param string $trigger Trigger name.
205 + * @param array $args Passed trigger args.
206 + *
207 + * @return integer Specific ID.
208 + */
209 +function gamipress_wpforo_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
210 +
211 + switch ( $trigger ) {
212 + // Specific topic events
213 + // New post
214 + case 'gamipress_wpforo_specific_topic_new_post':
215 + // New topic
216 + case 'gamipress_wpforo_specific_forum_new_topic': // (Unique specific forum event that has specific ID on 2nd argument)
217 + // Like post
218 + case 'gamipress_wpforo_specific_topic_like_post':
219 + // Dislike post
220 + case 'gamipress_wpforo_specific_topic_dislike_post':
221 + // Vote up a post
222 + case 'gamipress_wpforo_specific_topic_vote_up_post':
223 + // Vote down a post
224 + case 'gamipress_wpforo_specific_topic_vote_down_post':
225 + $specific_id = $args[2];
226 + break;
227 + // Specific forum events
228 + // New post
229 + case 'gamipress_wpforo_specific_forum_new_post':
230 + // Like post
231 + case 'gamipress_wpforo_specific_forum_like_post':
232 + // Dislike post
233 + case 'gamipress_wpforo_specific_forum_dislike_post':
234 + // Vote up a post
235 + case 'gamipress_wpforo_specific_forum_vote_up_post':
236 + // Vote down a post
237 + case 'gamipress_wpforo_specific_forum_vote_down_post':
238 + // Answer question
239 + case 'gamipress_wpforo_specific_forum_answer_question':
240 +
241 + $specific_id = $args[3];
242 + break;
243 + }
244 +
245 + return $specific_id;
246 +}
247 +add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_wpforo_specific_trigger_get_id', 10, 3 );
248 +
249 +/**
250 + * Extended meta data for event trigger logging
251 + *
252 + * @since 1.0.0
253 + *
254 + * @param array $log_meta
255 + * @param integer $user_id
256 + * @param string $trigger
257 + * @param integer $site_id
258 + * @param array $args
259 + *
260 + * @return array
261 + */
262 +function gamipress_wpforo_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
263 +
264 + switch ( $trigger ) {
265 + // New post
266 + case 'gamipress_wpforo_new_post':
267 + case 'gamipress_wpforo_specific_topic_new_post':
268 + case 'gamipress_wpforo_specific_forum_new_post':
269 + // Like post
270 + case 'gamipress_wpforo_like_post':
271 + case 'gamipress_wpforo_specific_topic_like_post':
272 + case 'gamipress_wpforo_specific_forum_like_post':
273 + case 'gamipress_wpforo_user_like_post':
274 + // Dislike post
275 + case 'gamipress_wpforo_dislike_post':
276 + case 'gamipress_wpforo_specific_topic_dislike_post':
277 + case 'gamipress_wpforo_specific_forum_dislike_post':
278 + case 'gamipress_wpforo_user_dislike_post':
279 + // Vote up a post
280 + case 'gamipress_wpforo_vote_up_post':
281 + case 'gamipress_wpforo_specific_topic_vote_up_post':
282 + case 'gamipress_wpforo_specific_forum_vote_up_post':
283 + case 'gamipress_wpforo_user_vote_up_post':
284 + // Vote down a post
285 + case 'gamipress_wpforo_vote_down_post':
286 + case 'gamipress_wpforo_specific_topic_vote_down_post':
287 + case 'gamipress_wpforo_specific_forum_vote_down_post':
288 + case 'gamipress_wpforo_user_vote_down_post':
289 + // Delete post
290 + case 'gamipress_wpforo_delete_post':
291 + // Add the reply (post), topic and forum IDs
292 + $log_meta['reply_id'] = $args[0];
293 + $log_meta['topic_id'] = $args[2];
294 + $log_meta['forum_id'] = $args[3];
295 + break;
296 + // Answer question
297 + case 'gamipress_wpforo_answer_question':
298 + case 'gamipress_wpforo_specific_forum_answer_question':
299 + case 'gamipress_wpforo_user_answer_question':
300 + // Add the question (topic), answer (post) and forum IDs
301 + $log_meta['question_id'] = $args[0];
302 + $log_meta['answer_id'] = $args[2];
303 + $log_meta['forum_id'] = $args[3];
304 + break;
305 + // New topic
306 + case 'gamipress_wpforo_new_topic':
307 + case 'gamipress_wpforo_specific_forum_new_topic':
308 + // Delete topic
309 + case 'gamipress_wpforo_delete_topic':
310 + // Add the topic and forum IDs
311 + $log_meta['topic_id'] = $args[0];
312 + $log_meta['forum_id'] = $args[2];
313 + break;
314 + }
315 +
316 + return $log_meta;
317 +}
318 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_wpforo_log_event_trigger_meta_data', 10, 5 );