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 / invite-anyone / includes / triggers.php

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

197 lines 5.8 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\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);