Your IP : 216.73.216.196
<?php
class Crowdngo_Apus_Userinfo{
/**
* Constructor
*/
public function __construct() {
add_action( 'init', array($this, 'setup'), 1000 );
add_action( 'wp_ajax_nopriv_apus_ajax_login', array($this, 'processLogin') );
add_action( 'wp_ajax_nopriv_apus_ajax_forgotpass', array($this, 'processForgotPassword') );
add_action( 'wp_ajax_nopriv_apus_ajax_register', array($this, 'processRegister') );
add_action( 'wp_ajax_crowdngo_process_change_profile_form', array($this, 'process_change_profile_form') );
add_action( 'wp_ajax_nopriv_crowdngo_process_change_profile_form', array($this, 'process_change_profile_form') );
add_action( 'wp_ajax_crowdngo_process_change_password', array($this, 'process_change_password') );
add_action( 'wp_ajax_nopriv_crowdngo_process_change_password', array($this, 'process_change_password') );
}
public function processLogin() {
// First check the nonce, if it fails the function will break
check_ajax_referer( 'ajax-apus-login-nonce', 'security_login' );
$info = array();
$info['user_login'] = isset($_POST['username']) ? $_POST['username'] : '';
$info['user_password'] = isset($_POST['password']) ? $_POST['password'] : '';
$info['remember'] = isset($_POST['remember']) ? true : false;
$user_signon = wp_signon( $info, false );
if ( is_wp_error($user_signon) ){
$result = json_encode(array('loggedin' => false, 'msg' => esc_html__('Wrong username or password. Please try again!!!', 'crowdngo')));
} else {
wp_set_current_user($user_signon->ID);
$result = json_encode(array('loggedin' => true, 'msg' => esc_html__('Signin successful, redirecting...', 'crowdngo')));
}
echo trim($result);
die();
}
public function processForgotPassword() {
// First check the nonce, if it fails the function will break
check_ajax_referer( 'ajax-apus-lostpassword-nonce', 'security_lostpassword' );
global $wpdb;
$account = isset($_POST['user_login']) ? $_POST['user_login'] : '';
if( empty( $account ) ) {
$error = esc_html__( 'Enter an username or e-mail address.', 'crowdngo' );
} else {
if(is_email( $account )) {
if( email_exists($account) ) {
$get_by = 'email';
} else {
$error = esc_html__( 'There is no user registered with that email address.', 'crowdngo' );
}
} else if (validate_username( $account )) {
if( username_exists($account) ) {
$get_by = 'login';
} else {
$error = esc_html__( 'There is no user registered with that username.', 'crowdngo' );
}
} else {
$error = esc_html__( 'Invalid username or e-mail address.', 'crowdngo' );
}
}
if (empty ($error)) {
$random_password = wp_generate_password();
$user = get_user_by( $get_by, $account );
$update_user = wp_update_user( array ( 'ID' => $user->ID, 'user_pass' => $random_password ) );
if( $update_user ) {
$from = get_option('admin_email');
$to = $user->user_email;
$subject = esc_html__( 'Your new password', 'crowdngo' );
$sender = 'From: '.get_option('name').' <'.$from.'>' . "\r\n";
$message = esc_html__( 'Your new password is: ', 'crowdngo' ) .$random_password;
$headers[] = 'MIME-Version: 1.0' . "\r\n";
$headers[] = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers[] = "X-Mailer: PHP \r\n";
$headers[] = $sender;
$mail = false;
if ( function_exists('apus_wjm_send_mail') ) {
$mail = apus_wjm_send_mail( $to, $subject, $message, $headers );
}
if( $mail ) {
$success = esc_html__( 'Check your email address for you new password.', 'crowdngo' );
} else {
$error = esc_html__( 'System is unable to send you mail containg your new password.', 'crowdngo' );
}
} else {
$error = esc_html__( 'Oops! Something went wrong while updating your account.', 'crowdngo' );
}
}
if ( ! empty( $error ) ) {
echo json_encode(array('loggedin'=> false, 'msg'=> $error));
}
if ( ! empty( $success ) ) {
echo json_encode(array('loggedin' => true, 'msg'=> $success ));
}
die();
}
/**
* add all actions will be called when user login.
*/
public function setup() {
add_action('wp_footer', array( $this, 'popupForm' ) );
add_action( 'apus-account-buttons', array( $this, 'button' ) );
}
/**
* render link login or show greeting when user logined in
*
* @return String.
*/
public function button(){
if ( !is_user_logged_in() ) {
?>
<div class="account-login">
<ul class="login-account">
<li><a href="#apus_login_forgot_tab" class="apus-user-login wel-user"><?php esc_html_e( 'Login','crowdngo' ); ?></a> </li>
<li class="space">/</li>
<li><a href="#apus_register_tab" class="apus-user-register wel-user"><?php esc_html_e( 'Register','crowdngo' ); ?></a></li>
</ul>
</div>
<?php
} else {
$user_id = get_current_user_id();
$user = get_userdata( $user_id );
?>
<div class="setting-account">
<div class="profile-menus flex-middle clearfix">
<div class="profile-avarta"><?php echo get_avatar($user_id, 32); ?></div>
<div class="profile-info">
<span><?php echo esc_html($user->data->display_name); ?></span>
<span class="fa fa-angle-down"></span>
</div>
</div>
<div class="user-account">
<ul class="user-log">
<?php
if ( has_nav_menu( 'my-account' ) ) {
?>
<li>
<?php
$args = array(
'theme_location' => 'my-account',
'menu_class' => 'list-line',
'fallback_cb' => '',
'walker' => new Crowdngo_Nav_Menu()
);
wp_nav_menu($args);
?>
</li>
<?php
}
?>
<li class="last"><a href="<?php echo esc_url(wp_logout_url(home_url('/'))); ?>"><?php esc_html_e('Log out ','crowdngo'); ?></a></li>
</ul>
</div>
</div>
<?php
}
}
/**
* check if user not login that showing the form
*/
public function popupForm() {
if ( !is_user_logged_in() ) {
get_template_part( 'template-parts/login-register' );
}
}
public function registration_validation( $username, $email, $password, $confirmpassword ) {
global $reg_errors;
$reg_errors = new WP_Error;
if ( Crowdngo_Recaptcha::is_recaptcha_enabled() && crowdngo_get_config('use_recaptcha_register_form', true) ) {
$is_recaptcha_valid = array_key_exists( 'g-recaptcha-response', $_POST ) ? Crowdngo_Recaptcha::is_recaptcha_valid( sanitize_text_field( $_POST['g-recaptcha-response'] ) ) : false;
if ( !$is_recaptcha_valid ) {
$reg_errors->add('field', esc_html__( 'reCAPTCHA is a required field', 'crowdngo' ) );
}
}
if ( empty( $username ) || empty( $password ) || empty( $email ) || empty( $confirmpassword ) ) {
$reg_errors->add('field', esc_html__( 'Required form field is missing', 'crowdngo' ) );
}
if ( 4 > strlen( $username ) ) {
$reg_errors->add( 'username_length', esc_html__( 'Username too short. At least 4 characters is required', 'crowdngo' ) );
}
if ( username_exists( $username ) ) {
$reg_errors->add('user_name', esc_html__( 'That username already exists!', 'crowdngo' ) );
}
if ( ! validate_username( $username ) ) {
$reg_errors->add( 'username_invalid', esc_html__( 'The username you entered is not valid', 'crowdngo' ) );
}
if ( 5 > strlen( $password ) ) {
$reg_errors->add( 'password', esc_html__( 'Password length must be greater than 5', 'crowdngo' ) );
}
if ( $password != $confirmpassword ) {
$reg_errors->add( 'password', esc_html__( 'Password must be equal Confirm Password', 'crowdngo' ) );
}
if ( !is_email( $email ) ) {
$reg_errors->add( 'email_invalid', esc_html__( 'Email is not valid', 'crowdngo' ) );
}
if ( email_exists( $email ) ) {
$reg_errors->add( 'email', esc_html__( 'Email Already in use', 'crowdngo' ) );
}
}
public function complete_registration($username, $password, $email) {
$userdata = array(
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
);
return wp_insert_user( $userdata );
}
public function processRegister() {
global $reg_errors;
check_ajax_referer( 'ajax-apus-register-nonce', 'security_register' );
$this->registration_validation( $_POST['username'], $_POST['email'], $_POST['password'], $_POST['confirmpassword'] );
if ( 1 > count( $reg_errors->get_error_messages() ) ) {
$username = sanitize_user( $_POST['username'] );
$email = sanitize_email( $_POST['email'] );
$password = esc_attr( $_POST['password'] );
$user_id = $this->complete_registration($username, $password, $email);
if ( ! is_wp_error( $user_id ) ) {
$jsondata = array('loggedin' => true, 'msg' => esc_html__( 'You have registered, redirecting ...', 'crowdngo' ) );
$info['user_login'] = $username;
$info['user_password'] = $password;
$info['remember'] = 1;
wp_signon( $info, false );
} else {
$jsondata = array('loggedin' => false, 'msg' => esc_html__( 'Register user error!', 'crowdngo' ) );
}
} else {
$jsondata = array('loggedin' => false, 'msg' => implode(', <br>', $reg_errors->get_error_messages()) );
}
echo json_encode($jsondata);
exit;
}
public function process_change_profile_form() {
check_ajax_referer( 'crowdngo-ajax-edit-profile-nonce', 'security_edit_profile' );
$return = array();
$user = wp_get_current_user();
$nickname = isset($_POST['nickname']) ? sanitize_user( $_POST['nickname'] ) : '';
$email = isset($_POST['email']) ? sanitize_email( $_POST['email'] ) : '';
$general_keys = array( 'first_name', 'last_name', 'phone', 'description', 'url' );
$keys = array(
'current_user_avatar', 'address', 'birthday', 'socials'
);
if ( empty( $nickname ) ) {
$return['msg'] = '<div class="text-danger">'.esc_html__( 'Nickname is required.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
if ( empty( $email ) ) {
$return['msg'] = '<div class="text-danger">'.esc_html__( 'E-mail is required.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
update_user_meta( $user->ID, 'nickname', $nickname );
update_user_meta( $user->ID, 'user_email', $email );
wp_update_user( array(
'ID' => $user->ID,
'user_email' => $email,
) );
foreach ($general_keys as $key) {
$value = isset($_POST[$key]) ? sanitize_text_field( $_POST[$key] ) : '';
update_user_meta( $user->ID, $key, $value );
}
foreach ($keys as $key) {
if ( $key !== 'socials' ) {
$value = isset($_POST[$key]) ? sanitize_text_field( $_POST[$key] ) : '';
if ( $key == 'current_user_avatar' ) {
$attachment_id = crowdngo_create_attachment($value);
update_user_meta( $user->ID, 'apus_user_avatar', $attachment_id );
} else {
update_user_meta( $user->ID, 'apus_'.$key, $value );
}
} else {
$value = isset($_POST[$key]) ? $_POST[$key] : '';
update_user_meta( $user->ID, 'apus_'.$key, $value );
}
}
$return['msg'] = '<div class="text-success">'.esc_html__( 'Profile has been successfully updated.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
public function process_change_password() {
check_ajax_referer( 'crowdngo-ajax-change-pass-nonce', 'security_change_pass' );
if ( !is_user_logged_in() ) {
return;
}
$old_password = sanitize_text_field( $_POST['old_password'] );
$new_password = sanitize_text_field( $_POST['new_password'] );
$retype_password = sanitize_text_field( $_POST['retype_password'] );
if ( empty( $old_password ) || empty( $new_password ) || empty( $retype_password ) ) {
$return['msg'] = '<div class="text-danger">'.esc_html__( 'All fields are required.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
if ( $new_password != $retype_password ) {
$return['msg'] = '<div class="text-danger">'.esc_html__( 'New and retyped password are not same.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
$user = wp_get_current_user();
if ( ! wp_check_password( $old_password, $user->data->user_pass, $user->ID ) ) {
$return['msg'] = '<div class="text-danger">'.esc_html__( 'Your old password is not correct.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
wp_set_password( $new_password, $user->ID );
$info['user_login'] = $user->nickname;
$info['user_password'] = $new_password;
$info['remember'] = 1;
wp_signon( $info, false );
$return['msg'] = '<div class="text-success">'.esc_html__( 'Your password has been successfully changed.', 'crowdngo' ).'</div>';
echo json_encode($return); exit;
}
}
new Crowdngo_Apus_Userinfo();
?>