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/anspress/includes/triggers.php +153 -0 7.8.9 → 8.0.5 View file →
@@ -1,0 +1,153 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\AnsPress\Triggers
6 + * @since 1.0.0
7 + */
8 +
9 +// Exit if accessed directly
10 +if( !defined( 'ABSPATH' ) ) exit;
11 +
12 +/**
13 + * Register plugin activity triggers
14 + *
15 + * @since 1.0.0
16 + *
17 + * @param array $triggers
18 + * @return mixed
19 + */
20 +function gamipress_anspress_activity_triggers( $triggers ) {
21 +
22 + $triggers[__( 'AnsPress', 'gamipress' )] = array(
23 + 'gamipress_anspress_new_question' => __( 'Ask a question', 'gamipress' ),
24 + 'gamipress_anspress_new_answer' => __( 'Answer a question', 'gamipress' ),
25 + 'gamipress_anspress_best_answer' => __( 'Get answer selected as best', 'gamipress' ),
26 + 'gamipress_anspress_select_best_answer' => __( 'Select an answer as best', 'gamipress' ),
27 + 'gamipress_anspress_vote_up' => __( 'Vote up', 'gamipress' ),
28 + 'gamipress_anspress_vote_down' => __( 'Vote down', 'gamipress' ),
29 + 'gamipress_anspress_get_vote_up' => __( 'Get a vote up', 'gamipress' ),
30 + 'gamipress_anspress_get_vote_down' => __( 'Get a vote down', 'gamipress' ),
31 + 'gamipress_anspress_new_comment' => __( 'Comment on question or answer', 'gamipress' ),
32 + );
33 +
34 + return $triggers;
35 +
36 +}
37 +add_filter( 'gamipress_activity_triggers', 'gamipress_anspress_activity_triggers' );
38 +
39 +/**
40 + * Get user for a given trigger action.
41 + *
42 + * @since 1.0.0
43 + *
44 + * @param integer $user_id user ID to override.
45 + * @param string $trigger Trigger name.
46 + * @param array $args Passed trigger args.
47 + * @return integer User ID.
48 + */
49 +function gamipress_anspress_trigger_get_user_id( $user_id, $trigger, $args ) {
50 +
51 + switch ( $trigger ) {
52 + case 'gamipress_anspress_new_question':
53 + case 'gamipress_anspress_new_answer':
54 + case 'gamipress_anspress_best_answer':
55 + case 'gamipress_anspress_select_best_answer':
56 + case 'gamipress_anspress_vote_up':
57 + case 'gamipress_anspress_vote_down':
58 + case 'gamipress_anspress_get_vote_up':
59 + case 'gamipress_anspress_get_vote_down':
60 + case 'gamipress_anspress_new_comment':
61 + $user_id = $args[1];
62 + break;
63 + }
64 +
65 + return $user_id;
66 +
67 +}
68 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_anspress_trigger_get_user_id', 10, 3 );
69 +
70 +/**
71 + * Extended meta data for event trigger logging
72 + *
73 + * @since 1.0.0
74 + *
75 + * @param array $log_meta
76 + * @param integer $user_id
77 + * @param string $trigger
78 + * @param integer $site_id
79 + * @param array $args
80 + *
81 + * @return array
82 + */
83 +function gamipress_anspress_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
84 +
85 + switch ( $trigger ) {
86 + case 'gamipress_anspress_new_question':
87 + case 'gamipress_anspress_new_answer':
88 + // Add the post ID
89 + $log_meta['post_id'] = $args[0];
90 + break;
91 + case 'gamipress_anspress_best_answer':
92 + case 'gamipress_anspress_select_best_answer':
93 + // Add the answer and question IDs
94 + $log_meta['answer_id'] = $args[0];
95 + $log_meta['question_id'] = $args[3];
96 + break;
97 + case 'gamipress_anspress_vote_up':
98 + case 'gamipress_anspress_vote_down':
99 + case 'gamipress_anspress_get_vote_up':
100 + case 'gamipress_anspress_get_vote_down':
101 + // Add the post ID
102 + $log_meta['post_id'] = $args[0];
103 + break;
104 + case 'gamipress_anspress_new_comment':
105 + // Add the comment and post IDs
106 + $log_meta['comment_id'] = $args[0];
107 + $log_meta['post_id'] = $args[2];
108 + break;
109 + }
110 +
111 + return $log_meta;
112 +}
113 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_anspress_log_event_trigger_meta_data', 10, 5 );
114 +
115 +/**
116 + * Extra filter to check duplicated activity
117 + *
118 + * @since 1.0.0
119 + *
120 + * @param bool $return
121 + * @param integer $user_id
122 + * @param string $trigger
123 + * @param integer $site_id
124 + * @param array $args
125 + *
126 + * @return bool True if user deserves trigger, else false
127 + */
128 +function gamipress_anspress_trigger_duplicity_check( $return, $user_id, $trigger, $site_id, $args ) {
129 +
130 + // If user doesn't deserves trigger, then bail to prevent grant access
131 + if( ! $return )
132 + return $return;
133 +
134 + $log_meta = array(
135 + 'type' => 'event_trigger',
136 + 'trigger_type' => $trigger,
137 + );
138 +
139 + switch ( $trigger ) {
140 + case 'gamipress_anspress_vote_up':
141 + case 'gamipress_anspress_vote_down':
142 + case 'gamipress_anspress_get_vote_up':
143 + case 'gamipress_anspress_get_vote_down':
144 + // Prevent duplicate vote up/down on same question/answer
145 + $log_meta['post_id'] = $args[0];
146 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
147 + break;
148 + }
149 +
150 + return $return;
151 +
152 +}
153 +add_filter( 'gamipress_user_deserves_trigger', 'gamipress_anspress_trigger_duplicity_check', 10, 5 );