PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
1.1.35 1.1.34 1.1.33 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 / restrict-content / actions / restrict-content-add-user.php
suretriggers / src / Integrations / restrict-content / actions Last commit date
restrict-content-add-user.php 1 year ago restrict-content-remove-user.php 10 months ago
restrict-content-add-user.php
156 lines
1 <?php
2 /**
3 * RestrictContentAddUser.
4 * php version 5.6
5 *
6 * @category RestrictContentAddUser
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\RestrictContent\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Integrations\RestrictContent\RestrictContent;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 /**
22 * RestrictContentAddUser
23 *
24 * @category RestrictContentAddUser
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class RestrictContentAddUser extends AutomateAction {
32
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'RestrictContent';
40
41 /**
42 * Action name.
43 *
44 * @var string
45 */
46 public $action = 'restrict_content_add_user';
47
48 use SingletonLoader;
49
50 /**
51 * Register a action.
52 *
53 * @param array $actions actions.
54 *
55 * @return array
56 */
57 public function register( $actions ) {
58
59 $actions[ $this->integration ][ $this->action ] = [
60 'label' => __( 'Add User to Membership Level', 'suretriggers' ),
61 'action' => $this->action,
62 'function' => [ $this, '_action_listener' ],
63 ];
64
65 return $actions;
66
67 }
68
69
70 /**
71 * Action listener.
72 *
73 * @param int $user_id user_id.
74 * @param int $automation_id automation_id.
75 * @param array $fields fields.
76 * @param array $selected_options selectedOptions.
77 *
78 * @return array|bool
79 */
80 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
81 if ( ! function_exists( 'rcp_add_membership' ) || ! function_exists( 'rcp_get_customer' ) || ! function_exists( 'rcp_get_membership' ) || ! function_exists( 'rcp_add_customer' ) || ! function_exists( 'rcp_generate_subscription_key' ) ) {
82 return false;
83 }
84 $rcp_level_id = $selected_options['rcp_levels']['value'];
85 $rcp_user_email = $selected_options['rcp_user_email'];
86 $rcp_expiry_date = $selected_options['rcp_expiry_date'];
87
88 if ( empty( $rcp_level_id ) ) {
89 return false;
90 }
91
92 if ( empty( $rcp_user_email ) ) {
93 return false;
94 }
95
96 $newest_time = strtotime( current_time( 'mysql' ) );
97 $created_date = gmdate( 'Y-m-d H:i:s', (int) $newest_time );
98
99 $wp_user = get_user_by( 'email', $rcp_user_email );
100
101 $customer = [];
102 $customer_args = [
103 'date_registered' => $created_date,
104 ];
105
106 if ( ! empty( $wp_user ) ) {
107 if ( function_exists( 'rcp_get_customer_by_user_id' ) ) {
108 $customer = rcp_get_customer_by_user_id( $wp_user->ID );
109 }
110
111 if ( empty( $customer ) ) {
112 $customer_args['user_id'] = $wp_user->ID;
113 }
114 } else {
115 $customer_args['user_args'] = [
116 'user_login' => sanitize_text_field( $rcp_user_email ),
117 'user_email' => sanitize_text_field( $rcp_user_email ),
118 'user_pass' => wp_generate_password(),
119 ];
120 }
121
122 // Create a new customer record if one does not exist.
123 if ( empty( $customer ) ) {
124 $customer_id = rcp_add_customer( $customer_args );
125 } else {
126 $customer_id = $customer->get_id();
127 }
128
129 $customer = rcp_get_customer( $customer_id );
130
131 $status = 'active';
132 $membership_args = [
133 'customer_id' => $customer->get_id(),
134 'user_id' => $customer->get_user_id(),
135 'object_id' => $rcp_level_id,
136 'status' => $status,
137 'created_date' => $created_date,
138 'gateway' => 'manual',
139 'subscription_key' => rcp_generate_subscription_key(),
140 ];
141 if ( ! empty( $rcp_expiry_date ) ) {
142 $membership_args['expiration_date'] = gmdate( 'Y-m-d H:i:s', strtotime( $rcp_expiry_date ) );
143 }
144
145 $membership_id = rcp_add_membership( $membership_args );
146 $membership = rcp_get_membership( $membership_id );
147
148 return array_merge(
149 WordPress::get_user_context( $customer->get_user_id() ),
150 RestrictContent::get_rcp_membership_detail_context( $membership )
151 );
152 }
153 }
154
155 RestrictContentAddUser::get_instance();
156