Skip to content

Instantly share code, notes, and snippets.

@virgilio
Last active December 24, 2015 22:29
Show Gist options
  • Save virgilio/6873075 to your computer and use it in GitHub Desktop.
Save virgilio/6873075 to your computer and use it in GitHub Desktop.
<?php
/*
* Plugin Name: Custom E-mail
* Description: Enabling this module will initialize custom e-mails. You will then have to configure the settings via the "E-mail" tab.
*
* Holds Theme My Login Custom E-mail class
*
* @package Theme_My_Login
* @subpackage Theme_My_Login_Custom_Email
* @since 6.0
*/
if ( ! class_exists( 'Theme_My_Login_Custom_Email' ) ) :
/**
* Theme My Login Custom E-mail class
*
* @since 6.0
*/
class Theme_My_Login_Custom_Email extends Theme_My_Login_Abstract {
/**
* Holds options key
*
* @since 6.3
* @access protected
* @var string
*/
protected $options_key = 'theme_my_login_email';
/**
* Mail from
*
* @since 6.0
* @access protected
* @var string
*/
protected $mail_from;
/**
* Mail from name
*
* @since 6.0
* @access protected
* @var string
*/
protected $mail_from_name;
/**
* Mail content type
*
* @since 6.0
* @access protected
* @var string
*/
protected $mail_content_type;
/**
* Returns singleton instance
*
* @since 6.3
* @access public
* @return object
*/
public static function get_object() {
return parent::get_object( __CLASS__ );
}
/**
* Returns default options
*
* @since 6.3
* @access public
*/
public static function default_options() {
return array(
'new_user' => array(
'mail_from' => '',
'mail_from_name' => '',
'mail_content_type' => '',
'title' => '',
'message' => '',
'admin_mail_to' => '',
'admin_mail_from' => '',
'admin_mail_from_name' => '',
'admin_mail_content_type' => '',
'admin_title' => '',
'admin_message' => '',
'admin_disable' => false
),
'retrieve_pass' => array(
'mail_from' => '',
'mail_from_name' => '',
'mail_content_type' => '',
'title' => '',
'message' => ''
),
'reset_pass' => array(
'admin_mail_to' => '',
'admin_mail_from' => '',
'admin_mail_from_name' => '',
'admin_mail_content_type' => '',
'admin_title' => '',
'admin_message' => '',
'admin_disable' => false
)
);
}
/**
* Loads the module
*
* @since 6.0
* @access protected
*/
protected function load() {
add_filter( 'wp_mail_from', array( &$this, 'mail_from_filter' ) );
add_filter( 'wp_mail_from_name', array( &$this, 'mail_from_name_filter') );
add_filter( 'wp_mail_content_type', array( &$this, 'mail_content_type_filter') );
add_action( 'retrieve_password', array( &$this, 'apply_retrieve_pass_filters' ) );
add_action( 'password_reset', array( &$this, 'apply_password_reset_filters' ) );
add_action( 'tml_new_user_notification', array( &$this, 'apply_new_user_filters' ) );
remove_action( 'tml_new_user_registered', 'wp_new_user_notification', 10, 2 );
remove_action( 'tml_user_password_changed', 'wp_password_change_notification' );
add_action( 'tml_new_user_registered', array( &$this, 'new_user_notification' ), 10, 2 );
add_action( 'tml_user_password_changed', array( &$this, 'password_change_notification' ) );
add_action( 'register_post', array( &$this, 'apply_user_moderation_notification_filters' ) );
add_action( 'tml_user_activation_resend', array( &$this, 'apply_user_moderation_notification_filters' ) );
add_action( 'approve_user', array( &$this, 'apply_user_approval_notification_filters' ) );
add_action( 'deny_user', array( &$this, 'apply_user_denial_notification_filters' ) );
}
/**
* Sets variables to be used with mail header filters
*
* @since 6.0
* @access public
*
* @param string $mail_from E-mail address to send the mail from
* @param string $mail_from_name Name to send the mail from
* @param string $mail_content_type Content type for the message
*/
public function set_mail_headers( $mail_from = '', $mail_from_name = '', $mail_content_type = 'text' ) {
$this->mail_from = $mail_from;
$this->mail_from_name = $mail_from_name;
$this->mail_content_type = $mail_content_type;
}
/**
* Applies all password retrieval mail filters
*
* Callback for "retrieve_password" hook in Theme_My_Login::retrieve_password()
*
* @see Theme_My_Login::retrieve_password()
* @since 6.0
* @access public
*/
public function apply_retrieve_pass_filters() {
$this->set_mail_headers(
$this->get_option( array( 'retrieve_pass', 'mail_from' ) ),
$this->get_option( array( 'retrieve_pass', 'mail_from_name' ) ),
$this->get_option( array( 'retrieve_pass', 'mail_content_type' ) )
);
add_filter( 'retrieve_password_title', array( &$this, 'retrieve_pass_title_filter' ), 10, 2 );
add_filter( 'retrieve_password_message', array( &$this, 'retrieve_pass_message_filter' ), 10, 3 );
}
/**
* Applies all password reset mail filters
*
* Callback for "password_reset" hook in Theme_My_Login::reset_password()
*
* @see Theme_My_Login::reset_password()
* @since 6.2
* @access public
*/
public function apply_password_reset_filters() {
$this->set_mail_headers(
$this->get_option( array( 'reset_pass', 'admin_mail_from' ) ),
$this->get_option( array( 'reset_pass', 'admin_mail_from_name' ) ),
$this->get_option( array( 'reset_pass', 'admin_mail_content_type' ) )
);
add_filter( 'password_change_notification_mail_to', array( &$this, 'password_change_notification_mail_to_filter' ) );
add_filter( 'password_change_notification_title', array( &$this, 'password_change_notification_title_filter' ), 10, 2 );
add_filter( 'password_change_notification_message', array( &$this, 'password_change_notification_message_filter' ), 10, 2 );
add_filter( 'send_password_change_notification', array( &$this, 'send_password_change_notification_filter' ) );
}
/**
* Applies all new user mail filters
*
* Callback for "register_post" hook in Theme_My_Login::register_new_user()
*
* @see Theme_My_Login::register_new_user()
* @since 6.0
* @access public
*/
public function apply_new_user_filters() {
add_filter( 'new_user_notification_title', array( &$this, 'new_user_notification_title_filter' ), 10, 2 );
add_filter( 'new_user_notification_message', array( &$this, 'new_user_notification_message_filter' ), 10, 3 );
add_filter( 'send_new_user_notification', array( &$this, 'send_new_user_notification_filter' ) );
add_filter( 'new_user_admin_notification_mail_to', array( &$this, 'new_user_admin_notification_mail_to_filter' ) );
add_filter( 'new_user_admin_notification_title', array( &$this, 'new_user_admin_notification_title_filter' ), 10, 2 );
add_filter( 'new_user_admin_notification_message', array( &$this, 'new_user_admin_notification_message_filter' ), 10, 2 );
add_filter( 'send_new_user_admin_notification', array( &$this, 'send_new_user_admin_notification_filter' ) );
}
/**
* Changes the mail from address
*
* Callback for "wp_mail_from" hook in wp_mail()
*
* @see wp_mail()
* @since 6.0
* @access public
*
* @param string $from_email Default from email
* @return string New from email
*/
public function mail_from_filter( $from_email ) {
return empty( $this->mail_from ) ? $from_email : $this->mail_from;
}
/**
* Changes the mail from name
*
* Callback for "wp_mail_from_name" hook in wp_mail()
*
* @see wp_mail()
* @since 6.0
* @access public
*
* @param string $from_name Default from name
* @return string New from name
*/
public function mail_from_name_filter( $from_name ) {
return empty( $this->mail_from_name ) ? $from_name : $this->mail_from_name;
}
/**
* Changes the mail content type
*
* Callback for "wp_mail_content_type" hook in wp_mail()
*
* @see wp_mail()
* @since 6.0
* @access public
*
* @param string $content_type Default content type
* @return string New content type
*/
public function mail_content_type_filter( $content_type ) {
return empty( $this->mail_content_type ) ? $content_type : 'text/' . $this->mail_content_type;
}
/**
* Changes the retrieve password e-mail subject
*
* Callback for "retrieve_pass_title" hook in Theme_My_Login::retrieve_password()
*
* @see Theme_My_Login::retrieve_password()
* @since 6.0
* @access public
*
* @param string $title Default subject
* @param int $user_id User ID
* @return string New subject
*/
public function retrieve_pass_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'retrieve_pass', 'title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the retrieve password e-mail message
*
* Callback for "retrieve_password_message" hook in Theme_My_Login::retrieve_password()
*
* @see Theme_My_Login::retrieve_password()
* @since 6.0
* @access public
*
* @param string $message Default message
* @param string $key The user's reset key
* @param int $user_id User ID
* @return string New message
*/
public function retrieve_pass_message_filter( $message, $key, $user_id ) {
$_message = $this->get_option( array( 'retrieve_pass', 'message' ) );
if ( ! empty( $_message ) ) {
$user = get_user_by( 'id', $user_id );
$message = Theme_My_Login_Common::replace_vars( $_message, $user_id, array(
'%loginurl%' => site_url( 'wp-login.php', 'login' ),
'%reseturl%' => site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user->user_login ), 'login' )
) );
}
return $message;
}
/**
* Changes who the password change notification e-mail is sent to
*
* Callback for "password_change_notification_mail_to" hook in $this->password_change_notification()
*
* @see $this->password_change_notification()
* @since 6.0
* @access public
*
* @param string $to Default admin e-mail address
* @return string New e-mail address(es)
*/
public function password_change_notification_mail_to_filter( $to ) {
$_to = $this->get_option( array( 'reset_pass', 'admin_mail_to' ) );
return empty( $_to ) ? $to : $_to;
}
/**
* Changes the password change notification e-mail subject
*
* Callback for "password_change_notification_title" hook in $this->password_change_notification()
*
* @see $this->password_change_notification()
* @since 6.0
* @access public
*
* @param string $title Default subject
* @param int $user_id User ID
* @return string New subject
*/
public function password_change_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'reset_pass', 'admin_title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the password change notification e-mail message
*
* Callback for "password_change_notification_message" hook in $this->password_change_notification()
*
* @see $this->password_change_notification()
* @since 6.0
* @access public
*
* @param string $title Default message
* @param int $user_id User ID
* @return string New message
*/
public function password_change_notification_message_filter( $message, $user_id ) {
$_message = $this->get_option( array( 'reset_pass', 'admin_message' ) );
return empty( $_message ) ? $message : Theme_My_Login_Common::replace_vars( $_message, $user_id );
}
/**
* Determines whether or not to send the password change notification e-mail
*
* Callback for "send_password_change_notification" hook in $this->password_change_notification()
*
* @see $this->password_change_notification()
* @since 6.0
* @access public
*
* @param bool $enable Default setting
* @return bool New setting
*/
public function send_password_change_notification_filter( $enable ) {
// We'll cheat and set our headers here
$this->set_mail_headers(
$this->get_option( array( 'reset_pass', 'admin_mail_from' ) ),
$this->get_option( array( 'reset_pass', 'admin_mail_from_name' ) ),
$this->get_option( array( 'reset_pass', 'admin_mail_content_type' ) )
);
if ( $this->get_option( array( 'reset_pass', 'admin_disable' ) ) )
return false;
return $enable;
}
/**
* Changes the new user e-mail subject
*
* Callback for "new_user_notification_title" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param string $title Default title
* @param int $user_id User ID
* @return string New title
*/
public function new_user_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'new_user', 'title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the new user e-mail message
*
* Callback for "new_user_notification_message" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param string $title Default message
* @param string $new_pass The user's password
* @param int $user_id User ID
* @return string New message
*/
public function new_user_notification_message_filter( $message, $new_pass, $user_id ) {
$_message = $this->get_option( array( 'new_user', 'message' ) );
if ( ! empty( $_message ) ) {
$message = Theme_My_Login_Common::replace_vars( $_message, $user_id, array(
'%loginurl%' => site_url( 'wp-login.php', 'login' ),
'%user_pass%' => $new_pass
) );
}
return $message;
}
/**
* Determines whether or not to send the new user e-mail
*
* Callback for "send_new_user_notification" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param bool $enable Default setting
* @return bool New setting
*/
public function send_new_user_notification_filter( $enable ) {
// We'll cheat and set out headers here
$this->set_mail_headers(
$this->get_option( array( 'new_user', 'mail_from' ) ),
$this->get_option( array( 'new_user', 'mail_from_name' ) ),
$this->get_option( array( 'new_user', 'mail_content_type' ) )
);
return $enable;
}
/**
* Changes who the new user admin notification e-mail is sent to
*
* Callback for "new_user_admin_notification_mail_to" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param string $to Default admin e-mail address
* @return string New e-mail address(es)
*/
public function new_user_admin_notification_mail_to_filter( $to ) {
$_to = $this->get_option( array( 'new_user', 'admin_mail_to' ) );
return empty( $_to ) ? $to : $_to;
}
/**
* Changes the new user admin notification e-mail subject
*
* Callback for "new_user_admin_notification_title" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param string $title Default subject
* @param int $user_id User ID
* @return string New subject
*/
public function new_user_admin_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'new_user', 'admin_title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the new user admin notification e-mail message
*
* Callback for "new_user_admin_notification_message" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param string $title Default message
* @param int $user_id User ID
* @return string New message
*/
public function new_user_admin_notification_message_filter( $message, $user_id ) {
$_message = $this->get_option( array( 'new_user', 'admin_message' ) );
return empty( $_message ) ? $message : Theme_My_Login_Common::replace_vars( $_message, $user_id );
}
/**
* Determines whether or not to send the new user admin notification e-mail
*
* Callback for "send_new_user_admin_notification" hook in $this->new_user_notification()
*
* @see $this->new_user_notification()
* @since 6.0
* @access public
*
* @param bool $enable Default setting
* @return bool New setting
*/
public function send_new_user_admin_notification_filter( $enable ) {
// We'll cheat and set out headers here
$this->set_mail_headers(
$this->get_option( array( 'new_user', 'admin_mail_from' ) ),
$this->get_option( array( 'new_user', 'admin_mail_from_name' ) ),
$this->get_option( array( 'new_user', 'admin_mail_content_type' ) )
);
if ( $this->get_option( array( 'new_user', 'admin_disable' ) ) )
return false;
return $enable;
}
/**
* Applies user moderation mail filters according to moderation type
*
* Callback for "register_post" hook in Theme_My_Login::register_new_user()
*
* @see Theme_My_Login::register_new_user()
* @since 6.1
* @access public
*/
public function apply_user_moderation_notification_filters() {
if ( ! class_exists( 'Theme_My_Login_User_Moderation' ) )
return;
$moderation_type = Theme_My_Login_User_Moderation::get_object()->get_option( 'type' );
switch ( $moderation_type ) {
case 'email' :
$this->set_mail_headers(
$this->get_option( array( 'user_activation', 'mail_from' ) ),
$this->get_option( array( 'user_activation', 'mail_from_name' ) ),
$this->get_option( array( 'user_activation', 'mail_content_type' ) )
);
add_filter( 'user_activation_notification_title', array( &$this, 'user_activation_notification_title_filter' ), 10, 2 );
add_filter( 'user_activation_notification_message', array( &$this, 'user_activation_notification_message_filter' ), 10, 3 );
break;
case 'admin' :
$this->set_mail_headers(
$this->get_option( array( 'user_approval', 'admin_mail_from' ) ),
$this->get_option( array( 'user_approval', 'admin_mail_from_name' ) ),
$this->get_option( array( 'user_approval', 'admin_mail_content_type' ) )
);
add_filter( 'user_approval_admin_notification_mail_to', array( &$this, 'user_approval_admin_notification_mail_to_filter' ) );
add_filter( 'user_approval_admin_notification_title', array( &$this, 'user_approval_admin_notification_title_filter' ), 10, 2 );
add_filter( 'user_approval_admin_notification_message', array( &$this, 'user_approval_admin_notification_message_filter' ), 10, 2 );
break;
}
}
/**
* Applies all user approval mail filters
*
* Callback for "approve_user" hook in Theme_My_Login_User_Moderation::approve_user()
*
* @see Theme_My_Login_User_Moderation::approve_user()
* @since 6.1
* @access public
*/
public function apply_user_approval_notification_filters() {
$this->set_mail_headers(
$this->get_option( array( 'user_approval', 'mail_from' ) ),
$this->get_option( array( 'user_approval', 'mail_from_name' ) ),
$this->get_option( array( 'user_approval', 'mail_content_type' ) )
);
add_filter( 'user_approval_notification_title', array( &$this, 'user_approval_notification_title_filter' ), 10, 2 );
add_filter( 'user_approval_notification_message', array( &$this, 'user_approval_notification_message_filter' ), 10, 3 );
}
/**
* Applies all user denial mail filters
*
* Callback for "deny_user" hook in Theme_My_Login_User_Moderation_Admin::deny_user()
*
* @see Theme_My_Login_User_Moderation_Admin::deny_user()
* @since 6.1
* @access public
*/
public function apply_user_denial_notification_filters() {
$this->set_mail_headers(
$this->get_option( array( 'user_denial', 'mail_from' ) ),
$this->get_option( array( 'user_denial', 'mail_from_name' ) ),
$this->get_option( array( 'user_denial', 'mail_content_type' ) )
);
add_filter( 'user_denial_notification_title', array( &$this, 'user_denial_notification_title_filter' ), 10, 2 );
add_filter( 'user_denial_notification_message', array( &$this, 'user_denial_notification_message_filter' ), 10, 2 );
}
/**
* Changes the user activation e-mail subject
*
* Callback for "user_activation_notification_title" hook in Theme_My_Login_User_Moderation::new_user_activation_notification()
*
* @see Theme_My_Login_User_Moderation::new_user_activation_notification()
* @since 6.1
* @access public
*
* @param string $title The default subject
* @param int $user_id The user's ID
* @return string The filtered subject
*/
public function user_activation_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'user_activation', 'title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the user activation e-mail message
*
* Callback for "user_activation_notification_message" hook in Theme_My_Login_User_Moderation::new_user_activation_notification()
*
* @see Theme_My_Login_User_Moderation::new_user_activation_notification()
* @since 6.1
* @access public
*
* @param string $title The default message
* @param int $user_id The user's ID
* @param string $activation_url The activation URL
* @return string The filtered message
*/
public function user_activation_notification_message_filter( $message, $activation_url, $user_id ) {
$_message = $this->get_option( array( 'user_activation', 'message' ) );
if ( ! empty( $_message ) ) {
$message = Theme_My_Login_Common::replace_vars( $_message, $user_id, array(
'%activateurl%' => $activation_url
) );
}
return $message;
}
/**
* Changes the user approval e-mail subject
*
* Callback for "user_approval_notification_title" hook in Theme_My_Login_User_Moderation_Admin::approve_user()
*
* @see Theme_My_Login_User_Moderation_Admin::approve_user()
* @since 6.1
* @access public
*
* @param string $title The default subject
* @param int $user_id The user's ID
* @return string The filtered subject
*/
public function user_approval_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'user_approval', 'title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the user approval e-mail message
*
* Callback for "user_approval_notification_message" hook in Theme_My_Login_User_Moderation_Admin::approve_user()
*
* @see Theme_My_Login_User_Moderation_Admin::approve_user()
* @since 6.1
* @access public
*
* @param string $title The default message
* @param string $new_pass The user's new password
* @param int $user_id The user's ID
* @return string The filtered message
*/
public function user_approval_notification_message_filter( $message, $new_pass, $user_id ) {
$_message = $this->get_option( array( 'user_approval', 'message' ) );
if ( ! empty( $_message ) ) {
$message = Theme_My_Login_Common::replace_vars( $_message, $user_id, array(
'%loginurl%' => Theme_My_Login::get_object()->get_page_link( 'login' ),
'%user_pass%' => $new_pass
) );
}
return $message;
}
/**
* Changes the user approval admin e-mail recipient
*
* Callback for "user_approval_admin_notification_mail_to" hook in Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
*
* @see Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
* @since 6.1
* @access public
*
* @param string $to The default recipient
* @return string The filtered recipient
*/
public function user_approval_admin_notification_mail_to_filter( $to ) {
$_to = $this->get_option( array( 'user_approval', 'admin_mail_to' ) );
return empty( $_to ) ? $to : $_to;
}
/**
* Changes the user approval admin e-mail subject
*
* Callback for "user_approval_admin_notification_title" hook in Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
*
* @see Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
* @since 6.1
* @access public
*
* @param string $title The default subject
* @param int $user_id The user's ID
* @return string The filtered subject
*/
public function user_approval_admin_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'user_approval', 'admin_title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the user approval admin e-mail message
*
* Callback for "user_approval_admin_notification_message" hook in Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
*
* @see Theme_My_Login_User_Moderation::new_user_approval_admin_notification()
* @since 6.1
* @access public
*
* @param string $message The default message
* @param int $user_id The user's ID
* @return string The filtered message
*/
public function user_approval_admin_notification_message_filter( $message, $user_id ) {
$_message = $this->get_option( array( 'user_approval', 'admin_message' ) );
if ( ! empty( $_message ) ) {
$message = Theme_My_Login_Common::replace_vars( $_message, $user_id, array(
'%pendingurl%' => admin_url( 'users.php?role=pending' )
) );
}
return $message;
}
/**
* Changes the user denial e-mail subject
*
* Callback for "user_denial_notification_title" hook in Theme_My_Login_User_Moderation_Admin::deny_user()
*
* @see Theme_My_Login_User_Moderation_Admin::deny_user()
* @since 6.1
* @access public
*
* @param string $title The default subject
* @param int $user_id The user's ID
* @return string The filtered subject
*/
public function user_denial_notification_title_filter( $title, $user_id ) {
$_title = $this->get_option( array( 'user_denial', 'title' ) );
return empty( $_title ) ? $title : Theme_My_Login_Common::replace_vars( $_title, $user_id );
}
/**
* Changes the user denial e-mail message
*
* Callback for "user_denial_notification_message" hook in Theme_My_Login_User_Moderation_Admin::deny_user()
*
* @see Theme_My_Login_User_Moderation_Admin::deny_user()
* @since 6.1
* @access public
*
* @param string $message The default message
* @param int $user_id The user's ID
* @return string The filtered message
*/
public function user_denial_notification_message_filter( $message, $user_id ) {
$_message = $this->get_option( array( 'user_denial', 'message' ) );
return empty( $_message ) ? $message : Theme_My_Login_Common::replace_vars( $_message, $user_id );
}
/**
* Notify the blog admin of a new user
*
* @since 6.0
* @access public
*
* @param int $user_id User ID
* @param string $plaintext_pass Optional. The user's plaintext password
*/
public function new_user_notification( $user_id, $plaintext_pass = '' ) {
global $current_site;
$user = new WP_User( $user_id );
do_action( 'tml_new_user_notification', $user_id, $plaintext_pass );
$user_login = stripslashes( $user->user_login );
$user_email = stripslashes( $user->user_email );
if ( is_multisite() ) {
$blogname = $current_site->site_name;
} else {
// 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 );
}
if ( apply_filters( 'send_new_user_admin_notification', true ) ) {
$message = sprintf( __( 'New user registration on your site %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";
$title = sprintf( __( '[%s] New User Registration' ), $blogname );
$title = apply_filters( 'new_user_admin_notification_title', $title, $user_id );
$message = apply_filters( 'new_user_admin_notification_message', $message, $user_id );
$to = apply_filters( 'new_user_admin_notification_mail_to', get_option( 'admin_email' ) );
@wp_mail( $to, $title, $message );
}
if ( empty( $plaintext_pass ) )
return;
if ( apply_filters( 'send_new_user_notification', true ) ) {
$message = sprintf( __( 'Username: %s' ), $user_login ) . "\r\n";
$message .= sprintf( __( 'Password: %s' ), $plaintext_pass ) . "\r\n";
$message .= wp_login_url() . "\r\n";
$title = sprintf( __( '[%s] Your username and password' ), $blogname );
$title = apply_filters( 'new_user_notification_title', $title, $user_id );
$message = apply_filters( 'new_user_notification_message', $message, $plaintext_pass, $user_id );
wp_mail( $user_email, $title, $message );
}
}
/**
* Notify the blog admin of a user changing password
*
* @since 6.0
* @access public
*
* @param object $user User object
*/
public function password_change_notification( &$user ) {
global $current_site;
$to = apply_filters( 'password_change_notification_mail_to', get_option( 'admin_email' ) );
// send a copy of password change notification to the admin
// but check to see if it's the admin whose password we're changing, and skip this
if ( $user->user_email != $to && apply_filters( 'send_password_change_notification', true ) ) {
if ( is_multisite() ) {
$blogname = $current_site->site_name;
} else {
// 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 );
}
$title = sprintf( __( '[%s] Password Lost/Changed' ), $blogname );
$message = sprintf( __( 'Password Lost and Changed for user: %s' ), $user->user_login ) . "\r\n";
$title = apply_filters( 'password_change_notification_title', $title, $user->ID );
$message = apply_filters( 'password_change_notification_message', $message, $user->ID );
wp_mail( $to, $title, $message );
}
}
}
Theme_My_Login_Custom_Email::get_object();
endif;
if ( is_admin() )
include_once( dirname( __FILE__ ) . '/admin/custom-email-admin.php' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment