478 lines
12 KiB
PHP
478 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* Legacy Functions and Classes
|
|
*
|
|
* @package WP_Ultimo\Functions
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
defined('ABSPATH') || exit;
|
|
|
|
// phpcs:disable
|
|
|
|
/**
|
|
* Return the instance of the function
|
|
*/
|
|
function WU_Signup() {
|
|
|
|
return \WP_Ultimo\Checkout\Legacy_Checkout::get_instance();
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* We need to load our functions in case people access this from wp-signup without the .php extension
|
|
*/
|
|
|
|
if (!function_exists('validate_blog_form')) {
|
|
|
|
function validate_blog_form() {
|
|
$user = '';
|
|
if ( is_user_logged_in() ) {
|
|
$user = wp_get_current_user();
|
|
}
|
|
|
|
return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (!function_exists('validate_user_form')) {
|
|
|
|
function validate_user_form() {
|
|
return wpmu_validate_user_signup($_POST['user_name'], $_POST['user_email']);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* Builds HTML attributes from a PHP array
|
|
*
|
|
* @param array $attributes
|
|
* @return void
|
|
*/
|
|
function wu_create_html_attributes_from_array($attributes = []) {
|
|
|
|
$output = '';
|
|
|
|
foreach ($attributes as $name => $value) {
|
|
if (is_bool($value)) {
|
|
if ($value) {
|
|
$output .= $name . ' ';
|
|
}
|
|
} else {
|
|
$output .= sprintf('%s="%s"', $name, $value);
|
|
}
|
|
}
|
|
|
|
return $output;
|
|
|
|
}
|
|
|
|
/**
|
|
* Display one single option
|
|
*
|
|
* @since 1.7.3
|
|
* @param string $option_value
|
|
* @param string $option_label
|
|
* @return void
|
|
*/
|
|
function wu_print_signup_field_option($option_value, $option_label, $field = []) { ?>
|
|
|
|
<option <?php selected(isset($field['default']) && $field['default'] == $option_value); ?> value="<?php echo $option_value; ?>"><?php echo $option_label; ?></option>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Displays the option tags of an select field
|
|
*
|
|
* @since 1.7.3
|
|
* @param array $options
|
|
* @return void
|
|
*/
|
|
function wu_print_signup_field_options($options, $field = []) {
|
|
|
|
foreach ($options as $option_value => $option_label) {
|
|
|
|
if (is_array($option_label)) {
|
|
|
|
echo sprintf('<optgroup label="%s">', $option_value);
|
|
|
|
foreach ($option_label as $option_value => $option_label) {
|
|
|
|
wu_print_signup_field_option($option_value, $option_label, $field);
|
|
|
|
}
|
|
|
|
echo '</optgroup>';
|
|
|
|
} else {
|
|
|
|
wu_print_signup_field_option($option_value, $option_label, $field);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Print sing-up fields
|
|
*
|
|
* @param string $field_slug
|
|
* @param array $field
|
|
* @param array $results
|
|
* @return void
|
|
*/
|
|
function wu_print_signup_field($field_slug, $field, $results) {
|
|
|
|
$display = true;
|
|
|
|
// Requires Logic
|
|
if (isset($field['requires']) && is_array($field['requires'])) {
|
|
|
|
$display = false;
|
|
|
|
/**
|
|
* Builds required elements list
|
|
*/
|
|
|
|
$elements = array_keys($field['requires']);
|
|
$elements = implode(', ', $elements);
|
|
|
|
wp_enqueue_script('jquery');
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var requires = <?php echo json_encode($field['requires']); ?>,
|
|
target_field = document.getElementById('<?php echo $field_slug; ?>-field');
|
|
|
|
var display_field = function(target_field, requires, velocity) {
|
|
|
|
var conditions_count = Object.keys(requires).length,
|
|
conditions_met = 0;
|
|
|
|
requires.forEach(function(element, value) {
|
|
|
|
var element = document.getElementById(element),
|
|
element_value = element.value;
|
|
|
|
if (element.type === "checkbox") {
|
|
|
|
var is_checked = element.checked;
|
|
|
|
if (is_checked === value) {
|
|
conditions_met++;
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
value = Array.isArray(value) ? value : [value];
|
|
|
|
if (value.indexOf(element_value) > -1) {
|
|
|
|
conditions_met++;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (conditions_met == conditions_count) {
|
|
|
|
target_field.slideDown(velocity);
|
|
|
|
} else {
|
|
|
|
target_field.slideUp(velocity);
|
|
|
|
} // end
|
|
|
|
}
|
|
|
|
display_field(target_field, requires, 0);
|
|
|
|
[<?php echo $elements; ?>].forEach(function(element) {
|
|
document.getElementById(element).addEventListener('change', function() {
|
|
display_field(target_field, requires, 300);
|
|
});
|
|
});
|
|
|
|
});
|
|
</script>
|
|
|
|
<?php
|
|
|
|
}
|
|
|
|
$wrapper_attributes = '';
|
|
$attributes = '';
|
|
|
|
/**
|
|
* Builds Attributes display
|
|
*/
|
|
if (isset($field['wrapper_attributes']) && $field['wrapper_attributes']) {
|
|
|
|
$wrapper_attributes = wu_create_html_attributes_from_array($field['wrapper_attributes']);
|
|
|
|
}
|
|
|
|
if (isset($field['attributes']) && $field['attributes']) {
|
|
|
|
$attributes = wu_create_html_attributes_from_array($field['attributes']);
|
|
|
|
}
|
|
|
|
/**
|
|
* Switch type for display
|
|
*/
|
|
switch ($field['type']) {
|
|
|
|
/**
|
|
* Normal Text Inputs
|
|
*/
|
|
case 'text':
|
|
case 'number':
|
|
case 'email':
|
|
case 'url':
|
|
?>
|
|
|
|
<p <?php echo $wrapper_attributes; ?> id="<?php echo $field_slug; ?>-field" <?php echo $wrapper_attributes; ?> style="<?php echo $display ? '' : 'display: none'; ?>" >
|
|
|
|
<label for="<?php echo $field_slug; ?>"><?php echo $field['name']; ?> <?php echo wu_tooltip($field['tooltip']); ?><br>
|
|
<input <?php echo $attributes; ?> <?php echo isset($field['required']) && $field['required'] ? 'required' : ''; ?> type="<?php echo $field['type']; ?>" name="<?php echo $field_slug; ?>" id="<?php echo $field_slug; ?>" class="input" value="<?php echo $results[$field_slug] ?? ''; ?>" size="20"></label>
|
|
|
|
|
|
<?php
|
|
if ($error_message = $results['errors']->get_error_message($field_slug)) {
|
|
echo '<p class="error">' . $error_message . '</p>';
|
|
}
|
|
|
|
?>
|
|
|
|
</p>
|
|
|
|
<?php
|
|
break;
|
|
|
|
case 'password':
|
|
wp_enqueue_script('utils');
|
|
wp_enqueue_script('user-profile');
|
|
?>
|
|
|
|
<p <?php echo $wrapper_attributes; ?> id="<?php echo $field_slug; ?>-field" <?php echo $wrapper_attributes; ?> style="<?php echo $display ? '' : 'display: none'; ?>" >
|
|
|
|
<?php
|
|
if (isset($field['display_force']) && $field['display_force']) :
|
|
|
|
$suffix = WP_Ultimo()->min;
|
|
|
|
wp_enqueue_script('wu-password-verify', WP_Ultimo()->get_asset("wu-password-verify$suffix.js", 'js'), ['jquery'], true);
|
|
|
|
?>
|
|
|
|
<span class="password-input-wrapper" style="display: block;">
|
|
<label for="<?php echo $field_slug; ?>"><?php echo $field['name']; ?> <?php echo wu_tooltip($field['tooltip']); ?><br>
|
|
<input <?php echo $attributes; ?> <?php echo isset($field['required']) && $field['required'] ? 'required' : ''; ?> type="<?php echo $field['type']; ?>" name="<?php echo $field_slug; ?>" id="<?php echo $field_slug; ?>" class="input" value="<?php echo $results[$field_slug] ?? ''; ?>" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" class="input" size="20" autocomplete="off" aria-describedby="pass-strength-result" />
|
|
</span>
|
|
|
|
<span style="display: block; margin-top: -16px; opacity: 1; height: 36px;" id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php _e( 'Strength indicator' ); ?></span>
|
|
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var input = document.getElementById('<?php echo $field_slug; ?>');
|
|
input.addEventListener('keyup', function() {
|
|
wu_check_pass_strength('#<?php echo $field_slug; ?>', '#<?php echo $field_slug; ?>');
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<?php else : ?>
|
|
|
|
<label for="<?php echo $field_slug; ?>"><?php echo $field['name']; ?> <?php echo wu_tooltip($field['tooltip']); ?><br>
|
|
<input <?php echo $attributes; ?> <?php echo isset($field['required']) && $field['required'] ? 'required' : ''; ?> type="<?php echo $field['type']; ?>" name="<?php echo $field_slug; ?>" id="<?php echo $field_slug; ?>" class="input" value="<?php echo $results[$field_slug] ?? ''; ?>" size="20"></label>
|
|
|
|
<?php endif; ?>
|
|
|
|
<?php
|
|
if ($error_message = $results['errors']->get_error_message($field_slug)) {
|
|
echo '<p class="error">' . $error_message . '</p>';
|
|
}
|
|
|
|
?>
|
|
|
|
</p>
|
|
|
|
<?php
|
|
break;
|
|
|
|
/**
|
|
* Case HTML
|
|
*/
|
|
case 'html':
|
|
?>
|
|
|
|
<div <?php echo $wrapper_attributes; ?> id="<?php echo $field_slug; ?>-field">
|
|
<?php echo $field['content']; ?>
|
|
</div>
|
|
|
|
<?php
|
|
break;
|
|
|
|
/**
|
|
* Case Submit Button
|
|
*/
|
|
case 'submit':
|
|
?>
|
|
|
|
<p class="submit">
|
|
|
|
<input name="signup_form_id" type="hidden" value="1">
|
|
|
|
<button id="wp-submit" <?php echo $attributes; ?> type="submit" class="button button-primary button-large button-next" value="1" name="save_step">
|
|
<?php esc_attr_e($field['name'], 'wp-multisite-waas'); ?>
|
|
</button>
|
|
|
|
<?php wp_nonce_field('signup_form_1', '_signup_form'); ?>
|
|
|
|
</p>
|
|
|
|
<?php
|
|
break;
|
|
|
|
/**
|
|
* Case Select
|
|
*/
|
|
case 'select':
|
|
?>
|
|
|
|
<p <?php echo $wrapper_attributes; ?> id="<?php echo $field_slug; ?>-field" style="<?php echo $display ? '' : 'display: none'; ?>">
|
|
|
|
<label for="<?php echo $field_slug; ?>"><?php echo $field['name']; ?> <?php echo wu_tooltip($field['tooltip']); ?><br>
|
|
|
|
<select <?php echo $attributes; ?> <?php echo isset($field['required']) && $field['required'] ? 'required' : ''; ?> name="<?php echo $field_slug; ?>" id="<?php echo $field_slug; ?>" class="input" value="<?php echo $results[$field_slug] ?? ''; ?>">
|
|
|
|
<?php wu_print_signup_field_options($field['options'], $field); ?>
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<?php
|
|
if ($error_message = $results['errors']->get_error_message($field_slug)) {
|
|
echo '<p class="error">' . $error_message . '</p>';
|
|
}
|
|
|
|
?>
|
|
|
|
</p>
|
|
|
|
<?php
|
|
break;
|
|
|
|
/**
|
|
* Case Checkbox
|
|
*/
|
|
case 'checkbox':
|
|
$checked = isset($field['check_if']) && isset($result[$field['check_if']])
|
|
|| (isset($field['check_if']) && isset($_POST[$field['check_if']]) && $_POST[$field['check_if']])
|
|
|| (isset($field['checked']) && $field['checked']);
|
|
?>
|
|
|
|
<p>
|
|
|
|
<label for="<?php echo $field_slug; ?>">
|
|
<input type="checkbox" name="<?php echo $field_slug; ?>" value="1" id="<?php echo $field_slug; ?>" <?php echo checked($checked, true); ?>>
|
|
<?php echo $field['name']; ?>
|
|
</label>
|
|
|
|
<br>
|
|
|
|
<?php
|
|
if ($error_message = $results['errors']->get_error_message($field_slug)) {
|
|
echo '<p class="error">' . $error_message . '</p>';
|
|
}
|
|
|
|
?>
|
|
|
|
<br>
|
|
|
|
</p>
|
|
|
|
<?php
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
/**
|
|
* Alias function to allow creation of users for WP Multisite WaaS.
|
|
*
|
|
* User Data should contain: user_login, user_email, user_pass;
|
|
* Plan Data should contain: plan_id, plan_freq;
|
|
* User Meta is an associative array containing key => value pairs to be saved as meta fields on that user.
|
|
*
|
|
* @param array $user_data
|
|
* @param array $plan_data
|
|
* @param array $user_meta
|
|
* @return int|bool
|
|
*/
|
|
function wu_create_user(array $user_data, array $plan_data, array $user_meta = []) {
|
|
|
|
return WU_Signup()->create_user($user_data, $plan_data, $user_meta);
|
|
|
|
}
|
|
|
|
/**
|
|
* Alias function to allow creation of sites for WP Multisite WaaS.
|
|
*
|
|
* Site Data should contain: blog_title, blogname, and role;
|
|
* Site Meta is an associative array containing key => value pairs to be saved as meta fields on that site.
|
|
*
|
|
* @param integer $user_id
|
|
* @param array $site_data
|
|
* @param boolean $template_id
|
|
* @param array $site_meta
|
|
* @return void
|
|
*/
|
|
function wu_create_site_legacy($user_id, array $site_data, $template_id = false, $site_meta = []) {
|
|
|
|
return WU_Signup()->create_site($user_id, $site_data, $template_id, $site_meta);
|
|
|
|
}
|
|
/**
|
|
* Alias function that adds a new Step to the sign-up flow
|
|
*
|
|
* @since 1.4.0
|
|
* @param string $id
|
|
* @param integer $order
|
|
* @return void
|
|
*/
|
|
function wu_add_signup_step($id, $order, array $step) {
|
|
|
|
return WU_Signup()->add_signup_step($id, $order, $step);
|
|
|
|
}
|
|
|
|
/**
|
|
* Alias function that adds a new field to a step the sign-up flow
|
|
*
|
|
* @since 1.4.0
|
|
* @param string $step
|
|
* @param string $id
|
|
* @param integer $order
|
|
* @param array $step
|
|
* @return void
|
|
*/
|
|
function wu_add_signup_field($step, $id, $order, $field) {
|
|
|
|
return WU_Signup()->add_signup_field($step, $id, $order, $field);
|
|
|
|
}
|