Current File : /home/inteuuod/public_html/wp-content/plugins/userswp/includes//class-templates.php
<?php
/**
* Template related functions
*
* This class defines all code necessary for UsersWP templates like login. register etc.
*
* @since 1.0.0
* @author GeoDirectory Team <info@wpgeodirectory.com>
*/
class UsersWP_Templates {
/**
* The function is use for Retrieve the name of the highest
* priority template file that exists.
*
* @param string $template_name Template files to search for, in order.
* @param string $template_path Optional. Template path. Default null.
* @param string $default_path Optional. Default path. Default null.
*
* @return string Template path.
*/
public static function locate_template( $template_name, $template_path = '', $default_path = '' ) {
if ( ! $template_path ) {
$template_path = uwp_get_theme_template_dir_name();
}
if ( ! $default_path ) {
$default_path = uwp_get_templates_dir();
}
// Look within passed path within the theme - this is priority.
$template = locate_template(
array(
untrailingslashit( $template_path ) . '/' . $template_name,
$template_name,
)
);
// Get default template
if ( ! $template ) {
$template = untrailingslashit( $default_path ) . '/' . $template_name;
}
// Return what we found.
return apply_filters( 'uwp_locate_template', $template, $template_name, $template_path );
}
/**
*
* Displays default content for UWP pages
*
* @param $content
*
* @return string
*/
public static function setup_singular_page_content( $content ) {
global $post, $wp_query;
if ( ! is_uwp_page() ) {
return $content;
}
if ( ! ( ! empty( $wp_query ) && ! empty( $post ) && ( $post->ID == get_queried_object_id() ) ) ) {
return $content;
}
/*
* Some page builders need to be able to take control here so we add a filter to bypass it on the fly
*/
if ( apply_filters( 'uwp_bypass_setup_singular_page', false ) ) {
return $content;
}
remove_filter( 'the_content', array( __CLASS__, 'setup_singular_page_content' ) );
if ( in_the_loop() ) {
if ( $content == '' ) {
if ( is_uwp_profile_page() ) {
$content = '[uwp_profile]';
} elseif ( is_uwp_register_page() ) {
$content = '[uwp_register]';
} elseif ( is_uwp_login_page() ) {
$content = '[uwp_login]';
} elseif ( is_uwp_forgot_page() ) {
$content = '[uwp_forgot]';
} elseif ( is_uwp_change_page() ) {
$content = '[uwp_change]';
} elseif ( is_uwp_reset_page() ) {
$content = '[uwp_reset]';
} elseif ( is_uwp_account_page() ) {
$content = '[uwp_account]';
} elseif ( is_uwp_users_page() ) {
$content = '[uwp_users]';
} elseif ( is_uwp_users_item_page() ) {
$content = UsersWP_Defaults::page_user_list_item_content();
} else {
// do nothing
}
// run the shortcodes on the content
$content = do_shortcode( $content );
// run block content if its available
if ( function_exists( 'do_blocks' ) ) {
$content = do_blocks( $content );
}
}
}
// add our filter back
add_filter( 'the_content', array( __CLASS__, 'setup_singular_page_content' ) );
return $content;
}
/**
*
* Returns content for the users list item template
*
* @return string
*/
public static function users_list_item_template_content() {
$item_page_id = uwp_get_option( 'user_list_item_page', 0 );
$content = get_post_field( 'post_content', $item_page_id );
/*
* Some page builders need to be able to take control here so we add a filter to bypass it on the fly
*/
$bypass_content = apply_filters( 'uwp_bypass_users_list_item_template_content', '', $content, $item_page_id );
if ( $bypass_content ) {
return $bypass_content;
}
// if the content is blank then we grab the page defaults
if ( $content == '' ) {
$content = UsersWP_Defaults::page_user_list_item_content();
}
// run the shortcodes on the content
$content = do_shortcode( $content );
// run block content if its available
if ( function_exists( 'do_blocks' ) ) {
$content = do_blocks( $content );
}
return $content;
}
/**
* Disable our sub templates access from frontend.
*
* @global object $post WordPress Post object.
*
* @since 1.2.1.2
*/
public static function redirect_templates_sub_pages() {
global $post;
if ( isset( $post->ID ) && ! current_user_can( 'administrator' ) && (
$post->ID == uwp_get_page_id( 'user_list_item_page' )
) ) {
wp_redirect( home_url(), 301 );
exit;
}
}
/**
* Doing some access checks for UsersWP related pages.
*
* @return bool
* @package userswp
* @since 1.0.0
*/
public function access_checks() {
global $post;
if ( ! is_page() ) {
return false;
}
if ( uwp_is_page_builder() ) {
return false;
}
$current_page_id = $post->ID;
$register_page = uwp_get_page_id( 'register_page', false );
$login_page = uwp_get_page_id( 'login_page', false );
$forgot_page = uwp_get_page_id( 'forgot_page', false );
$reset_page = uwp_get_page_id( 'reset_page', false );
$change_page = uwp_get_page_id( 'change_page', false );
$account_page = uwp_get_page_id( 'account_page', false );
if ( ( $register_page && ( (int) $register_page == $current_page_id ) ) ||
( $login_page && ( (int) $login_page == $current_page_id ) ) ||
( $forgot_page && ( (int) $forgot_page == $current_page_id ) ) ||
( $reset_page && ( (int) $reset_page == $current_page_id ) ) ) {
if ( is_user_logged_in() ) {
$redirect_page_id = uwp_get_page_id( 'account_page', false );
if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url_raw( $_REQUEST['redirect_to'] );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id > 0 ) {
$redirect_to = get_permalink( $redirect_page_id );
} else {
$redirect_to = home_url( '/' );
}
$redirect_to = apply_filters( 'uwp_logged_in_redirect', $redirect_to );
wp_safe_redirect( $redirect_to );
exit();
}
} elseif ( $account_page && ( (int) $account_page == $current_page_id ) ||
( $change_page && ( (int) $change_page == $current_page_id ) ) ) {
if ( ! is_user_logged_in() ) {
if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url( $_REQUEST['redirect_to'] );
$login_page = add_query_arg(
array(
'redirect_to' => $redirect_to,
),
get_permalink($login_page)
);
} else {
$login_page = get_permalink($login_page);
}
wp_safe_redirect( $login_page );
exit();
} else {
$can_user_can_edit_account = apply_filters( 'uwp_user_can_edit_own_profile', true, get_current_user_id() );
if ( ! $can_user_can_edit_account && ( (int) $account_page == $current_page_id ) ) {
wp_safe_redirect( home_url( '/' ) );
exit();
}
}
} else {
return false;
}
return false;
}
/**
* If auto generated password, redirects to change password page.
*
* @return void
* @package userswp
* @since 1.0.0
*/
public function change_default_password_redirect() {
if ( ! is_user_logged_in() ) {
return;
}
if ( 1 == uwp_get_option( 'change_disable_password_nag' ) ) {
return;
}
if ( uwp_is_page_builder() ) {
return;
}
$change_page = uwp_get_page_id( 'change_page', false );
$password_nag = get_user_option( 'default_password_nag', get_current_user_id() );
if ( $password_nag ) {
if ( is_page() ) {
global $post;
$current_page_id = $post->ID;
if ( $change_page && ( (int) $change_page == $current_page_id ) ) {
return;
}
}
if ( $change_page ) {
wp_safe_redirect( get_permalink( $change_page ) );
exit();
}
}
}
/**
* Redirects /profile to /profile/{username} for loggedin users.
*
* @return void
* @package userswp
* @since 1.0.0
*/
public function profile_redirect() {
if ( uwp_is_page_builder() ) {
return;
}
if ( is_page() ) {
global $wp_query, $post;
$current_page_id = $post->ID;
$profile_page = uwp_get_page_id( 'profile_page', false );
if ( $profile_page && ( (int) $profile_page == $current_page_id ) ) {
if ( isset( $wp_query->query_vars['uwp_profile'] ) ) {
//must be profile page
$url_type = apply_filters( 'uwp_profile_url_type', 'slug' );
$author_slug = $wp_query->query_vars['uwp_profile'];
if ( $url_type == 'id' ) {
$user = get_user_by( 'id', $author_slug );
} else {
$user = get_user_by( 'slug', $author_slug );
}
if ( ! isset( $user->ID ) ) {
global $wp_query;
$wp_query->set_404();
status_header( 404 );
}
} else {
if ( is_user_logged_in() ) {
$user_id = get_current_user_id();
$obj = new UsersWP_Profile();
$profile_url = $obj->get_profile_link( get_author_posts_url( $user_id ), $user_id );
wp_safe_redirect( $profile_url );
exit();
} else {
$redirect_to = apply_filters( 'uwp_no_login_profile_redirect', home_url( '/' ) );
wp_safe_redirect( $redirect_to );
exit();
}
}
}
}
}
/**
* Redirects user to a predefined page after logging out.
*
* @return void
* @package userswp
* @since 1.0.0
*/
public function logout_redirect() {
$redirect_page_id = uwp_get_page_id( 'logout_redirect_to' );
if ( isset( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url( $_REQUEST['redirect_to'] );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id > 0 ) {
$redirect_to = get_permalink( $redirect_page_id );
} else {
$redirect_to = home_url( '/' );
}
$redirect_to = apply_filters( 'uwp_logout_redirect', $redirect_to );
wp_safe_redirect( $redirect_to );
exit();
}
/**
* Redirects wp-login.php to UsersWP login page.
*
* @return void
* @package userswp
* @since 1.0.0
*/
public function wp_login_redirect() {
global $pagenow;
if ( 'wp-login.php' == $pagenow && ! isset( $_REQUEST['action'] ) ) {
$login_page_id = uwp_get_page_id( 'login_page', false );
$block_wp_login = uwp_get_option( 'block_wp_login', '' );
if ( $login_page_id && $block_wp_login == '1' ) {
$redirect_to = get_permalink( $login_page_id );
if ( $redirect_to ) {
$redirect_to = add_query_arg( 'redirect_to', admin_url(), $redirect_to );
}
wp_safe_redirect( $redirect_to );
exit();
}
}
}
/**
* Redirects wp-login.php?action=register to UsersWP registration page.
*
* @return void
* @package userswp
* @since 1.0.0
*/
public function wp_register_redirect() {
global $pagenow;
if ( 'wp-login.php' == $pagenow && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'register' ) {
$reg_page_id = uwp_get_page_id( 'register_page' );
$block_wp_reg = uwp_get_option( 'wp_register_redirect' );
if ( $reg_page_id && $block_wp_reg == '1' ) {
$redirect = isset( $_REQUEST['redirect_to'] ) ? esc_url( $_REQUEST['redirect_to'] ) : '';
$redirect_to = get_permalink( $reg_page_id );
if ( $redirect ) {
$redirect_to = add_query_arg( 'redirect_to', $redirect, $redirect_to );
}
wp_safe_redirect( $redirect_to );
exit();
}
}
}
/**
* Changes the login url to the UWP login page.
*
* @param $login_url string The URL for login.
* @param $redirect string The URL to redirect back to upon successful login.
* @param $force_reauth bool Whether to force reauthorization, even if a cookie is present.
*
* @return string The login url.
* @package userswp
*
* @since 1.0.12
*/
public function wp_login_url( $login_url, $redirect, $force_reauth ) {
global $pagenow;
if ( class_exists( 'Jetpack' ) && 'wp-login.php' == $pagenow && Jetpack::is_module_active( 'sso' ) ) {
return $login_url; // Do not change the URL for Jetpack SSO
}
if( did_action('init') === 0 ){
return $login_url; // Some plugin calls login link very early.
}
$login_page_id = uwp_get_page_id( 'login_page', false );
$redirect_page_id = uwp_get_page_id( 'login_redirect_to' );
if ( ( ! is_admin() || wp_doing_ajax() ) && $login_page_id ) {
$login_page = get_permalink( $login_page_id );
if ( $redirect ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $login_page );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id == - 1 && wp_get_referer() ) {
$redirect_to = esc_url( wp_get_referer() );
$login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
} elseif ( isset( $redirect_page_id ) && $redirect_page_id > 0 ) {
$redirect_to = get_permalink( $redirect_page_id );
$login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
} else {
$login_url = $login_page;
}
}
return $login_url;
}
/**
* Changes the register url with the UWP register page.
*
* @param $register_url string The URL for register.
*
* @return string The register url.
* @since 1.0.22
*
*/
public function wp_register_url( $register_url ) {
$register_page_id = uwp_get_page_id( 'register_page' );
$redirect_page_id = uwp_get_page_id( 'register_redirect_to' );
$redirect = isset( $_REQUEST['redirect_to'] ) ? esc_url( $_REQUEST['redirect_to'] ) : '';
if ( isset( $register_page_id ) && $register_page_id > 0 ) {
$register_page = get_permalink( $register_page_id );
if ( $register_url && isset( $redirect ) && ! empty( $redirect ) ) {
$register_url = add_query_arg( 'redirect_to', $redirect, $register_page );
} elseif ( (int) $redirect_page_id > 0 ) {
$redirect_to = get_permalink( $redirect_page_id );
$register_url = add_query_arg( 'redirect_to', $redirect_to, $register_page );
} else {
$register_url = $register_page;
}
}
return $register_url;
}
/**
* Changes the lost password url with the UWP page.
*
* @param $lostpassword_url string The URL for lost password.
*
* @return string The lost password page url.
*/
public function wp_lostpassword_url( $lostpassword_url ) {
$forgot_page_url = uwp_get_forgot_page_url();
if ( is_multisite() && isset( $_GET['redirect_to'] ) && false !== strpos( wp_unslash( $_GET['redirect_to'] ), network_admin_url() ) ) {
return $lostpassword_url;
}
$redirect = isset( $_REQUEST['redirect_to'] ) ? esc_url( $_REQUEST['redirect_to'] ) : '';
if ( $forgot_page_url ) {
if ( $forgot_page_url && isset( $redirect ) && ! empty( $redirect ) ) {
$lostpassword_url = add_query_arg( 'redirect_to', $redirect, $forgot_page_url );
} else {
$lostpassword_url = $forgot_page_url;
}
}
return $lostpassword_url;
}
/**
* Prints html for form fields of that particular form.
*
* @param string $form_type Form type.
*
* @return void
* @since 1.0.0
* @package userswp
*/
public function template_fields( $form_type, $args = array() ) {
global $wpdb, $aui_bs5;
$table_name = uwp_get_table_prefix() . 'uwp_form_fields';
$extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
$form_id = ! empty( $args['id'] ) ? (int) $args['id'] : uwp_get_option('register_modal_form', 1);
if ( $form_type == 'register' ) {
$fields = get_register_form_fields($form_id);
$form_limit = ! empty( $args['limit'] ) ? $args['limit'] : '';
if(isset($form_limit) && !is_array($form_limit)){
$form_limit = explode(',', $form_limit);
}
if(isset($form_limit) && !empty($form_limit) && count($form_limit) > 1){
$form_limit = array_map('uwp_clean', $form_limit);
$form_limit = array_map('trim', $form_limit);
$options = uwp_get_register_forms_dropdown_options($form_limit);
$id = wp_doing_ajax() ? "uwp-form-select-ajax" : 'uwp-form-select';
?>
<div class="btn-group btn-group-sm d-flex mb-2" role="group" id="<?php echo esc_attr( $id ); ?>">
<?php
$options = array_chunk( $options, 5, true );
$current_url = uwp_current_page_url();
if ( isset( $options[0] ) && ! empty( $options[0] ) && count( $options[0] ) > 1 ) {
foreach ( $options[0] as $id => $val ) {
$active = $form_id == $id ? 'active' : '';
$url = esc_url_raw( add_query_arg( array( 'uwp_form_id' => $id ), $current_url ) );
echo aui()->button( array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'a',
'href' => '#',
'class' => 'btn btn-outline-primary '. esc_attr( $active ),
'content' => esc_attr( $val ),
'extra_attributes' => array('data-form_id'=> esc_attr( $id ) )
) );
}
}elseif(count( $options[0] ) == 1){
$form_id = key($options[0]);
}
if ( isset( $options[1] ) && ! empty( $options[1] ) && count( $options[1] ) > 0 ) {
foreach ( $options[1] as $id => $val ) {
$active = $form_id == $id ? 'active' : '';
$url = esc_url_raw( add_query_arg( array( 'uwp_form_id' => $id ), $current_url ) );
?>
<div class="btn-group" role="group">
<button id="uwp-form-select-dropdown" type="button" class="btn btn-secondary dropdown-toggle" data-<?php echo ( $aui_bs5 ? 'bs-' : '' ); ?>toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<?php esc_attr_e('More', 'userswp'); ?>
</button>
<div class="dropdown-menu mt-3" aria-labelledby="uwp-form-select">
<?php
echo aui()->button( array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'a',
'href' => esc_url( $url ),
'class' => 'dropdown-item ' . esc_attr( $active ),
'content' => esc_attr( $val ),
'extra_attributes' => array('data-form_id'=> esc_attr( $id ) )
) );
?>
</div>
</div>
<?php
}
}
?>
</div>
<?php
}
} elseif ( $form_type == 'account' ) {
$fields = get_account_form_fields();
} elseif ( $form_type == 'change' ) {
$fields = get_change_form_fields();
} else {
$fields = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $table_name . " WHERE form_type = %s AND is_active = '1' AND for_admin_use != '1' ORDER BY sort_order ASC", array( $form_type ) ) );
}
if ( ! empty( $fields ) ) {
foreach ( $fields as $field ) {
if ( $form_type == 'account' ) {
if ( $field->htmlvar_name == 'display_name' ) {
if ( $field->is_active != '1' ) {
continue;
}
}
if ( $field->htmlvar_name == 'bio' ) {
if ( $field->is_active != '1' ) {
continue;
}
}
}
if ( $form_type == 'register' ) {
if ( $field->is_active != '1' ) {
continue;
}
$count = $wpdb->get_var( $wpdb->prepare( "select count(*) from " . $extras_table_name . " where site_htmlvar_name=%s AND form_type = %s AND form_id=%d", array(
$field->htmlvar_name,
$form_type,
$form_id
) ) );
if ( $count == 1 ) {
$this->template_fields_html( $field, $form_type );
}
} else {
$this->template_fields_html( $field, $form_type );
}
}
}
}
/**
* Prints field html based on field type.
*
* @param object $field Field info.
* @param string $form_type Form type.
* @param int|bool $user_id User ID.
*
* @return void
* @since 1.0.0
* @package userswp
*/
public function template_fields_html( $field, $form_type, $user_id = false ) {
if ( ! $user_id ) {
$user_id = get_current_user_id();
}
$value = $this->get_default_form_value( $field );
if ( $form_type == 'account' ) {
$user_data = get_userdata( $user_id );
if ( $field->htmlvar_name == 'email' ) {
$value = $user_data->user_email;
} elseif ( $field->htmlvar_name == 'password' ) {
$value = '';
$field->is_required = 0;
} elseif ( $field->htmlvar_name == 'confirm_password' ) {
$value = '';
$field->is_required = 0;
} else {
$value = uwp_get_usermeta( $user_id, $field->htmlvar_name, false );
if ( $value != '0' && ! $value ) {
$value = $this->get_default_form_value( $field );
}
}
}
if ( ! isset( $value ) ) {
$value = "";
}
if ( isset( $_POST[ $field->htmlvar_name ] ) && $field->field_type != 'password' ) {
$value = isset( $_POST[ $field->htmlvar_name ] ) ? $_POST[ $field->htmlvar_name ] : ''; //@todo: Used to pre fill form when validation fails, need to find better solution
}
if ( 'checkbox' == $field->field_type ) {
if ( in_array( $value, array( 'true', 'on', 1 ) ) ) {
$value = 1;
} else {
$value = 0;
}
}
$field = apply_filters( "uwp_form_input_field_{$field->field_type}", $field, $value, $form_type );
$html = apply_filters( "uwp_form_input_html_{$field->field_type}", "", $field, $value, $form_type );
if ( empty( $html ) ) {
$design_style = uwp_get_option( "design_style", "bootstrap" );
$bs_form_group = $design_style ? "form-group mb-3" : "";
$bs_sr_only = $design_style ? "sr-only" : "";
$bs_form_control = $design_style ? "form-control" : "";
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="<?php if ( $field->is_required ) {
echo 'required_field';
} ?> uwp_form_row clearfix uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
$label = $site_title = uwp_get_form_label( $field );
if ( ! is_admin() ) { ?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_attr( $site_title ) : ' '; ?>
<?php if ( $field->is_required ) {
echo '<span>*</span>';
} ?>
</label>
<?php } ?>
<input name="<?php echo esc_attr($field->htmlvar_name); ?>"
class="<?php echo esc_attr($field->css_class); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr($label); ?>"
<?php if ( $field->for_admin_use == 1 ) {
echo 'readonly="readonly"';
} ?>
<?php if ( $field->is_required == 1 ) {
echo 'required="required"';
} ?>
type="<?php echo esc_attr($field->field_type); ?>"
value="<?php echo esc_html( $value ); ?>">
</div>
<?php
} else {
echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
/**
* Returns default value based on field type.
*
* @param object $field Field info.
*
* @return string Field default value.
* @since 1.0.0
* @package userswp
*/
public function get_default_form_value( $field ) {
if ( $field->field_type == 'url' ) {
if ( substr( $field->default_value, 0, 4 ) === "http" ) {
$value = $field->default_value;
} else {
$value = "";
}
} else {
$value = $field->default_value;
}
return $value;
}
/**
* Display redirect to input of that particular form.
*
* @param string $form_type Form type.
*
* @return void
* @since 1.0.21
* @package userswp
*/
public function template_extra_fields( $form_type, $args = array() ) {
if ( $form_type == 'login' ) {
$redirect_to = '';
if ( isset( $args['redirect_to'] ) && ! empty( $args['redirect_to'] ) ) {
$redirect_to = $args['redirect_to'];
} elseif ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url( urldecode( $_REQUEST['redirect_to'] ) );
} else {
if ( - 1 == uwp_get_option( 'login_redirect_to', - 1 ) ) {
$referer = wp_get_referer();
if ( isset( $referer ) && ! empty( $referer ) ) {
$redirect_to = $referer;
} else {
$redirect_to = home_url();
}
}
}
$redirect_to = apply_filters('uwp_login_redirect_to', $redirect_to, $args);
if ( $redirect_to ) {
echo '<input type="hidden" name="redirect_to" value="' . esc_url( $redirect_to ) . '"/>';
}
echo '<input type="hidden" name="uwp_login_nonce" value="' . esc_attr( wp_create_nonce( 'uwp-login-nonce' ) ) . '" />';
} elseif ( $form_type == 'register' ) {
$redirect_to = '';
$form_id = ! empty( $args['id'] ) ? $args['id'] : 1;
if ( isset( $args['redirect_to'] ) && ! empty( $args['redirect_to'] ) ) {
$redirect_to = $args['redirect_to'];
} else {
$redirect_to_value = uwp_get_register_form_by( $form_id, 'redirect_to');
if(!$redirect_to_value){
$redirect_to_value = uwp_get_option( 'register_redirect_to', - 1 );
}
if ( - 1 == $redirect_to_value) {
$referer = wp_get_referer();
if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url( urldecode( $_REQUEST['redirect_to'] ) );
} else if ( isset( $referer ) && ! empty( $referer ) ) {
$redirect_to = $referer;
} else {
$redirect_to = home_url();
}
}
}
$redirect_to = apply_filters('uwp_register_redirect_to', $redirect_to, $args);
if ( $redirect_to ) {
echo '<input type="hidden" name="redirect_to" value="' . esc_url( $redirect_to ) . '"/>';
}
$hash = substr( hash( 'SHA256', AUTH_KEY . site_url() ), 0, 25 );
echo '<input type="hidden" name="uwp_register_hash" value="' . esc_html( $hash ) . '" style="display:none !important; visibility:hidden !important;" />';
echo '<input type="hidden" name="uwp_register_hp" value="" style="display:none !important; visibility:hidden !important;" size="25" autocomplete="off" />';
echo '<input type="hidden" name="uwp_register_nonce" value="' . esc_attr( wp_create_nonce( 'uwp-register-nonce' ) ) . '" />';
echo '<input type="hidden" name="uwp_register_form_id" value="' . absint($form_id) . '">';
} elseif ( $form_type == 'change' ) {
echo '<input type="hidden" name="uwp_change_nonce" value="' . esc_attr( wp_create_nonce( 'uwp-change-nonce' ) ) . '" />';
} elseif ( $form_type == 'forgot' ) {
echo '<input type="hidden" name="uwp_forgot_nonce" value="' . esc_attr( wp_create_nonce( 'uwp-forgot-nonce' ) ) . '" />';
} elseif ( $form_type == 'reset' ) {
if ( isset( $_GET['key'] ) && isset( $_GET['login'] ) ) {
echo '<input type="hidden" name="uwp_reset_username" value="' . esc_attr( $_GET['login'] ) . '" />';
echo '<input type="hidden" name="uwp_reset_key" value="' . esc_attr( $_GET['key'] ) . '" />';
}
echo '<input type="hidden" name="uwp_reset_hp" value="" style="display:none !important; visibility:hidden !important;" size="25" autocomplete="off" />';
echo '<input type="hidden" name="uwp_reset_nonce" value="' . esc_attr( wp_create_nonce( 'uwp-reset-nonce' ) ) . '" />';
}
}
/**
* Modifies the author page content with UsersWP profile content.
*
* @param string $content Original page content.
*
* @return string Modified page content.
* @since 1.0.0
* @package userswp
*/
public function author_page_content( $content ) {
if ( is_author() && 1 != uwp_get_option( 'uwp_disable_author_link' ) && apply_filters( 'uwp_use_author_page_content', true ) ) {
return do_shortcode( '[uwp_profile]' );
} else {
return $content;
}
}
/**
* Modifies the menu item visibility based on UsersWP page type.
*
* @param object $menu_item Menu item info.
*
* @return object Modified menu item.
* @since 1.0.0
* @package userswp
*/
public function setup_nav_menu_item( $menu_item ) {
if ( is_admin() ) {
return $menu_item;
}
// Prevent a notice error when using the customizer
$menu_classes = $menu_item->classes;
if ( is_array( $menu_classes ) ) {
$menu_classes = implode( ' ', $menu_item->classes );
$str = 'users-wp-menu ';
if ( strpos( $menu_classes, 'users-wp-menu ' ) !== false ) {
$menu_classes = str_replace( $str, '', $menu_classes );
}
$menu_classes = explode( " ", $menu_classes );
}
$register_slug = uwp_get_page_slug( 'register_page' );
$login_slug = uwp_get_page_slug( 'login_page' );
$change_slug = uwp_get_page_slug( 'change_page' );
$account_slug = uwp_get_page_slug( 'account_page' );
$profile_slug = uwp_get_page_slug( 'profile_page' );
$forgot_slug = uwp_get_page_slug( 'forgot_page' );
$logout_slug = "logout";
$register_class = "users-wp-{$register_slug}-nav";
$login_class = "users-wp-{$login_slug}-nav";
$change_class = "users-wp-{$change_slug}-nav";
$account_class = "users-wp-{$account_slug}-nav";
$profile_class = "users-wp-{$profile_slug}-nav";
$forgot_class = "users-wp-{$forgot_slug}-nav";
$logout_class = "users-wp-{$logout_slug}-nav";
if ( ! empty( $menu_classes ) ) {
foreach ( $menu_classes as $menu_class ) {
switch ( $menu_class ) {
case $register_class:
if ( is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'register_page', true );
}
break;
case $login_class:
if ( is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'login_page', true );
}
break;
case $account_class:
if ( ! is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'account_page', true );
}
break;
case $profile_class:
if ( ! is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'profile_page', true );
}
break;
case $change_class:
if ( ! is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'change_page', true );
}
break;
case $forgot_class:
if ( is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = uwp_get_page_id( 'forgot_page', true );
}
break;
case $logout_class:
if ( ! is_user_logged_in() ) {
$menu_item->_invalid = true;
} else {
$menu_item->url = $this->uwp_logout_url();
}
break;
}
}
}
$menu_item = apply_filters( 'uwp_setup_nav_menu_item', $menu_item, $menu_classes );
return $menu_item;
}
/**
* Returns the logout url by adding redirect page link.
*
* @param null $custom_redirect Redirect page link.
*
* @return string Logout url.
* @since 1.0.0
* @package userswp
*/
public function uwp_logout_url( $custom_redirect = null ) {
$redirect = null;
$user = get_userdata(get_current_user_id());
if($user && isset($user->roles[0])){
$user_role = $user->roles[0];
$redirect_page_id = uwp_get_option( 'logout_redirect_to_'.$user_role );
}
if ( ! empty( $custom_redirect ) ) {
$redirect = esc_url( $custom_redirect );
} else if ( isset($redirect_page_id) && !empty($redirect_page_id) ) {
if ( uwp_is_wpml() ) {
$wpml_page_id = uwp_wpml_object_id( $redirect_page_id, 'page', true, ICL_LANGUAGE_CODE );
if ( ! empty( $wpml_page_id ) ) {
$redirect_page_id = $wpml_page_id;
}
}
$redirect = get_permalink( $redirect_page_id );
}
return wp_logout_url( apply_filters( 'uwp_logout_url', $redirect, $custom_redirect ) );
}
/**
* Adds the UsersWP body class to body tag.
*
* @param array $classes Existing class array.
*
* @return array Modified class array.
* @since 1.0.0
* @package userswp
*/
public function add_body_class( $classes ) {
if ( is_uwp_page() ) {
$classes[] = 'uwp_page';
if ( is_uwp_page( 'register_page' ) ) {
$classes[] = 'uwp_register_page';
} elseif ( is_uwp_page( 'login_page' ) ) {
$classes[] = 'uwp_login_page';
} elseif ( is_uwp_page( 'forgot_page' ) ) {
$classes[] = 'uwp_forgot_page';
} elseif ( is_uwp_page( 'change_page' ) ) {
$classes[] = 'uwp_change_page';
} elseif ( is_uwp_page( 'reset_page' ) ) {
$classes[] = 'uwp_reset_page';
} elseif ( is_uwp_page( 'account_page' ) ) {
$classes[] = 'uwp_account_page';
} elseif ( is_uwp_page( 'profile_page' ) ) {
$classes[] = 'uwp_profile_page';
} elseif ( is_uwp_page( 'users_page' ) ) {
$classes[] = 'uwp_users_page';
}
}
return $classes;
}
/**
*
* Returns content for author box
*
* @param $content
*
* @return string
*/
public function author_box_page_content( $content ) {
global $post;
if ( is_single() ) {
$author_box_enable_disable = uwp_get_option( 'author_box_enable_disable', 1 );
if ( 1 == $author_box_enable_disable ) {
$author_box_display_post_types = uwp_get_option( 'author_box_display_post_types' );
if ( ! empty( $post->post_type ) && in_array( $post->post_type, (array) $author_box_display_post_types ) ) {
$author_box_display_content = uwp_get_option( 'author_box_display_content' );
if ( ! empty( $author_box_display_content ) && 'above_content' === $author_box_display_content ) {
$content = do_shortcode( '[uwp_author_box]' ) . $content;
} else {
$content = $content . do_shortcode( '[uwp_author_box]' );
}
// run block content if its available
if ( function_exists( 'do_blocks' ) ) {
$content = do_blocks( $content );
}
}
}
}
return $content;
}
/**
* Adds form html for privacy fields in account page.
*
* @param string $type Form type.
*
* @return void
* @since 1.0.0
* @package userswp
*
*/
public function privacy_edit_form_display( $type ) {
if ( $type == 'privacy' ) {
$make_profile_private = uwp_can_make_profile_private();
echo '<div class="uwp-account-form">';
$extra_where = "AND is_public='2'";
$fields = get_account_form_fields( $extra_where );
$fields = apply_filters( 'uwp_account_privacy_fields', $fields );
$user_id = get_current_user_id();
$form_id = uwp_get_register_form_id( $user_id );
$design_style = uwp_get_option( "design_style", "bootstrap" );
$bs_form_group = $design_style ? "form-group mb-3 row" : "";
$bs_form_control = $design_style ? "form-control" : "";
$bs_btn_class = $design_style ? "btn btn-primary btn-block text-uppercase" : "";
?>
<div class="uwp-profile-extra">
<div class="uwp-profile-extra-div form-table">
<form class="uwp-account-form uwp_form" method="post">
<?php if ( $fields ) { ?>
<div class="uwp-profile-extra-wrap <?php echo esc_attr( $bs_form_group ); ?>">
<div class="uwp-profile-extra-key col" style="font-weight: bold;">
<?php esc_attr_e( "Field", "userswp" ) ?>
</div>
<div class="uwp-profile-extra-value col" style="font-weight: bold;">
<?php esc_attr_e( "Is Public?", "userswp" ) ?>
</div>
</div>
<?php foreach ( $fields as $field ) { ?>
<div class="uwp-profile-extra-wrap <?php echo esc_attr( $bs_form_group ); ?>">
<div class="uwp-profile-extra-key col"><?php echo esc_attr( $field->site_title ); ?>
<span class="uwp-profile-extra-sep">:</span></div>
<div class="uwp-profile-extra-value col">
<?php
$field_name = $field->htmlvar_name . '_privacy';
$value = uwp_get_usermeta( $user_id, $field_name, false );
if ( $value === false ) {
$value = 'yes';
}
?>
<select name="<?php echo esc_attr( $field_name ); ?>"
class="uwp_privacy_field aui-select2 <?php echo esc_attr( $bs_form_control ); ?>"
style="margin: 0;">
<option value="no" <?php selected( $value, "no" ); ?>><?php esc_attr_e( "No", "userswp" ) ?></option>
<option value="yes" <?php selected( $value, "yes" ); ?>><?php esc_attr_e( "Yes", "userswp" ) ?></option>
</select>
</div>
</div>
<?php }
}
global $wpdb;
$tabs_table_name = uwp_get_table_prefix() . 'uwp_profile_tabs';
$tabs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $tabs_table_name . " WHERE form_type = %s AND user_decided = 1 AND form_id = %s ORDER BY sort_order ASC", array('profile-tabs', $form_id) ) );
if ( $tabs ) { ?>
<div class="uwp-profile-extra-wrap <?php echo esc_attr( $bs_form_group ); ?>">
<div class="uwp-profile-extra-key col" style="font-weight: bold;">
<?php esc_attr_e( "Tab Name", "userswp" ) ?>
</div>
<div class="uwp-profile-extra-value col" style="font-weight: bold;">
<?php esc_attr_e( "Privacy", "userswp" ) ?>
</div>
</div>
<?php }
foreach ( $tabs as $tab ) { ?>
<div class="uwp-profile-extra-wrap <?php echo esc_attr( $bs_form_group ); ?>">
<div class="uwp-profile-extra-key col"><?php esc_attr_e( $tab->tab_name, 'userswp' ); ?>
<span class="uwp-profile-extra-sep">:</span></div>
<div class="uwp-profile-extra-value col">
<?php
$field_name = $tab->tab_key . '_tab_privacy';
$value = uwp_get_usermeta( $user_id, $field_name, '' );
$privacy_options = array(
0 => __( "Anyone", "userswp" ),
1 => __( "Logged in", "userswp" ),
2 => __( "Author only", "userswp" ),
);
// Admin default
$admin_privacy = isset( $tab->tab_privacy ) ? absint( $tab->tab_privacy ) : 0;
$privacy_options = apply_filters( 'uwp_tab_privacy_options', $privacy_options, $tab );
if ( empty( $value ) ) {
$value = $admin_privacy;
}
?>
<select name="<?php echo esc_attr( $field_name ); ?>"
class="uwp_tab_privacy_field aui-select2 <?php echo esc_attr( $bs_form_control ); ?>"
style="margin: 0;">
<?php
foreach ( $privacy_options as $key => $val ) {
$default = '';
if ( $admin_privacy == $key ) {
$default = __( ' (Default)', 'userswp' );
}
echo '<option value="' . esc_attr( $key ) . '"' . selected( $value, $key, false ) . '>' . esc_attr( $val . $default ) . '</option>';
}
?>
</select>
</div>
</div>
<?php }
$value = get_user_meta( $user_id, 'uwp_hide_from_listing', true ); ?>
<div class="uwp-profile-extra-wrap">
<div id="uwp_hide_from_listing" class="uwp_hide_from_listing">
<input name="uwp_hide_from_listing" class="" <?php checked( $value, "1", true ); ?>
type="checkbox"
value="1"><?php esc_attr_e( 'Hide profile from the users listing page.', 'userswp' ); ?>
</div>
</div>
<?php
do_action( 'uwp_after_privacy_form_fields', $fields );
if ( $make_profile_private ) {
$field_name = 'uwp_make_profile_private';
$value = get_user_meta( $user_id, $field_name, true );
if ( $value === false ) {
$value = '0';
}
?>
<div id="uwp_make_profile_private" class=" uwp_make_profile_private_row">
<input type="hidden" name="uwp_make_profile_private" value="0">
<input name="uwp_make_profile_private" class="" <?php checked( $value, "1", true ); ?>
type="checkbox" value="1">
<?php esc_attr_e( 'Make the whole profile private', 'userswp' ); ?>
</div>
<?php
}
?>
<input type="hidden" name="uwp_privacy_nonce"
value="<?php echo esc_attr( wp_create_nonce( 'uwp-privacy-nonce' ) ); ?>"/>
<input name="uwp_privacy_submit" class="<?php echo esc_attr( $bs_btn_class ); ?>"
value="<?php esc_attr_e( 'Submit', 'userswp' ); ?>" type="submit">
</form>
</div>
</div>
<?php
echo '</div>';
}
}
/**
* Redirects the user to login page when email not confirmed.
*
* @param string $username Username.
* @param object $user User object.
*
* @return void
* @package userswp
*
* @since 1.0.0
*/
public function unconfirmed_login_redirect( $username, $user ) {
if ( ! is_wp_error( $user ) ) {
$mod_value = get_user_meta( $user->ID, 'uwp_mod', true );
if ( $mod_value == 'email_unconfirmed' ) {
if ( ! in_array( 'administrator', $user->roles ) ) {
$login_page = uwp_get_page_id( 'login_page', false );
if ( $login_page ) {
$redirect_to = add_query_arg( array(
'uwp_err' => 'act_pending',
'user_id' => $user->ID
), get_permalink( $login_page ) );
wp_destroy_current_session();
wp_clear_auth_cookie();
if ( wp_doing_ajax() ) {
global $userswp;
$message = $userswp->notices->form_notice_by_key( 'act_pending', false, $user->ID );
wp_send_json_error( $message );
} else {
wp_redirect( $redirect_to );
}
exit();
}
}
}
}
}
/**
* Oxygen override theme template.
*
* @since 1.2.2.15
*
* @param string $located Located template.
* @param string $template_name Template name.
* @param array $located Template args.
* @param string $template_path Template path.
* @param string $default_path Template default path.
* @return string Located template.
*/
public function oxygen_override_template( $located, $template_name, $args, $template_path, $default_path ) {
if ( $_located = $this->oxygen_locate_template( $template_name ) ) {
$located = $_located;
}
return $located;
}
/**
* Oxygen locate theme template.
*
* @since 1.2.2.15
*
* @param string $template The template.
* @return string The theme template.
*/
public function oxygen_locate_template( $template ) {
$located = '';
if ( ! $template ) {
return $located;
}
$has_filter = has_filter( 'template', 'ct_oxygen_template_name' );
// Remove template filter
if ( $has_filter ) {
remove_filter( 'template', 'ct_oxygen_template_name' );
}
$_located = $this->get_theme_template_path() . '/' . $template;
if ( file_exists( $_located ) ) {
$located = $_located;
}
// Add template filter
if ( $has_filter ) {
add_filter( 'template', 'ct_oxygen_template_name' );
}
return $located;
}
/**
* Get the UsersWP templates theme path.
*
* @since 1.2.2.15
*
* @return string Template path.
*/
public static function get_theme_template_path() {
$template = get_template();
$theme_root = get_theme_root( $template );
$theme_template_path = $theme_root . '/' . $template . '/' . untrailingslashit( uwp_get_theme_template_dir_name() );
return $theme_template_path;
}
/**
* Check & unset the_content hook.
*
* @since 1.2.13
*
* @param string $content The content.
* @return string The post content.
*/
public function set_the_content_hook( $content ) {
global $wp_query, $post, $uwp_set_wpautop;
// Prevent empty p tags on block theme.
if ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() && ! empty( $wp_query ) && ! empty( $post ) && $post->ID == get_queried_object_id() && is_uwp_page() ) {
if ( $has_filter = has_filter( 'the_content', 'wpautop' ) ) {
$uwp_set_wpautop = $has_filter;
remove_filter( 'the_content', 'wpautop' );
}
}
return $content;
}
}