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/invite-anyone/includes/triggers.php +197 -0 7.9.0 → 8.0.6 View file →
@@ -1,0 +1,197 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\Invite_Anyone\Triggers
6 + * @since 1.0.0
7 + */
8 +// Exit if accessed directly
9 +if( !defined( 'ABSPATH' ) ) exit;
10 +
11 +/**
12 + * Register plugin activity triggers
13 + *
14 + * @param array $triggers
15 + * @return mixed
16 + * @since 1.0.0
17 + *
18 + */
19 +function gamipress_invite_anyone_activity_triggers($triggers) {
20 +
21 + $triggers[__('Invite Anyone', 'gamipress')] = array(
22 + 'gamipress_invite_anyone_send_invite' => __( 'Send an invitation', 'gamipress' ),
23 + 'gamipress_invite_anyone_accept_invite' => __( 'Accept an invitation', 'gamipress' ),
24 + 'gamipress_invite_anyone_accepted_invite' => __( 'Get an invitation accepted', 'gamipress' ),
25 + );
26 +
27 + return $triggers;
28 +
29 +}
30 +
31 +add_filter('gamipress_activity_triggers', 'gamipress_invite_anyone_activity_triggers');
32 +
33 +/**
34 + * Get user for a given trigger action.
35 + *
36 + * @param integer $user_id user ID to override.
37 + * @param string $trigger Trigger name.
38 + * @param array $args Passed trigger args.
39 + * @return integer User ID.
40 + * @since 1.0.0
41 + *
42 + */
43 +function gamipress_invite_anyone_trigger_get_user_id($user_id, $trigger, $args) {
44 +
45 + switch ($trigger) {
46 + case 'gamipress_invite_anyone_send_invite':
47 + case 'gamipress_invite_anyone_accept_invite':
48 + $user_id = $args[0];
49 + break;
50 + case 'gamipress_invite_anyone_accepted_invite':
51 + $user_id = $args[1];
52 + break;
53 + }
54 +
55 + return $user_id;
56 +
57 +}
58 +
59 +add_filter('gamipress_trigger_get_user_id', 'gamipress_invite_anyone_trigger_get_user_id', 10, 3);
60 +
61 +/**
62 + * Extended meta data for event trigger logging
63 + *
64 + * @param array $log_meta
65 + * @param integer $user_id
66 + * @param string $trigger
67 + * @param integer $site_id
68 + * @param array $args
69 + *
70 + * @return array
71 + * @since 1.0.0
72 + *
73 + */
74 +function gamipress_invite_anyone_log_event_trigger_meta_data($log_meta, $user_id, $trigger, $site_id, $args) {
75 +
76 + switch ($trigger) {
77 + case 'gamipress_invite_anyone_send_invite':
78 + $log_meta['email'] = $args[1];
79 + break;
80 + case 'gamipress_invite_anyone_accepted_invite':
81 + $log_meta['invited_user_id'] = $args[1];
82 + break;
83 + case 'gamipress_invite_anyone_accept_invite':
84 + $log_meta['inviter_user_id'] = $args[0];
85 + break;
86 + }
87 +
88 + return $log_meta;
89 +}
90 +
91 +add_filter('gamipress_log_event_trigger_meta_data', 'gamipress_invite_anyone_log_event_trigger_meta_data', 10, 5);
92 +
93 +/**
94 + * Extra data fields
95 + *
96 + * @param array $fields
97 + * @param int $log_id
98 + * @param string $type
99 + *
100 + * @return array
101 + * @since 1.0.0
102 + *
103 + */
104 +function gamipress_invite_anyone_log_extra_data_fields($fields, $log_id, $type) {
105 +
106 + $prefix = '_gamipress_';
107 +
108 + $log = ct_get_object($log_id);
109 + $trigger = $log->trigger_type;
110 +
111 + if ($type !== 'event_trigger') {
112 + return $fields;
113 + }
114 +
115 + switch ($trigger) {
116 +
117 + case 'gamipress_invite_anyone_send_invite':
118 + $fields[] = array(
119 + 'name' => __( 'Email', 'gamipress' ),
120 + 'desc' => __( 'Email user sent an invitation.', 'gamipress' ),
121 + 'id' => $prefix . 'email',
122 + 'type' => 'text',
123 + );
124 + break;
125 + case 'gamipress_invite_anyone_accepted_invite':
126 + $fields[] = array(
127 + 'name' => __( 'Invited User', 'gamipress' ),
128 + 'desc' => __( 'User that has been invited.', 'gamipress' ),
129 + 'id' => $prefix . 'invited_user_id',
130 + 'type' => 'select',
131 + 'options_cb' => 'gamipress_options_cb_users'
132 + );
133 + break;
134 + case 'gamipress_invite_anyone_accept_invite':
135 + $fields[] = array(
136 + 'name' => __( 'Inviter User', 'gamipress' ),
137 + 'desc' => __( 'User that has sent the invitation.', 'gamipress' ),
138 + 'id' => $prefix . 'inviter_user_id',
139 + 'type' => 'select',
140 + 'options_cb' => 'gamipress_options_cb_users'
141 + );
142 + break;
143 + }
144 +
145 + return $fields;
146 +
147 +}
148 +
149 +add_filter('gamipress_log_extra_data_fields', 'gamipress_invite_anyone_log_extra_data_fields', 10, 3);
150 +
151 +/**
152 + * Extra filter to check duplicated activity
153 + *
154 + * @param bool $return
155 + * @param integer $user_id
156 + * @param string $trigger
157 + * @param integer $site_id
158 + * @param array $args
159 + *
160 + * @return bool True if user deserves trigger, else false
161 + * @since 1.0.0
162 + *
163 + */
164 +function gamipress_invite_anyone_trigger_duplicity_check($return, $user_id, $trigger, $site_id, $args) {
165 +
166 + // If user doesn't deserves trigger, then bail to prevent grant access
167 + if (!$return)
168 + return $return;
169 +
170 + $log_meta = array(
171 + 'type' => 'event_trigger',
172 + 'trigger_type' => $trigger,
173 + );
174 +
175 + switch ($trigger) {
176 + case 'gamipress_invite_anyone_send_invite':
177 + // Prevent duplicate email invitation
178 + $log_meta['email'] = $args[1];
179 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
180 + break;
181 + case 'gamipress_invite_anyone_accepted_invite':
182 + // Prevent duplicate invited user ID
183 + $log_meta['invited_user_id'] = $args[1];
184 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
185 + break;
186 + case 'gamipress_invite_anyone_accept_invite':
187 + // Prevent duplicate inviter user ID
188 + $log_meta['inviter_user_id'] = $args[0];
189 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
190 + break;
191 + }
192 +
193 + return $return;
194 +
195 +}
196 +
197 +add_filter('gamipress_user_deserves_trigger', 'gamipress_invite_anyone_trigger_duplicity_check', 10, 5);