do_login();
}
break;
case "wp-register.php":
$login_register_object = new login_register_object();
$login_register_object->do_register();
break;
}
}
}
# This object is instantiated in global space as $login_register_object
class login_register_object {
# called in place of the wp-login.php page ...
public function do_login() {
global $wpdb;
switch($_REQUEST["action"]) {
case "logout": # logout
$redirect_to = "/wp-login.php?login_register_trigger=loggedout";
if ( isset($_REQUEST['redirect_to']) ) $redirect_to = $_REQUEST['redirect_to'];
$current_user = wp_get_current_user();
login_register_object::logger( array('message' => 'logout user: '. $current_user->user_login . ' redirect to: ' . $redirect_to) );
wp_clearcookie();
do_action('wp_logout');
nocache_headers();
wp_redirect($redirect_to);
exit;
break;
case 'lostpassword': # lost password
do_action('lost_password');
ob_start();
?>
';
if ( ! $captchaok ) {
echo '
' . __('Captcha error.') . '
';
} elseif ( ! $user_emailok ) {
echo '
' . __('Please enter a valid email address.') . '
';
} elseif ($m == false) {
echo '
' . __('The e-mail could not be sent.') . '
';
echo __('Possible reason: your host may have disabled the mail() function...') . '
';
} else {
echo '
' . sprintf(__('The e-mail was sent successfully to %s\'s e-mail address. Please check the email message for your instructions to recover your password.'), $user_login) . '
';
} ?>
';
$html = ob_get_contents(); ob_end_clean();
$login_register_lostpassword_post = get_option("login_register_lostpassword_post");
if ( (int)$login_register_lostpassword_post > 0 ) {
$postcontent = wp_get_single_post( (int)$login_register_lostpassword_post, ARRAY_A);
$html = preg_replace('/\{LOGINREGISTER_CONTENT\}/',$html, preg_replace('/\n/',' ',trim( $postcontent['post_content'] ) ) );
}
echo preg_replace('/__BODY_CONTENT__/',$html, $this->_getthemeheader() );
login_register_object::logger( array('message' => 'retrievelostpassword user: '. $user_login ) );
exit;
break;
case 'resetpass': # reset password
ob_start();
echo '
';
$key = preg_replace('/a-z0-9/i', '', $_GET['key']);
$err = false;
if ( ! $err ) {
if ( empty($key) )
{
_e('Sorry, that key does not appear to be valid.');
echo '
<' . __('Lost your password?') . '';
$err = true;
}
}
if ( ! $err ) {
$user = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_activation_key = '$key' AND user_activation_key <> ''");
if ( ! $user ) {
_e('Sorry, that key does not appear to be valid.');
echo '
<' . __('Lost your password?') . '';
$err = true;
}
}
if ( ! $err ) {
login_register_object::logger( array('message' => 'resetpass user: '. $user->user_login ) );
$pwlength = get_option("login_register_minpassword_length","7");
if ( $pwlength < 7 ) $pwlength = 7; else if ( $pwlength > 30 ) $pwlength = 30;
if ( file_exists( WP_PLUGIN_DIR . '/login-register/login_register_resetpassword.php') ) require WP_PLUGIN_DIR . '/login-register/login_register_resetpassword.php';
$o = null; if ( class_exists( 'login_register_resetpassword' ) ) $o = new login_register_resetpassword();
if ( $o != null && method_exists ( $o , 'recoverpassword' ) ) {
$o->recoverpassword($user->user_login,$key,$pwlength);
} else {
$new_pass = substr( md5( uniqid( microtime() ) ), 0, $pwlength);
$wpdb->query("UPDATE $wpdb->users SET user_pass = MD5('$new_pass'), user_activation_key = '' WHERE user_login = '" . $user->user_login . "'");
wp_cache_delete($user->ID, 'users');
wp_cache_delete($user->user_login, 'userlogins');
$message = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
$message .= sprintf(__('Password: %s'), $new_pass) . "\r\n";
$message .= get_settings('siteurl') . "/wp-login.php\r\n";
if ( file_exists( WP_PLUGIN_DIR . '/login-register/login_register_mailer.php') ) require WP_PLUGIN_DIR . '/login-register/login_register_mailer.php';
$o = null; if ( class_exists( 'login_register_mailer' ) ) $o = new login_register_mailer();
if ( $o != null && method_exists ( $o , 'sendmail' ) )
$m = $o->sendmail($user->user_email, sprintf(__('[%s] Your new password'), get_settings('blogname')), $message);
else
$m = wp_mail($user->user_email, sprintf(__('[%s] Your new password'), get_settings('blogname')), $message);
if ($m == false) {
echo '
' . __('The e-mail could not be sent.') . "
\n";
echo __('Possible reason: your host may have disabled the mail() function...') . '
';
} else {
echo '
' . sprintf(__('Your new password is in the mail.'), $user_login) . '
';
echo "" . __('Click here to login!') . '
';
}
}
if ( $m == true && get_option("login_register_tell_admin_when_password_recovered").'x' == 'yesx' ) {
# send a copy of password change notification to the admin
$message = sprintf(__('Password Lost and Changed for user: %s'), $user->user_login) . "\r\n";
if ( $o != null && method_exists ( $o , 'sendmail' ) )
$o->sendmail( get_settings('admin_email') , sprintf(__('[%s] Password Lost/Change'), get_settings('blogname')), $message);
else
wp_mail(get_settings('admin_email'), sprintf(__('[%s] Password Lost/Change'), get_settings('blogname')), $message);
}
}
echo "
";
$html = ob_get_contents(); ob_end_clean();
$login_register_resetpassword_post = get_option("login_register_resetpassword_post");
if ( (int)$login_register_resetpassword_post > 0 ) {
$postcontent = wp_get_single_post( (int)$login_register_resetpassword_post, ARRAY_A);
$html = preg_replace('/\{LOGINREGISTER_CONTENT\}/',$html, preg_replace('/\n/',' ',trim( $postcontent['post_content'] ) ) );
}
echo preg_replace('/__BODY_CONTENT__/',$html, $this->_getthemeheader() );
exit;
break;
case 'login': # login and default action
default:
$user_login = '';
$user_pass = '';
$using_cookie = false;
if ( ! isset( $_REQUEST['redirect_to'] ) ) $redirect_to = ( $_POST['redirect_to'].'x' != 'x' ) ? $_POST['redirect_to'] : '/wp-admin/'; else $redirect_to = $_REQUEST['redirect_to'];
if( $_POST ) {
$user_login = ( get_option('login_register_emailislogin').'x' != 'yesx' ) ? $_POST['user_login'] : $_POST['user_email'];
$user_login = sanitize_user( $user_login );
$user_pass = $_POST['login_password'];
$rememberme = $_POST['rememberme'];
} else {
if (function_exists('wp_get_cookie_login')) # This check was added in version 1.0 to make the plugin compatible with WP2.0.1
{
$cookie_login = wp_get_cookie_login();
if ( ! empty($cookie_login) ) {
$using_cookie = true;
$user_login = $cookie_login['login'];
$user_pass = $cookie_login['password'];
}
}
elseif ( ! empty($_COOKIE) ) # This was added in version 1.0 to make the plugin compatible with WP2.0.1
{
if ( ! empty($_COOKIE[USER_COOKIE]) )
$user_login = $_COOKIE[USER_COOKIE];
if ( ! empty($_COOKIE[PASS_COOKIE]) ) {
$user_pass = $_COOKIE[PASS_COOKIE];
$using_cookie = true;
}
}
}
# get user_login from email
if ($user_login == "") {
global $wpdb;
$user_email = $_POST['user_email'];
if (is_email($user_email)) {
$user = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_email = '$user_email'");
if ($user) $user_login = $user->user_login;
}
}
$login_result = wp_signon( array('user_login' => $user_login, 'user_password' => $user_pass , 'remember' => ( $rememberme == 'forever' ) ), false );
if ( is_wp_error($login_result) ) $error = $login_result->get_error_message();
else {
$user = new WP_User(0, $user_login);
# If the user can't edit posts, send them to their profile.
if ( ! $user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == '/wp-admin/' ) )
$redirect_to = '/wp-admin/profile.php';
if ( wp_login($user_login, $user_pass, $using_cookie) ) {
wp_setcookie($user_login, $user_pass, false, '', '', $rememberme);
wp_redirect($redirect_to);
login_register_object::logger( array('message' => 'login user: '. $user_login . ' rememberme: ' . ( ( ! empty($rememberme) ) ? $rememberme : 'no' ) . ' redirect to: ' . $redirect_to) );
if ( $rememberme == 'forever' ) setcookie("login_register_login_rememberme", 'yes', time()+31536000); else setcookie("login_register_login_rememberme", 'no', 0); /* expire in 1 year */
exit;
} else {
if ( $using_cookie ) $error = __('Your session has expired.');
}
}
$expirepassword = '';
if ( is_wp_error($login_result) ) {
$login_register_expiredpassword_errorcode = trim(get_option('login_register_expiredpassword_errorcode'));
if ( $login_register_expiredpassword_errorcode.'x' != 'x' && $login_result->get_error_code().'x' == $login_register_expiredpassword_errorcode.'x' && file_exists( WP_PLUGIN_DIR . '/login-register/login_register_expiredpassword.php') ) {
require WP_PLUGIN_DIR . '/login-register/login_register_expiredpassword.php';
$o = null; if ( class_exists( 'login_register_expiredpassword' ) ) $o = new login_register_expiredpassword();
$pwlength = get_option("login_register_minpassword_length","7");
if ( $pwlength < 7 ) $pwlength = 7; else if ( $pwlength > 30 ) $pwlength = 30;
if ( $o != null && method_exists ( $o , 'loginform' ) ) $expirepassword = $o->loginform($user_login,$user_pass,$pwlength);
}
}
ob_start();
?>
' . $error . '
'; ?>
0 ) {
$postcontent = wp_get_single_post( (int)$login_register_logout_post, ARRAY_A);
$html = preg_replace('/\{LOGINREGISTER_CONTENT\}/',$html, preg_replace('/\n/',' ',trim( $postcontent['post_content'] ) ) );
}
break;
default:
$login_register_login_post = get_option("login_register_login_post");
if ( (int)$login_register_login_post > 0 ) {
$postcontent = wp_get_single_post( (int)$login_register_login_post, ARRAY_A);
$html = preg_replace('/\{LOGINREGISTER_CONTENT\}/',$html, preg_replace('/\n/',' ',trim( $postcontent['post_content'] ) ) );
}
break;
}
echo preg_replace('/__BODY_CONTENT__/',$html, $this->_getthemeheader() );
exit;
break;
} # end switch
}
# called in place of the wp-register.php page ...
public function do_register() {
global $wpdb, $wp_query;
if (!is_array($wp_query->query_vars)) $wp_query->query_vars = array();
switch( $_POST["action"] ) {
case 'register':
$pwlength = get_option("login_register_minpassword_length","7");
if ( $pwlength < 7 ) $pwlength = 7; else if ( $pwlength > 30 ) $pwlength = 30;
require_once( ABSPATH . WPINC . '/registration-functions.php');
$user_pass = '';
$confirm_user_pass = '';
$user_login = sanitize_user( $_POST['user_login'] );
$user_email = $_POST['user_email'];
if ( isset( $_POST['user_pass'] )) $user_pass = $_POST['user_pass'];
if ( isset( $_POST['confirm_user_pass'] )) $confirm_user_pass = $_POST['confirm_user_pass'];
$captchaok = true;
if ( class_exists('ReallySimpleCaptcha') ) {
$captcha_instance = new ReallySimpleCaptcha();
$captchaok = $captcha_correct = $captcha_instance->check($_POST['captcha_prefix'], trim($_POST['simple_captcha']));
$captcha_instance->remove($captcha_prefix);
}
$errors = array();
if ( $user_login == '' ) $errors['user_login'] = __('