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 / asgaros-forum / includes / triggers.php

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

240 lines 9.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\Asgaros_Forum\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_asgaros_forum_activity_triggers( $triggers ) {
18
19 $triggers[__( 'Asgaros Forum', 'gamipress' )] = array(
20
21 // New post
22 'gamipress_asgaros_forum_new_post' => __( 'Reply to a topic', 'gamipress' ),
23 'gamipress_asgaros_forum_specific_topic_new_post' => __( 'Reply to a specific topic', 'gamipress' ),
24 'gamipress_asgaros_forum_specific_forum_new_post' => __( 'Reply to a topic on a specific forum', 'gamipress' ),
25 // New topic
26 'gamipress_asgaros_forum_new_topic' => __( 'Create a new topic', 'gamipress' ),
27 'gamipress_asgaros_forum_specific_forum_new_topic' => __( 'Create a new topic on a specific forum', 'gamipress' ),
28 // Like post
29 'gamipress_asgaros_forum_like_post' => __( 'Like a post', 'gamipress' ),
30 'gamipress_asgaros_forum_specific_topic_like_post' => __( 'Like a post on a specific topic', 'gamipress' ),
31 'gamipress_asgaros_forum_specific_forum_like_post' => __( 'Like a post on a specific forum', 'gamipress' ),
32 'gamipress_asgaros_forum_user_like_post' => __( 'Get a like on a post', 'gamipress' ),
33 // Dislike post
34 'gamipress_asgaros_forum_dislike_post' => __( 'Dislike a post', 'gamipress' ),
35 'gamipress_asgaros_forum_specific_topic_dislike_post' => __( 'Dislike a post on a specific topic', 'gamipress' ),
36 'gamipress_asgaros_forum_specific_forum_dislike_post' => __( 'Dislike a post on a specific forum', 'gamipress' ),
37 'gamipress_asgaros_forum_user_dislike_post' => __( 'Get a dislike on a post', 'gamipress' ),
38
39 // Delete post
40 'gamipress_asgaros_forum_delete_post' => __( 'Delete a reply', 'gamipress' ),
41 // Delete topic
42 'gamipress_asgaros_forum_delete_topic' => __( 'Delete a topic', 'gamipress' ),
43 );
44
45 return $triggers;
46
47 }
48 add_filter( 'gamipress_activity_triggers', 'gamipress_asgaros_forum_activity_triggers' );
49
50
51 /**
52 * Build custom activity trigger label
53 *
54 * @since 1.0.0
55 *
56 * @param string $title
57 * @param integer $requirement_id
58 * @param array $requirement
59 *
60 * @return string
61 */
62 function gamipress_asgaros_forum_activity_trigger_label( $title, $requirement_id, $requirement ) {
63
64 $forum_id = ( isset( $requirement['asgaros_forum'] ) ) ? $requirement['asgaros_forum'] : '';
65 $topic_id = ( isset( $requirement['asgaros_topic'] ) ) ? $requirement['asgaros_topic'] : '';
66
67 switch( $requirement['trigger_type'] ) {
68
69 case 'gamipress_asgaros_forum_specific_forum_new_post':
70 $forum_title = gamipress_asgaros_forum_get_forum_title( $forum_id );
71 return sprintf( __( 'Reply on %s forum', 'gamipress' ), $forum_title );
72 break;
73 case 'gamipress_asgaros_forum_specific_forum_new_topic':
74 $forum_title = gamipress_asgaros_forum_get_forum_title( $forum_id );
75 return sprintf( __( 'Create a topic on %s forum', 'gamipress' ), $forum_title );
76 break;
77 case 'gamipress_asgaros_forum_specific_forum_like_post':
78 $forum_title = gamipress_asgaros_forum_get_forum_title( $forum_id );
79 return sprintf( __( 'Like a post on %s forum', 'gamipress' ), $forum_title );
80 break;
81 case 'gamipress_asgaros_forum_specific_forum_dislike_post':
82 $forum_title = gamipress_asgaros_forum_get_forum_title( $forum_id );
83 return sprintf( __( 'Dislike a post on %s forum', 'gamipress' ), $forum_title );
84 break;
85 // Topics
86 case 'gamipress_asgaros_forum_specific_topic_new_post':
87 $topic_title = gamipress_asgaros_forum_get_topic_title( $topic_id );
88 return sprintf( __( 'Reply on %s topic', 'gamipress' ), $topic_title );
89 break;
90 case 'gamipress_asgaros_forum_specific_topic_like_post':
91 $topic_title = gamipress_asgaros_forum_get_topic_title( $topic_id );
92 return sprintf( __( 'Like a post on %s topic', 'gamipress' ), $topic_title );
93 break;
94 case 'gamipress_asgaros_forum_specific_topic_dislike_post':
95 $topic_title = gamipress_asgaros_forum_get_topic_title( $topic_id );
96 return sprintf( __( 'Dislike a post on %s topic', 'gamipress' ), $topic_title );
97 break;
98
99 }
100
101 return $title;
102 }
103 add_filter( 'gamipress_activity_trigger_label', 'gamipress_asgaros_forum_activity_trigger_label', 10, 3 );
104
105
106 /**
107 * Get user for a given trigger action.
108 *
109 * @since 1.0.0
110 *
111 * @param integer $user_id user ID to override.
112 * @param string $trigger Trigger name.
113 * @param array $args Passed trigger args.
114 * @return integer User ID.
115 */
116 function gamipress_asgaros_forum_trigger_get_user_id( $user_id, $trigger, $args ) {
117
118 switch ( $trigger ) {
119 // New post
120 case 'gamipress_asgaros_forum_new_post':
121 case 'gamipress_asgaros_forum_specific_topic_new_post':
122 case 'gamipress_asgaros_forum_specific_forum_new_post':
123 // New topic
124 case 'gamipress_asgaros_forum_new_topic':
125 case 'gamipress_asgaros_forum_specific_forum_new_topic':
126 // Like post
127 case 'gamipress_asgaros_forum_like_post':
128 case 'gamipress_asgaros_forum_specific_topic_like_post':
129 case 'gamipress_asgaros_forum_specific_forum_like_post':
130 case 'gamipress_asgaros_forum_user_like_post':
131 // Dislike post
132 case 'gamipress_asgaros_forum_dislike_post':
133 case 'gamipress_asgaros_forum_specific_topic_dislike_post':
134 case 'gamipress_asgaros_forum_specific_forum_dislike_post':
135 case 'gamipress_asgaros_forum_user_dislike_post':
136 // Delete post
137 case 'gamipress_asgaros_forum_delete_post':
138 // Delete topic
139 case 'gamipress_asgaros_forum_delete_topic':
140 $user_id = $args[1];
141 break;
142 }
143
144 return $user_id;
145
146 }
147 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_asgaros_forum_trigger_get_user_id', 10, 3);
148
149
150 /**
151 * Get the id for a given specific trigger action.
152 *
153 * @since 1.0.0
154 *
155 * @param integer $specific_id Specific ID.
156 * @param string $trigger Trigger name.
157 * @param array $args Passed trigger args.
158 *
159 * @return integer Specific ID.
160 */
161 function gamipress_asgaros_forum_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
162
163 switch ( $trigger ) {
164 // Specific topic events
165 // New post
166 case 'gamipress_asgaros_forum_specific_topic_new_post':
167 // New topic
168 case 'gamipress_asgaros_forum_specific_forum_new_topic': // (Unique specific forum event that has specific ID on 2nd argument)
169 // Like post
170 case 'gamipress_asgaros_forum_specific_topic_like_post':
171 // Dislike post
172 case 'gamipress_asgaros_forum_specific_topic_dislike_post':
173 $specific_id = $args[2];
174 break;
175 // Specific forum events
176 // New post
177 case 'gamipress_asgaros_forum_specific_forum_new_post':
178 // Like post
179 case 'gamipress_asgaros_forum_specific_forum_like_post':
180 // Dislike post
181 case 'gamipress_asgaros_forum_specific_forum_dislike_post':
182 $specific_id = $args[3];
183 break;
184 }
185
186 return $specific_id;
187 }
188 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_asgaros_forum_specific_trigger_get_id', 10, 3 );
189
190 /**
191 * Extended meta data for event trigger logging
192 *
193 * @since 1.0.0
194 *
195 * @param array $log_meta
196 * @param integer $user_id
197 * @param string $trigger
198 * @param integer $site_id
199 * @param array $args
200 *
201 * @return array
202 */
203 function gamipress_asgaros_forum_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
204
205 switch ( $trigger ) {
206 // New post
207 case 'gamipress_asgaros_forum_new_post':
208 case 'gamipress_asgaros_forum_specific_topic_new_post':
209 case 'gamipress_asgaros_forum_specific_forum_new_post':
210 // Like post
211 case 'gamipress_asgaros_forum_like_post':
212 case 'gamipress_asgaros_forum_specific_topic_like_post':
213 case 'gamipress_asgaros_forum_specific_forum_like_post':
214 case 'gamipress_asgaros_forum_user_like_post':
215 // Dislike post
216 case 'gamipress_asgaros_forum_dislike_post':
217 case 'gamipress_asgaros_forum_specific_topic_dislike_post':
218 case 'gamipress_asgaros_forum_specific_forum_dislike_post':
219 case 'gamipress_asgaros_forum_user_dislike_post':
220 // Delete post
221 case 'gamipress_asgaros_forum_delete_post':
222 // Add the reply (post), topic and forum IDs
223 $log_meta['reply_id'] = $args[0];
224 $log_meta['topic_id'] = $args[2];
225 $log_meta['forum_id'] = $args[3];
226 break;
227 // New topic
228 case 'gamipress_asgaros_forum_new_topic':
229 case 'gamipress_asgaros_forum_specific_forum_new_topic':
230 // Delete topic
231 case 'gamipress_asgaros_forum_delete_topic':
232 // Add the topic and forum IDs
233 $log_meta['topic_id'] = $args[0];
234 $log_meta['forum_id'] = $args[2];
235 break;
236 }
237
238 return $log_meta;
239 }
240 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_asgaros_forum_log_event_trigger_meta_data', 10, 5 );