/** * Notify the blog admin of a new user, normally via email. * * @since 2.0 * * @param int $user_id User ID * @param string $plaintext_pass Optional. The user's plaintext password */ function wp_new_user_notification($user_id, $plaintext_pass = '') { //Copied out of /wp-includes/pluggable.php $user = new WP_User($user_id); $user_login = stripslashes($user->user_login); $user_email = stripslashes($user->user_email); // The blogname option is escaped with esc_html on the way into the database in sanitize_option // we want to reverse this for the plain text arena of emails. $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $message = sprintf(__('New user registration on your blog %s:'), $blogname) . "\r\n\r\n"; $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n"; $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n"; @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message); if (empty($plaintext_pass)) { return; } //LWA Customizations if (!empty(LoginWithAjax::$data['notification_override'])) { //We can use our own logic here LoginWithAjax::new_user_notification($user_login, $plaintext_pass, $user_email, $blogname); } else { //Copied out of /wp-includes/pluggable.php $message = sprintf(__('Username: %s'), $user_login) . "\r\n"; $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n"; $message .= wp_login_url() . "\r\n"; wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message); } }
/** * Custom functions that deal with the integration of Login with Ajax. * See: https://wordpress.org/plugins/login-with-ajax/ * * @package Listable */ function listable_lwa_modal() { //double check just to be sure if (listable_using_lwa()) { $atts = array('profile_link' => true, 'template' => 'modal', 'registration' => true, 'redirect' => false, 'remember' => true); return LoginWithAjax::shortcode($atts); } return ''; }
/** * Email login credentials to a newly-registered user. * * A new user registration notification is also sent to admin email. * * @since 2.0.0 * @since 4.3.0 The `$plaintext_pass` parameter was changed to `$notify`. * @since 4.3.1 The `$plaintext_pass` parameter was deprecated. `$notify` added as a third parameter. * * @global wpdb $wpdb WordPress database object for queries. * @global PasswordHash $wp_hasher Portable PHP password hashing framework instance. * * @param int $user_id User ID. * @param null $deprecated Not used (argument deprecated). * @param string $notify Optional. Type of notification that should happen. Accepts 'admin' or an empty * string (admin only), or 'both' (admin and user). The empty string value was kept * for backward-compatibility purposes with the renamed parameter. Default empty. */ function wp_new_user_notification($user_id, $deprecated = null, $notify = '') { if ($deprecated !== null) { //_deprecated_argument( __FUNCTION__, '4.3.1' ); //LWA - <4.3 backwards compat, not executing this deprecated function } global $wpdb, $wp_hasher; $user = get_userdata($user_id); // The blogname option is escaped with esc_html on the way into the database in sanitize_option // we want to reverse this for the plain text arena of emails. $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $message = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n"; $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n"; $message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n"; @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message); if ('admin' === $notify || empty($notify) && empty($deprecated)) { //LWA - let this pass if there's a password to notify user with, <4.3 backwards compat return; } // Generate something random for a password reset key. $key = wp_generate_password(20, false); /** This action is documented in wp-login.php */ do_action('retrieve_password_key', $user->user_login, $key); // Now insert the key, hashed, into the DB. if (empty($wp_hasher)) { require_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash(8, true); } $hashed = time() . ':' . $wp_hasher->HashPassword($key); $wpdb->update($wpdb->users, array('user_activation_key' => $hashed), array('user_login' => $user->user_login)); //LWA Customizations START //generate password link like it's done further down $password_link = network_site_url("wp-login.php?action=rp&key={$key}&login="******"\r\n\r\n"; $message .= __('To set your password, visit the following address:') . "\r\n\r\n"; $message .= '<' . network_site_url("wp-login.php?action=rp&key={$key}&login="******">\r\n\r\n"; $message .= wp_login_url() . "\r\n"; wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message); }
/** @see WP_Widget::widget */ function widget($args, $instance) { $instance = array_merge($this->defaults, $instance); echo $args['before_widget']; if (!is_user_logged_in() && !empty($instance['title'])) { echo $args['before_title']; echo '<span class="lwa-title">'; echo apply_filters('widget_title', $instance['title'], $instance, $this->id_base); echo '</span>'; echo $args['after_title']; } elseif (is_user_logged_in() && !empty($instance['title_loggedin'])) { echo $args['before_title']; echo '<span class="lwa-title">'; echo str_replace('%username%', LoginWithAjax::$current_user->display_name, $instance['title_loggedin']); echo '</span>'; echo $args['after_title']; } LoginWithAjax::widget($instance); echo $args['after_widget']; }
public static function widget($instance = array()) { //Extract widget arguments //Merge instance options with global default options $lwa_data = wp_parse_args($instance, self::$data); //Deal with specific variables $is_widget = false; //backwards-comatibility for overriden themes, this is now done within the WP_Widget class $lwa_data['profile_link'] = !empty($lwa_data['profile_link']) && $lwa_data['profile_link'] != "false"; //Add template logic self::$template = !empty($lwa_data['template']) && array_key_exists($lwa_data['template'], self::$templates) ? $lwa_data['template'] : 'default'; //Choose the widget content to display. if (is_user_logged_in()) { //Firstly check for template in theme with no template folder (legacy) $template_loc = locate_template(array('plugins/login-with-ajax/widget_in.php')); //Then check for custom templates or theme template default $template_loc = $template_loc == '' && self::$template ? self::$templates[self::$template] . '/widget_in.php' : $template_loc; include $template_loc != '' && file_exists($template_loc) ? $template_loc : 'widget/default/widget_in.php'; } else { //Firstly check for template in theme with no template folder (legacy) $template_loc = locate_template(array('plugins/login-with-ajax/widget_out.php')); //First check for custom templates or theme template default $template_loc = $template_loc == '' && self::$template ? self::$templates[self::$template] . '/widget_out.php' : $template_loc; include $template_loc != '' && file_exists($template_loc) ? $template_loc : 'widget/default/widget_out.php'; } }
public static function widget($instance = array()) { //Extract widget arguments //Merge instance options with global default options $lwa_data = wp_parse_args($instance, self::$data); //Deal with specific variables $is_widget = false; //backwards-comatibility for overriden themes, this is now done within the WP_Widget class $lwa_data['profile_link'] = !empty($lwa_data['profile_link']) && $lwa_data['profile_link'] != "false"; //Add template logic self::$template = !empty($lwa_data['template']) && array_key_exists($lwa_data['template'], self::$templates) ? $lwa_data['template'] : 'default'; //Choose the widget content to display. if (is_user_logged_in()) { //Firstly check for template in theme with no template folder (legacy) $template_loc = locate_template(array('plugins/login-with-ajax/widget_in.php')); //Then check for custom templates or theme template default $template_loc = $template_loc == '' && self::$template ? self::$templates[self::$template] . '/widget_in.php' : $template_loc; include $template_loc != '' && file_exists($template_loc) ? $template_loc : 'widget/default/widget_in.php'; } else { //quick/easy WPML fix, should eventually go into a seperate file if (defined('ICL_LANGUAGE_CODE')) { if (!function_exists('lwa_wpml_input_var')) { function lwa_wpml_input_var() { echo '<input type="hidden" name="lang" id="lang" value="' . esc_attr(ICL_LANGUAGE_CODE) . '" />'; } } foreach (array('login_form', 'lwa_register_form', 'lostpassword_form') as $action) { add_action($action, 'lwa_wpml_input_var'); } } //Firstly check for template in theme with no template folder (legacy) $template_loc = locate_template(array('plugins/login-with-ajax/widget_out.php')); //First check for custom templates or theme template default $template_loc = $template_loc == '' && self::$template ? self::$templates[self::$template] . '/widget_out.php' : $template_loc; include $template_loc != '' && file_exists($template_loc) ? $template_loc : 'widget/default/widget_out.php'; //quick/easy WPML fix, should eventually go into a seperate file if (defined('ICL_LANGUAGE_CODE')) { foreach (array('login_form', 'lwa_register_form', 'lostpassword_form') as $action) { remove_action($action, 'lwa_wpml_input_var'); } } } }