bottega/simple-membership/classes/class.swpm-registration.php

127 lines
5.6 KiB
PHP

<?php
/**
* Description of BRegistration
*
* @author nur
*/
abstract class SwpmRegistration {
protected $member_info = array();
var $email_activation = false;
protected static $_intance = null;
//public abstract static function get_instance();
protected function send_reg_email() {
global $wpdb;
if ( empty( $this->member_info ) ) {
return false;
}
$member_info = $this->member_info;
$settings = SwpmSettings::get_instance();
$subject = $settings->get_value( 'reg-complete-mail-subject' );
$body = $settings->get_value( 'reg-complete-mail-body' );
if ( $this->email_activation ) {
$swpm_user = SwpmMemberUtils::get_user_by_user_name( $member_info['user_name'] );
$member_id = $swpm_user->member_id;
$act_code = md5( uniqid() . $member_id );
$enc_pass = SwpmUtils::crypt( $member_info['plain_password'] );
$user_data = array(
'timestamp' => time(),
'act_code' => $act_code,
'plain_password' => $enc_pass,
);
$user_data = apply_filters( 'swpm_email_activation_data', $user_data );
update_option( 'swpm_email_activation_data_usr_' . $member_id, $user_data, false );
$body = $settings->get_value( 'email-activation-mail-body' );
$subject = $settings->get_value( 'email-activation-mail-subject' );
$activation_link = add_query_arg(
array(
'swpm_email_activation' => '1',
'swpm_member_id' => $member_id,
'swpm_token' => $act_code,
),
get_home_url()
);
// Allow hooks to change the value of activation_link
$activation_link = apply_filters('swpm_send_reg_email_activation_link', $activation_link);
$member_info['activation_link'] = $activation_link;
}
$from_address = $settings->get_value( 'email-from' );
$login_link = $settings->get_value( 'login-page-url' );
$headers = 'From: ' . $from_address . "\r\n";
$member_info['membership_level_name'] = SwpmPermission::get_instance( $member_info['membership_level'] )->get( 'alias' );
$member_info['password'] = $member_info['plain_password'];
$member_info['login_link'] = $login_link;
$values = array_values( $member_info );
$keys = array_map( 'swpm_enclose_var', array_keys( $member_info ) );
$body = html_entity_decode( $body );
$body = str_replace( $keys, $values, $body );
$swpm_user = SwpmMemberUtils::get_user_by_user_name( $member_info['user_name'] );
$member_id = $swpm_user->member_id;
$body = SwpmMiscUtils::replace_dynamic_tags( $body, $member_id ); //Do the standard merge var replacement.
$email = sanitize_email( filter_input( INPUT_POST, 'email', FILTER_UNSAFE_RAW ) );
if ( empty( $email ) ) {
$email = $swpm_user->email;
}
$body = apply_filters( 'swpm_registration_complete_email_body', $body ); //This filter can be used to modify the registration complete email body dynamically.
//Send notification email to the member
$subject = apply_filters( 'swpm_email_registration_complete_subject', $subject );
$body = apply_filters( 'swpm_email_registration_complete_body', $body ); //You can override the email to empty to disable this email.
if ( ! empty( $body ) ) {
SwpmMiscUtils::mail( trim( $email ), $subject, $body, $headers );
SwpmLog::log_simple_debug( 'Member registration complete email sent to: ' . $email . '. From email address value used: ' . $from_address, true );
} else {
SwpmLog::log_simple_debug( 'NOTICE: Registration complete email body value is empty. Member registration complete email will NOT be sent.', true );
}
if ( $settings->get_value( 'enable-admin-notification-after-reg' ) && ! $this->email_activation ) {
//Send notification email to the site admin
$admin_notification = $settings->get_value( 'admin-notification-email' );
$admin_notification = empty( $admin_notification ) ? $from_address : $admin_notification;
$notify_emails_array = explode( ',', $admin_notification );
$headers = 'From: ' . $from_address . "\r\n";
$admin_notify_subject = $settings->get_value( 'reg-complete-mail-subject-admin' );
if ( empty( $admin_notify_subject ) ) {
$admin_notify_subject = 'Notification of New Member Registration';
}
$admin_notify_body = $settings->get_value( 'reg-complete-mail-body-admin' );
if ( empty( $admin_notify_body ) ) {
$admin_notify_body = "A new member has completed the registration.\n\n" .
"Username: {user_name}\n" .
"Email: {email}\n\n" .
"Please login to the admin dashboard to view details of this user.\n\n" .
"You can customize this email message from the Email Settings menu of the plugin.\n\n" .
'Thank You';
}
$additional_args = array( 'password' => $member_info['plain_password'] );
$admin_notify_body = SwpmMiscUtils::replace_dynamic_tags( $admin_notify_body, $member_id, $additional_args ); //Do the standard merge var replacement.
foreach ( $notify_emails_array as $to_email ) {
$to_email = trim( $to_email );
$admin_notify_subject = apply_filters( 'swpm_email_admin_notify_subject', $admin_notify_subject );
$admin_notify_body = apply_filters( 'swpm_email_admin_notify_body', $admin_notify_body );
SwpmMiscUtils::mail( $to_email, $admin_notify_subject, $admin_notify_body, $headers );
SwpmLog::log_simple_debug( 'Admin notification email sent to: ' . $to_email, true );
}
}
return true;
}
}
function swpm_enclose_var( $n ) {
return '{' . $n . '}';
}