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/simplepress/includes/triggers.php +245 -0 7.9.4 → 8.0.5 View file →
@@ -1,0 +1,245 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\SimpePress\Triggers
6 + * @since 1.0.0
7 + */
8 +
9 +// Exit if accessed directly
10 +if( !defined( 'ABSPATH' ) ) exit;
11 +
12 +/**
13 + * Register plugin specific triggers
14 + *
15 + * @param array $triggers
16 + * @return mixed
17 + */
18 +function gamipress_simplepress_activity_triggers( $triggers ) {
19 +
20 + $triggers[__( 'Simple:Press', 'gamipress' )] = array(
21 + // New topic
22 + 'gamipress_simplepress_new_topic' => __( 'Create a new topic', 'gamipress' ),
23 + 'gamipress_simplepress_specific_forum_new_topic' => __( 'Create a new topic on a specific forum', 'gamipress' ),
24 + // New Reply
25 + 'gamipress_simplepress_new_reply' => __( 'Reply to a topic', 'gamipress' ),
26 + 'gamipress_simplepress_specific_topic_new_reply' => __( 'Reply to a specific topic', 'gamipress' ),
27 + 'gamipress_simplepress_specific_forum_new_reply' => __( 'Reply to a topic on a specific forum', 'gamipress' ),
28 + // Delete topic
29 + 'gamipress_simplepress_delete_topic' => __( 'Delete a topic', 'gamipress' ),
30 + 'gamipress_simplepress_specific_forum_delete_topic' => __( 'Delete a topic on a specific forum', 'gamipress' ),
31 + // Delete Reply
32 + 'gamipress_simplepress_delete_reply' => __( 'Delete a reply', 'gamipress' ),
33 + 'gamipress_simplepress_specific_topic_delete_reply' => __( 'Delete a reply of a specific topic', 'gamipress' ),
34 + 'gamipress_simplepress_specific_forum_delete_reply' => __( 'Delete a reply of a specific forum', 'gamipress' ),
35 + );
36 +
37 + return $triggers;
38 +
39 +}
40 +add_filter( 'gamipress_activity_triggers', 'gamipress_simplepress_activity_triggers' );
41 +
42 +/**
43 + * Register plugin specific activity triggers
44 + *
45 + * @since 1.0.0
46 + *
47 + * @param array $specific_activity_triggers
48 + * @return array
49 + */
50 +function gamipress_simplepress_specific_activity_triggers( $specific_activity_triggers ) {
51 +
52 + // New topic
53 + $specific_activity_triggers['gamipress_simplepress_specific_forum_new_topic'] = array( 'simplepress_forum' );
54 + // New Reply
55 + $specific_activity_triggers['gamipress_simplepress_specific_topic_new_reply'] = array( 'simplepress_topic' );
56 + $specific_activity_triggers['gamipress_simplepress_specific_forum_new_reply'] = array( 'simplepress_forum' );
57 + // Delete topic
58 + $specific_activity_triggers['gamipress_simplepress_specific_forum_delete_topic'] = array( 'simplepress_forum' );
59 + // Delete Reply
60 + $specific_activity_triggers['gamipress_simplepress_specific_topic_delete_reply'] = array( 'simplepress_topic' );
61 + $specific_activity_triggers['gamipress_simplepress_specific_forum_delete_reply'] = array( 'simplepress_forum' );
62 +
63 + return $specific_activity_triggers;
64 +}
65 +add_filter( 'gamipress_specific_activity_triggers', 'gamipress_simplepress_specific_activity_triggers' );
66 +
67 +/**
68 + * Register plugin specific activity triggers labels
69 + *
70 + * @since 1.0.0
71 + *
72 + * @param array $specific_activity_trigger_labels
73 + * @return array
74 + */
75 +function gamipress_simplepress_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
76 +
77 + // New topic
78 + $specific_activity_trigger_labels['gamipress_simplepress_specific_forum_new_topic'] = __( 'Create a topic on %s forum', 'gamipress' );
79 + // New Reply
80 + $specific_activity_trigger_labels['gamipress_simplepress_specific_topic_new_reply'] = __( 'Reply on %s topic', 'gamipress' );
81 + $specific_activity_trigger_labels['gamipress_simplepress_specific_forum_new_reply'] = __( 'Reply on %s forum', 'gamipress' );
82 + // Delete topic
83 + $specific_activity_trigger_labels['gamipress_simplepress_specific_forum_delete_topic'] = __( 'Delete a topic on %s forum', 'gamipress' );
84 + // Delete Reply
85 + $specific_activity_trigger_labels['gamipress_simplepress_specific_topic_delete_reply'] = __( 'Delete a reply on %s topic', 'gamipress' );
86 + $specific_activity_trigger_labels['gamipress_simplepress_specific_forum_delete_reply'] = __( 'Delete a reply on %s forum', 'gamipress' );
87 +
88 +
89 +
90 + return $specific_activity_trigger_labels;
91 +}
92 +add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_simplepress_specific_activity_trigger_label' );
93 +
94 +/**
95 + * Get plugin specific activity trigger post title
96 + *
97 + * @since 1.0.0
98 + *
99 + * @param string $post_title
100 + * @param int $specific_id
101 + * @param string $trigger_type
102 + * @param int $site_id
103 + * @return string
104 + */
105 +function gamipress_simplepress_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type, $site_id ) {
106 +
107 + global $wpdb;
108 +
109 + switch( $trigger_type ) {
110 + // Forum title
111 + case 'gamipress_simplepress_specific_forum_new_topic':
112 + case 'gamipress_simplepress_specific_forum_new_reply':
113 + case 'gamipress_simplepress_specific_forum_delete_topic':
114 + case 'gamipress_simplepress_specific_forum_delete_reply':
115 + if( absint( $specific_id ) !== 0 ) {
116 + $post_title = gamipress_simplepress_get_forum_title( $specific_id );
117 + }
118 + break;
119 + // Topic title
120 + case 'gamipress_simplepress_specific_topic_new_reply':
121 + case 'gamipress_simplepress_specific_topic_delete_reply':
122 + if( absint( $specific_id ) !== 0 ) {
123 + $post_title = gamipress_simplepress_get_topic_title( $specific_id );
124 + }
125 + break;
126 + }
127 +
128 + return $post_title;
129 +
130 +}
131 +add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_simplepress_specific_activity_trigger_post_title', 10, 4 );
132 +
133 +/**
134 + * Get user for a given trigger action.
135 + *
136 + * @since 1.0.0
137 + *
138 + * @param integer $user_id user ID to override.
139 + * @param string $trigger Trigger name.
140 + * @param array $args Passed trigger args.
141 + * @return integer User ID.
142 + */
143 +function gamipress_simplepress_trigger_get_user_id( $user_id, $trigger, $args ) {
144 +
145 + switch ( $trigger ) {
146 + // New topic
147 + case 'gamipress_simplepress_new_topic':
148 + case 'gamipress_simplepress_specific_forum_new_topic':
149 + // New Reply
150 + case 'gamipress_simplepress_new_reply':
151 + case 'gamipress_simplepress_specific_topic_new_reply':
152 + case 'gamipress_simplepress_specific_forum_new_reply':
153 + // Delete topic
154 + case 'gamipress_simplepress_delete_topic':
155 + case 'gamipress_simplepress_specific_forum_delete_topic':
156 + // Delete Reply
157 + case 'gamipress_simplepress_delete_reply':
158 + case 'gamipress_simplepress_specific_topic_delete_reply':
159 + case 'gamipress_simplepress_specific_forum_delete_reply':
160 + $user_id = $args[1];
161 + break;
162 + }
163 +
164 + return $user_id;
165 +
166 +}
167 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_simplepress_trigger_get_user_id', 10, 3);
168 +
169 +
170 +/**
171 + * Get the id for a given specific trigger action.
172 + *
173 + * @since 1.0.0
174 + *
175 + * @param integer $specific_id Specific ID.
176 + * @param string $trigger Trigger name.
177 + * @param array $args Passed trigger args.
178 + *
179 + * @return integer Specific ID.
180 + */
181 +function gamipress_simplepress_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
182 +
183 + switch ( $trigger ) {
184 + // New topic
185 + case 'gamipress_simplepress_specific_forum_new_topic':
186 + // New Reply
187 + case 'gamipress_simplepress_specific_topic_new_reply':
188 + case 'gamipress_simplepress_specific_forum_new_reply':
189 + // Delete topic
190 + case 'gamipress_simplepress_specific_forum_delete_topic':
191 + // Delete Reply
192 + case 'gamipress_simplepress_specific_topic_delete_reply':
193 + case 'gamipress_simplepress_specific_forum_delete_reply':
194 + $specific_id = $args[0];
195 + break;
196 + }
197 +
198 + return $specific_id;
199 +}
200 +add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_simplepress_specific_trigger_get_id', 10, 3 );
201 +
202 +/**
203 + * Extended meta data for event trigger logging
204 + *
205 + * @since 1.0.0
206 + *
207 + * @param array $log_meta
208 + * @param integer $user_id
209 + * @param string $trigger
210 + * @param integer $site_id
211 + * @param array $args
212 + *
213 + * @return array
214 + */
215 +function gamipress_simplepress_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
216 +
217 + switch ( $trigger ) {
218 + // New topic
219 + case 'gamipress_simplepress_new_topic':
220 + case 'gamipress_simplepress_specific_forum_new_topic':
221 + // Delete topic
222 + case 'gamipress_simplepress_delete_topic':
223 + case 'gamipress_simplepress_specific_forum_delete_topic':
224 + // Add the topic and forum IDs
225 + $log_meta['topic_id'] = $args[0];
226 + $log_meta['forum_id'] = $args[2];
227 + break;
228 + // New Reply
229 + case 'gamipress_simplepress_new_reply':
230 + case 'gamipress_simplepress_specific_topic_new_reply':
231 + case 'gamipress_simplepress_specific_forum_new_reply':
232 + // Delete Reply
233 + case 'gamipress_simplepress_delete_reply':
234 + case 'gamipress_simplepress_specific_topic_delete_reply':
235 + case 'gamipress_simplepress_specific_forum_delete_reply':
236 + // Add the reply, topic and forum IDs
237 + $log_meta['reply_id'] = $args[0];
238 + $log_meta['topic_id'] = $args[2];
239 + $log_meta['forum_id'] = $args[3];
240 + break;
241 + }
242 +
243 + return $log_meta;
244 +}
245 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_simplepress_log_event_trigger_meta_data', 10, 5 );