PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 3.9.6
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v3.9.6
4.0.3 4.0.2 4.0.1 4.0.0 3.16.6 3.16.5 3.16.4 3.16.3 3.16.2 3.16.1 3.16.0 3.15.9 3.9.9 3.9.5 3.9.6 3.9.7 3.9.8 1.1.7 1.1.8 1.1.9 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 341 releases
profile-builder / features / content-restriction / content-restriction-meta-box.php

content-restriction-meta-box.php in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 3.9.6, at features/content-restriction/content-restriction-meta-box.php

267 lines 16.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
4 function wppb_content_restriction_initialize_meta_box() {
5
6 add_action( 'add_meta_boxes', 'wppb_content_restriction_add_meta_box' );
7
8 }
9 add_action( 'init', 'wppb_content_restriction_initialize_meta_box', 999 );
10
11 function wppb_content_restriction_add_meta_box() {
12
13 $post_types = get_post_types( array( 'public' => true ) );
14
15 if( ! empty( $post_types ) ) {
16 foreach( $post_types as $post_type ) {
17 add_meta_box(
18 'wppb_post_content_restriction',
19 __( 'Profile Builder Content Restriction', 'profile-builder' ),
20 'wppb_content_restriction_meta_box_output',
21 $post_type,
22 'normal'
23 );
24 }
25 }
26
27 }
28
29 function wppb_content_restriction_meta_box_output( $post ) {
30
31 ?>
32 <div class="wppb-meta-box-fields-wrapper">
33 <h4><?php echo esc_html__( 'Display Options', 'profile-builder' ); ?></h4>
34
35 <div class="wppb-meta-box-field-wrapper">
36 <?php
37 $wppb_content_restrict_types = apply_filters( 'wppb_single_post_content_restrict_types', array( 'message' => __( 'Message', 'profile-builder' ), 'redirect' => __( 'Redirect', 'profile-builder' ) ) );
38
39 $wppb_content_restrict_type = get_post_meta( $post->ID, 'wppb-content-restrict-type', true );
40 ?>
41
42 <label class="wppb-meta-box-field-label"><?php esc_html_e( 'Type of Restriction', 'profile-builder' ); ?></label>
43
44 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-type-default">
45 <input type="radio" id="wppb-content-restrict-type-default" value="default" <?php if( empty( $wppb_content_restrict_type ) || $wppb_content_restrict_type == 'default' ) echo 'checked="checked"'; ?> name="wppb-content-restrict-type">
46 <?php echo esc_html__( 'Settings Default', 'profile-builder' ); ?>
47 </label>
48
49 <?php foreach( $wppb_content_restrict_types as $type_slug => $type_label ) { ?>
50 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-type-<?php echo esc_attr( $type_slug ); ?>">
51 <input type="radio" id="wppb-content-restrict-type-<?php echo esc_attr( $type_slug ); ?>" value="<?php echo esc_attr( $type_slug ); ?>" <?php if( $wppb_content_restrict_type == $type_slug ) echo 'checked="checked"'; ?> name="wppb-content-restrict-type">
52 <?php echo esc_html( $type_label ); ?>
53 </label>
54 <?php } ?>
55 </div>
56
57 <div class="wppb-meta-box-field-wrapper">
58 <label class="wppb-meta-box-field-label"><?php esc_html_e( 'Display For', 'profile-builder' ); ?></label>
59
60 <?php
61 $wppb_roles = get_editable_roles();
62 $wppb_user_status = get_post_meta( $post->ID, 'wppb-content-restrict-user-status', true );
63 $wppb_selected_roles = get_post_meta( $post->ID, 'wppb-content-restrict-user-role' );
64 ?>
65
66 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-user-status">
67 <input type="checkbox" value="loggedin" <?php if( ! empty( $wppb_user_status ) && $wppb_user_status == 'loggedin' ) echo 'checked="checked"'; ?> name="wppb-content-restrict-user-status" id="wppb-content-restrict-user-status">
68 <?php echo esc_html__( 'Logged In Users', 'profile-builder' ); ?>
69 </label>
70
71 <?php
72 if( ! empty( $wppb_roles ) ) {
73 foreach( $wppb_roles as $wppb_role => $wppb_role_details ) {
74 ?>
75 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-user-role-<?php echo esc_attr( $wppb_role ) ?>">
76 <input type="checkbox" value="<?php echo esc_attr( $wppb_role ); ?>" <?php if( in_array( $wppb_role, $wppb_selected_roles ) ) echo 'checked="checked"'; ?> name="wppb-content-restrict-user-role[]" id="wppb-content-restrict-user-role-<?php echo esc_attr( $wppb_role ) ?>">
77 <?php echo !empty( $wppb_role_details['name'] ) ? esc_html( $wppb_role_details['name'] ) : esc_html( $wppb_role ); ?>
78 </label>
79 <?php } ?>
80
81 <p class="description" style="margin-top: 10px;">
82 <?php echo esc_html( sprintf( __( 'Checking only "Logged In Users" will show this %s to all logged in users, regardless of user role.', 'profile-builder' ), $post->post_type) ); ?>
83 </p>
84
85 <p class="description">
86 <?php echo esc_html( sprintf( __( 'Checking any user role will show this %s only to users that have one of those user roles assigned.', 'profile-builder' ), $post->post_type) ); ?>
87 </p>
88 <?php } ?>
89 </div>
90 </div>
91
92 <?php if( isset( $post->post_type ) && $post->post_type == 'product' ) : ?>
93 <div class="wppb-meta-box-fields-wrapper">
94 <h4><?php esc_html_e( 'Purchase Options', 'profile-builder' ); ?></h4>
95
96 <?php
97 $wppb_purchase_user_status = get_post_meta( $post->ID, 'wppb-purchase-restrict-user-status', true );
98 $wppb_selected_purchase_roles = get_post_meta( $post->ID, 'wppb-purchase-restrict-user-role' );
99 ?>
100
101 <!-- Who Can Purchase? options -->
102 <div class="wppb-meta-box-field-wrapper">
103 <label class="wppb-meta-box-field-label"><?php esc_html_e( 'Who can purchase?', 'profile-builder' ); ?></label>
104
105 <label class="wppb-meta-box-checkbox-label" for="wppb-purchase-restrict-user-status">
106 <input type="checkbox" value="loggedin" <?php if( ! empty( $wppb_purchase_user_status ) ) checked($wppb_purchase_user_status, 'loggedin' ); ?> name="wppb-purchase-restrict-user-status" id="wppb-purchase-restrict-user-status">
107 <?php esc_html_e( 'Logged In Users', 'profile-builder' ); ?>
108 </label>
109
110 <?php if( !empty( $wppb_roles ) ): foreach( $wppb_roles as $wppb_role => $wppb_role_details ): ?>
111
112 <label class="wppb-meta-box-checkbox-label" for="wppb-purchase-restrict-user-role-<?php echo esc_attr( $wppb_role ) ?>">
113 <input type="checkbox" value="<?php echo esc_attr( $wppb_role ); ?>" <?php if( in_array( $wppb_role, $wppb_selected_purchase_roles ) ) echo 'checked="checked"'; ?> name="wppb-purchase-restrict-user-role[]" id="wppb-purchase-restrict-user-role-<?php echo esc_attr( $wppb_role ) ?>">
114 <?php echo !empty( $wppb_role_details['name'] ) ? esc_html( $wppb_role_details['name'] ) : esc_html( $wppb_role ); ?>
115 </label>
116
117 <?php endforeach; ?>
118
119 <p class="description" style="margin-top: 10px;">
120 <?php esc_html_e( 'Select who can purchase this product.', 'profile-builder' ); ?>
121 </p>
122
123 <?php endif; ?>
124
125 </div>
126 </div>
127 <?php endif; ?>
128
129 <div id="wppb-meta-box-fields-wrapper-restriction-redirect-url" class="wppb-meta-box-fields-wrapper <?php echo ( $wppb_content_restrict_type == 'redirect' ? 'wppb-content-restriction-enabled' : '' ); ?>">
130 <h4><?php echo esc_html__( 'Restriction Redirect URL', 'profile-builder' ); ?></h4>
131
132 <div class="wppb-meta-box-field-wrapper">
133
134 <?php $wppb_custom_redirect_url_enabled = get_post_meta( $post->ID, 'wppb-content-restrict-custom-redirect-url-enabled', true ); ?>
135
136 <label class="wppb-meta-box-field-label"><?php esc_html_e( 'Enable Custom Redirect URL', 'profile-builder' ); ?></label>
137
138 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-custom-redirect-url-enabled">
139 <input type="checkbox" value="yes" <?php echo ( ! empty( $wppb_custom_redirect_url_enabled ) ? 'checked="checked"' : '' ); ?> name="wppb-content-restrict-custom-redirect-url-enabled" id="wppb-content-restrict-custom-redirect-url-enabled">
140 <span class="description"><?php echo esc_html( sprintf( __( 'Check if you wish to add a custom redirect URL for this %s.', 'profile-builder' ), $post->post_type ) ); ?></span>
141 </label>
142 </div>
143
144 <div class="wppb-meta-box-field-wrapper wppb-meta-box-field-wrapper-custom-redirect-url <?php echo ( ! empty( $wppb_custom_redirect_url_enabled ) ? 'wppb-content-restriction-enabled' : '' ); ?>">
145 <?php $wppb_custom_redirect_url = get_post_meta( $post->ID, 'wppb-content-restrict-custom-redirect-url', true ); ?>
146
147 <label class="wppb-meta-box-field-label" for="wppb-content-restrict-custom-redirect-url"><?php esc_html_e( 'Custom Redirect URL', 'profile-builder' ); ?></label>
148
149 <label class="wppb-meta-box-checkbox-label">
150 <input type="text" value="<?php echo ( ! empty( $wppb_custom_redirect_url ) ? esc_url( $wppb_custom_redirect_url ) : '' ); ?>" name="wppb-content-restrict-custom-redirect-url" id="wppb-content-restrict-custom-redirect-url" class="widefat">
151 <p class="description"><?php echo esc_html( sprintf( __( 'Add a URL where you wish to redirect users that do not have access to this %s and try to access it directly.', 'profile-builder' ), $post->post_type ) ); ?></p>
152 </label>
153 </div>
154 </div>
155
156 <div id="wppb-meta-box-fields-wrapper-restriction-custom-messages" class="wppb-meta-box-fields-wrapper">
157 <h4><?php echo esc_html__( 'Restriction Messages', 'profile-builder' ); ?></h4>
158
159 <div class="wppb-meta-box-field-wrapper">
160 <?php
161 $wppb_custom_messages_enabled = get_post_meta( $post->ID, 'wppb-content-restrict-messages-enabled', true );
162 ?>
163 <label class="wppb-meta-box-field-label"><?php esc_html_e( 'Enable Custom Messages', 'profile-builder' ); ?></label>
164
165 <label class="wppb-meta-box-checkbox-label" for="wppb-content-restrict-messages-enabled">
166 <input type="checkbox" value="yes" <?php echo ( ! empty( $wppb_custom_messages_enabled ) ? 'checked="checked"' : '' ); ?> name="wppb-content-restrict-messages-enabled" id="wppb-content-restrict-messages-enabled">
167 <span class="description"><?php echo esc_html( sprintf( __( 'Check if you wish to add custom messages for this %s.', 'profile-builder' ), $post->post_type ) ); ?></span>
168 </label>
169 </div>
170
171 <div class="wppb-meta-box-field-wrapper-custom-messages <?php echo ( ! empty( $wppb_custom_messages_enabled ) ? 'wppb-content-restriction-enabled' : '' ); ?>">
172 <?php do_action( 'wppb_view_meta_box_content_restrict_restriction_messages_top', $post->ID ); ?>
173
174 <p><strong><?php esc_html_e( 'Messages for logged-out users', 'profile-builder' ); ?></strong></p>
175 <?php wp_editor( get_post_meta( $post->ID, 'wppb-content-restrict-message-logged_out', true ), 'wppb-content-restrict-message-logged_out', array( 'textarea_name' => 'wppb-content-restrict-message-logged_out', 'editor_height' => 200 ) ); ?>
176
177 <p><strong><?php esc_html_e( 'Messages for logged-in users', 'profile-builder' ); ?></strong></p>
178 <?php wp_editor( get_post_meta( $post->ID, 'wppb-content-restrict-message-logged_in', true ), 'wppb-content-restrict-message-logged_in', array( 'textarea_name' => 'wppb-content-restrict-message-logged_in', 'editor_height' => 200 ) ); ?>
179
180 <?php if( isset( $post->post_type ) && $post->post_type == 'product' ) : ?>
181
182 <p><strong><?php esc_html_e( 'Messages for restricted product purchase', 'profile-builder' ); ?></strong></p>
183 <?php wp_editor( wp_kses_post( get_post_meta( $post->ID, 'wppb-content-restrict-message-purchasing_restricted', true ) ), 'wppb-content-restrict-message-purchasing_restricted', array( 'textarea_name' => 'wppb-content-restrict-message-purchasing_restricted', 'editor_height' => 200 ) ); ?>
184
185 <?php endif; ?>
186 </div>
187 </div>
188
189 <?php
190 wp_nonce_field( 'wppb_meta_box_single_content_restriction_nonce', 'wppb_content_restriction_token', false );
191
192 }
193
194 function wppb_content_restriction_save_data( $post_id ) {
195
196 if( empty( $_POST['wppb_content_restriction_token'] ) || ! wp_verify_nonce( sanitize_text_field( $_POST['wppb_content_restriction_token'] ), 'wppb_meta_box_single_content_restriction_nonce' ) ) {
197 return;
198 }
199
200 // Handle restriction rules
201 delete_post_meta( $post_id, 'wppb-content-restrict-type' );
202
203 if( ! empty( $_POST['wppb-content-restrict-type'] ) ) {
204 update_post_meta( $post_id, 'wppb-content-restrict-type', sanitize_text_field( $_POST['wppb-content-restrict-type'] ) );
205 }
206
207 if( isset( $_POST['wppb-content-restrict-user-status'] ) && $_POST['wppb-content-restrict-user-status'] === 'loggedin' ) {
208 delete_post_meta( $post_id, 'wppb-content-restrict-user-role' );
209
210 if( isset( $_POST['wppb-content-restrict-user-role'] ) && is_array( $_POST['wppb-content-restrict-user-role'] ) ) {
211 $user_role_ids = array_map( 'sanitize_text_field', $_POST['wppb-content-restrict-user-role'] );
212 foreach( $user_role_ids as $user_role_id ) {
213 if( ! empty( $user_role_id ) ) {
214 add_post_meta( $post_id, 'wppb-content-restrict-user-role', $user_role_id );
215 }
216 }
217 }
218 }
219
220 if( isset( $_POST['wppb-content-restrict-user-status'] ) && $_POST['wppb-content-restrict-user-status'] == 'loggedin' ) {
221 update_post_meta( $post_id, 'wppb-content-restrict-user-status', 'loggedin' );
222 } else {
223 delete_post_meta( $post_id, 'wppb-content-restrict-user-status' );
224 }
225
226 // Handle custom redirect URL
227 delete_post_meta( $post_id, 'wppb-content-restrict-custom-redirect-url-enabled' );
228
229 if( isset( $_POST['wppb-content-restrict-custom-redirect-url-enabled'] ) ) {
230 update_post_meta( $post_id, 'wppb-content-restrict-custom-redirect-url-enabled', 'yes' );
231 }
232
233 update_post_meta( $post_id, 'wppb-content-restrict-custom-redirect-url', ( ! empty( $_POST['wppb-content-restrict-custom-redirect-url'] ) ? esc_url_raw( $_POST['wppb-content-restrict-custom-redirect-url'] ) : '' ) );
234
235 // Handle custom messages
236 delete_post_meta( $post_id, 'wppb-content-restrict-messages-enabled' );
237
238 if( isset( $_POST['wppb-content-restrict-messages-enabled'] ) ) {
239 update_post_meta( $post_id, 'wppb-content-restrict-messages-enabled', 'yes' );
240 }
241
242 update_post_meta( $post_id, 'wppb-content-restrict-message-logged_out', ( ! empty( $_POST['wppb-content-restrict-message-logged_out'] ) ? wp_kses_post( $_POST['wppb-content-restrict-message-logged_out'] ) : '' ) );
243 update_post_meta( $post_id, 'wppb-content-restrict-message-logged_in', ( ! empty( $_POST['wppb-content-restrict-message-logged_in'] ) ? wp_kses_post( $_POST['wppb-content-restrict-message-logged_in'] ) : '' ) );
244
245 // Handle WooCommerce purchase settings
246 delete_post_meta( $post_id, 'wppb-purchase-restrict-user-role' );
247 if( isset( $_POST['wppb-purchase-restrict-user-role'] ) && is_array( $_POST['wppb-purchase-restrict-user-role'] ) ) {
248 $restrict_roles = array_map( 'sanitize_text_field', $_POST['wppb-purchase-restrict-user-role'] );
249 foreach ( $restrict_roles as $role ) {
250 if( !empty( $role ) )
251 add_post_meta($post_id, 'wppb-purchase-restrict-user-role', sanitize_text_field( $role ) );
252 }
253
254 }
255
256 if( isset( $_POST['wppb-purchase-restrict-user-status'] ) && $_POST['wppb-purchase-restrict-user-status'] === 'loggedin' )
257 update_post_meta( $post_id, 'wppb-purchase-restrict-user-status', 'loggedin' );
258 else
259 delete_post_meta( $post_id, 'wppb-purchase-restrict-user-status' );
260
261 // save custom "product purchase restricted" message
262 update_post_meta( $post_id, 'wppb-content-restrict-message-purchasing_restricted', ( ! empty( $_POST['wppb-content-restrict-message-purchasing_restricted'] ) ? wp_kses_post($_POST['wppb-content-restrict-message-purchasing_restricted']) : '' ) );
263
264 }
265 add_action( 'save_post', 'wppb_content_restriction_save_data' );
266 add_action( 'edit_attachment', 'wppb_content_restriction_save_data' );
267