PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.6
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.6
8.0.6 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 All 48 releases
← All changes | integrations/asgaros-forum/includes/triggers.php +240 -0 7.9.2 → 8.0.6 View file →
@@ -1,0 +1,240 @@
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 );