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 / wp-postratings / includes / triggers.php

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

253 lines 10.5 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\WP_PostRatings\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register WP PostRatings specific triggers
14 *
15 * @since 1.0.0
16 *
17 * @param array $triggers
18 * @return mixed
19 */
20 function gamipress_wp_postratings_activity_triggers( $triggers ) {
21
22 $triggers[__( 'WP PostRatings', 'gamipress' )] = array(
23 'gamipress_wp_postratings_rate' => __( 'Rate a post', 'gamipress' ),
24 'gamipress_wp_postratings_specific_rate' => __( 'Rate a specific post', 'gamipress' ),
25 'gamipress_wp_postratings_user_rate' => __( 'Get rates on a post', 'gamipress' ),
26 'gamipress_wp_postratings_user_specific_rate' => __( 'Get rates on a specific post', 'gamipress' ),
27 // Specific rate
28 'gamipress_wp_postratings_rate_specific' => __( 'Rate a post with a specific rating', 'gamipress' ),
29 'gamipress_wp_postratings_specific_rate_specific' => __( 'Rate a specific post with a specific rating', 'gamipress' ),
30 'gamipress_wp_postratings_user_rate_specific' => __( 'Get rates on a post with a specific rating', 'gamipress' ),
31 'gamipress_wp_postratings_user_specific_rate_specific' => __( 'Get rates on a specific post with a specific rating', 'gamipress' ),
32 // Minimum rate
33 'gamipress_wp_postratings_minimum_rate' => __( 'Rate a post with a minimum rating', 'gamipress' ),
34 'gamipress_wp_postratings_specific_minimum_rate' => __( 'Rate a specific post with a minimum rating', 'gamipress' ),
35 'gamipress_wp_postratings_user_minimum_rate' => __( 'Get rates on a post with a minimum rating', 'gamipress' ),
36 'gamipress_wp_postratings_user_specific_minimum_rate' => __( 'Get rates on a specific post with a minimum rating', 'gamipress' ),
37 );
38
39 return $triggers;
40
41 }
42 add_filter( 'gamipress_activity_triggers', 'gamipress_wp_postratings_activity_triggers' );
43
44 /**
45 * Register WP PostRatings specific activity triggers
46 *
47 * @since 1.0.0
48 *
49 * @param array $specific_activity_triggers
50 * @return array
51 */
52 function gamipress_wp_postratings_specific_activity_triggers( $specific_activity_triggers ) {
53
54 // All public post types
55 $post_types = get_post_types( array(
56 'public' => true
57 ) );
58
59 // Remove keys
60 $post_types = array_values( $post_types );
61
62 $specific_activity_triggers['gamipress_wp_postratings_specific_rate'] = $post_types;
63 $specific_activity_triggers['gamipress_wp_postratings_user_specific_rate'] = $post_types;
64 // Specific rate
65 $specific_activity_triggers['gamipress_wp_postratings_specific_rate_specific'] = $post_types;
66 $specific_activity_triggers['gamipress_wp_postratings_user_specific_rate_specific'] = $post_types;
67 // Minimum rate
68 $specific_activity_triggers['gamipress_wp_postratings_specific_minimum_rate'] = $post_types;
69 $specific_activity_triggers['gamipress_wp_postratings_user_specific_minimum_rate'] = $post_types;
70
71 return $specific_activity_triggers;
72 }
73 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_wp_postratings_specific_activity_triggers' );
74
75 /**
76 * Build custom activity trigger label
77 *
78 * @param string $title
79 * @param integer $requirement_id
80 * @param array $requirement
81 *
82 * @return string
83 */
84 function gamipress_wp_postratings_activity_trigger_label( $title, $requirement_id, $requirement ) {
85
86 $minimum_score = ( isset( $requirement['wp_postratings_rate'] ) ) ? intval( $requirement['wp_postratings_rate'] ) : 0;
87
88 switch( $requirement['trigger_type'] ) {
89 // Specific rate
90 case 'gamipress_wp_postratings_rate_specific':
91 return sprintf( __( 'Rate a post with a rating of %d', 'gamipress' ), $minimum_score );
92 break;
93 case 'gamipress_wp_postratings_specific_rate_specific':
94 $achievement_post_id = absint( $requirement['achievement_post'] );
95 return sprintf( __( 'Rate %s with a rating of %d', 'gamipress' ), get_the_title( $achievement_post_id ), $minimum_score );
96 break;
97 case 'gamipress_wp_postratings_user_rate_specific':
98 return sprintf( __( 'Get a rate on a post with a rating of %d', 'gamipress' ), $minimum_score );
99 break;
100 case 'gamipress_wp_postratings_user_specific_rate_specific':
101 $achievement_post_id = absint( $requirement['achievement_post'] );
102 return sprintf( __( 'Get a rate on %s with a rating of %d', 'gamipress' ), get_the_title( $achievement_post_id ), $minimum_score );
103 break;
104 // Minimum rate
105 case 'gamipress_wp_postratings_minimum_rate':
106 return sprintf( __( 'Rate a post with a rating of %d or higher', 'gamipress' ), $minimum_score );
107 break;
108 case 'gamipress_wp_postratings_specific_minimum_rate':
109 $achievement_post_id = absint( $requirement['achievement_post'] );
110 return sprintf( __( 'Rate %s with a rating of %d or higher', 'gamipress' ), get_the_title( $achievement_post_id ), $minimum_score );
111 break;
112 case 'gamipress_wp_postratings_user_minimum_rate':
113 return sprintf( __( 'Get a rate on a post with a rating of %d or higher', 'gamipress' ), $minimum_score );
114 break;
115 case 'gamipress_wp_postratings_user_specific_minimum_rate':
116 $achievement_post_id = absint( $requirement['achievement_post'] );
117 return sprintf( __( 'Get a rate on %s with a rating of %d or higher', 'gamipress' ), get_the_title( $achievement_post_id ), $minimum_score );
118 break;
119 }
120
121 return $title;
122 }
123 add_filter( 'gamipress_activity_trigger_label', 'gamipress_wp_postratings_activity_trigger_label', 10, 3 );
124
125 /**
126 * Register WP PostRatings specific activity triggers labels
127 *
128 * @since 1.0.0
129 *
130 * @param array $specific_activity_trigger_labels
131 * @return array
132 */
133 function gamipress_wp_postratings_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
134
135 $specific_activity_trigger_labels['gamipress_wp_postratings_specific_rate'] = __( 'Rate %s', 'gamipress' );
136 $specific_activity_trigger_labels['gamipress_wp_postratings_user_specific_rate'] = __( 'Get a rate on %s', 'gamipress' );
137
138 return $specific_activity_trigger_labels;
139 }
140 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_wp_postratings_specific_activity_trigger_label' );
141
142 /**
143 * Get user for a given trigger action.
144 *
145 * @since 1.0.0
146 *
147 * @param integer $user_id user ID to override.
148 * @param string $trigger Trigger name.
149 * @param array $args Passed trigger args.
150 * @return integer User ID.
151 */
152 function gamipress_wp_postratings_trigger_get_user_id( $user_id, $trigger, $args ) {
153
154 switch ( $trigger ) {
155 case 'gamipress_wp_postratings_rate':
156 case 'gamipress_wp_postratings_specific_rate':
157 case 'gamipress_wp_postratings_user_rate':
158 case 'gamipress_wp_postratings_user_specific_rate':
159 // Specific rate
160 case 'gamipress_wp_postratings_rate_specific':
161 case 'gamipress_wp_postratings_specific_rate_specific':
162 case 'gamipress_wp_postratings_user_rate_specific':
163 case 'gamipress_wp_postratings_user_specific_rate_specific':
164 // Minimum rate
165 case 'gamipress_wp_postratings_minimum_rate':
166 case 'gamipress_wp_postratings_specific_minimum_rate':
167 case 'gamipress_wp_postratings_user_minimum_rate':
168 case 'gamipress_wp_postratings_user_specific_minimum_rate':
169 $user_id = $args[1];
170 break;
171 }
172
173 return $user_id;
174
175 }
176 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_wp_postratings_trigger_get_user_id', 10, 3);
177
178
179 /**
180 * Get the id for a given specific trigger action.
181 *
182 * @since 1.0.0
183 *
184 * @param integer $specific_id Specific ID.
185 * @param string $trigger Trigger name.
186 * @param array $args Passed trigger args.
187 *
188 * @return integer Specific ID.
189 */
190 function gamipress_wp_postratings_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
191
192 switch ( $trigger ) {
193 case 'gamipress_wp_postratings_specific_rate':
194 case 'gamipress_wp_postratings_user_specific_rate':
195 // Specific rate
196 case 'gamipress_wp_postratings_specific_rate_specific':
197 case 'gamipress_wp_postratings_user_specific_rate_specific':
198 // Minimum rate
199 case 'gamipress_wp_postratings_specific_minimum_rate':
200 case 'gamipress_wp_postratings_user_specific_minimum_rate':
201 $specific_id = $args[0];
202 break;
203 }
204
205 return $specific_id;
206 }
207 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_wp_postratings_specific_trigger_get_id', 10, 3 );
208
209 /**
210 * Extended meta data for event trigger logging
211 *
212 * @since 1.0.0
213 *
214 * @param array $log_meta
215 * @param integer $user_id
216 * @param string $trigger
217 * @param integer $site_id
218 * @param array $args
219 *
220 * @return array
221 */
222 function gamipress_wp_postratings_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
223
224 switch ( $trigger ) {
225 case 'gamipress_wp_postratings_rate':
226 case 'gamipress_wp_postratings_specific_rate':
227 // Specific rate
228 case 'gamipress_wp_postratings_rate_specific':
229 case 'gamipress_wp_postratings_specific_rate_specific':
230 // Minimum rate
231 case 'gamipress_wp_postratings_minimum_rate':
232 case 'gamipress_wp_postratings_specific_minimum_rate':
233 // Add the post ID rate and rating value
234 $log_meta['post_id'] = $args[0];
235 $log_meta['rating_value'] = $args[2];
236 break;
237 case 'gamipress_wp_postratings_user_rate':
238 case 'gamipress_wp_postratings_user_specific_rate':
239 // Specific rate
240 case 'gamipress_wp_postratings_user_rate_specific':
241 case 'gamipress_wp_postratings_user_specific_rate_specific':
242 // Minimum rate
243 case 'gamipress_wp_postratings_user_minimum_rate':
244 case 'gamipress_wp_postratings_user_specific_minimum_rate':
245 // Add the post ID rate and rating value
246 $log_meta['post_id'] = $args[0];
247 $log_meta['rating_value'] = $args[3];
248 break;
249 }
250
251 return $log_meta;
252 }
253 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_wp_postratings_log_event_trigger_meta_data', 10, 5 );