PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / bricks-builder / triggers / bricksbuilder-user-account-activated.php
suretriggers / src / Integrations / bricks-builder / triggers Last commit date
bricksbuilder-submit-form.php 1 year ago bricksbuilder-user-account-activated.php 1 week ago
bricksbuilder-user-account-activated.php
170 lines
1 <?php
2 /**
3 * UserActivatesBricksBuilderAccount.
4 * php version 5.6
5 *
6 * @category UserActivatesBricksBuilderAccount
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\BricksBuilder\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19
20 if ( ! class_exists( 'UserActivatesBricksBuilderAccount' ) ) :
21
22 /**
23 * UserActivatesBricksBuilderAccount
24 *
25 * @category UserActivatesBricksBuilderAccount
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 */
32 class UserActivatesBricksBuilderAccount {
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'BricksBuilder';
40
41 /**
42 * Trigger name.
43 *
44 * @var string
45 */
46 public $trigger = 'bricksbuilder_user_account_activated';
47
48 use SingletonLoader;
49
50 /**
51 * Constructor
52 *
53 * @since 1.0.0
54 */
55 public function __construct() {
56 add_action( 'init', [ $this, 'capture_pending_activation' ], 1 );
57 add_action( 'template_redirect', [ $this, 'detect_account_activation' ], 999 );
58 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
59 }
60
61 /**
62 * Register action.
63 *
64 * @param array $triggers trigger data.
65 * @return array
66 */
67 public function register( $triggers ) {
68 $triggers[ $this->integration ][ $this->trigger ] = [
69 'label' => __( 'User Account Activated', 'suretriggers' ),
70 'action' => $this->trigger,
71 'common_action' => 'bricksbuilder_after_user_account_activated',
72 'function' => [ $this, 'trigger_listener' ],
73 'priority' => 10,
74 'accepted_args' => 1,
75 ];
76
77 return $triggers;
78 }
79
80 /**
81 * Captures a valid pending activation at init priority 1, before Bricks processes it.
82 *
83 * @return void
84 */
85 public function capture_pending_activation() {
86 // phpcs:ignore WordPress.Security.NonceVerification.Recommended
87 if ( ! isset( $_GET['user_id'] ) || ! isset( $_GET['activation_key'] ) ) {
88 return;
89 }
90
91 // phpcs:ignore WordPress.Security.NonceVerification.Recommended
92 $user_id = absint( $_GET['user_id'] );
93 // phpcs:ignore WordPress.Security.NonceVerification.Recommended
94 $activation_key = sanitize_text_field( wp_unslash( $_GET['activation_key'] ) );
95
96 if ( empty( $user_id ) || empty( $activation_key ) ) {
97 return;
98 }
99
100 if ( ! get_user_by( 'id', $user_id ) ) {
101 return;
102 }
103
104 // Bricks 2.1+ stores the pending token under 'bricks_activation_key' and deletes it on activation.
105 $stored_key = get_user_meta( $user_id, 'bricks_activation_key', true );
106
107 if ( ! is_string( $stored_key ) || empty( $stored_key ) ) {
108 return;
109 }
110
111 if ( ! hash_equals( $stored_key, $activation_key ) ) {
112 return;
113 }
114
115 set_transient( 'bricks_ottokit_pending_' . $user_id, true, 300 );
116 }
117
118 /**
119 * Confirms activation at template_redirect priority 999, after Bricks has processed it.
120 *
121 * @return void
122 */
123 public function detect_account_activation() {
124 // phpcs:ignore WordPress.Security.NonceVerification.Recommended
125 if ( ! isset( $_GET['user_id'] ) ) {
126 return;
127 }
128
129 // phpcs:ignore WordPress.Security.NonceVerification.Recommended
130 $user_id = absint( $_GET['user_id'] );
131
132 if ( empty( $user_id ) || ! get_transient( 'bricks_ottokit_pending_' . $user_id ) ) {
133 return;
134 }
135
136 if ( ! empty( get_user_meta( $user_id, 'bricks_activation_key', true ) ) ) {
137 return;
138 }
139
140 delete_transient( 'bricks_ottokit_pending_' . $user_id );
141 do_action( 'bricksbuilder_after_user_account_activated', $user_id );
142 }
143
144 /**
145 * Trigger listener
146 *
147 * @param int $user_id Activated user ID.
148 * @since 1.0.0
149 *
150 * @return void
151 */
152 public function trigger_listener( $user_id ) {
153 if ( empty( $user_id ) ) {
154 return;
155 }
156
157 AutomationController::sure_trigger_handle_trigger(
158 [
159 'trigger' => $this->trigger,
160 'context' => WordPress::get_user_context( $user_id ),
161 'wp_user_id' => $user_id,
162 ]
163 );
164 }
165 }
166
167 UserActivatesBricksBuilderAccount::get_instance();
168
169 endif;
170