PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 7.9.8
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v7.9.8
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 7.8.7 All 46 releases
gamipress / integrations / wpforo / includes / triggers.php

triggers.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 7.9.8, at integrations/wpforo/includes/triggers.php

318 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 );