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/wp-postratings/includes/triggers.php +253 -0 7.9.2 → 8.0.5 View file →
@@ -1,0 +1,253 @@
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 );