123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- /**
- * Description of BAdminRegistration
- *
- */
- class SwpmAdminRegistration extends SwpmRegistration {
- public static function get_instance() {
- self::$_intance = empty( self::$_intance ) ? new SwpmAdminRegistration() : self::$_intance;
- return self::$_intance;
- }
- public function show_form() {
- }
- public function register_admin_end() {
- //Check we are on the admin end and user has management permission
- SwpmMiscUtils::check_user_permission_and_is_admin( 'member creation by admin' );
- //Check nonce
- if ( ! isset( $_POST['_wpnonce_create_swpmuser_admin_end'] ) || ! wp_verify_nonce( $_POST['_wpnonce_create_swpmuser_admin_end'], 'create_swpmuser_admin_end' ) ) {
- //Nonce check failed.
- wp_die( SwpmUtils::_( 'Error! Nonce verification failed for user registration from admin end.' ) );
- }
- global $wpdb;
- $member = SwpmTransfer::$default_fields;
- $form = new SwpmForm( $member );
- if ( $form->is_valid() ) {
- $member_info = $form->get_sanitized_member_form_data();
- //First, check if email or username belongs to an existing admin user. Bail if it does.
- SwpmMemberUtils::check_and_die_if_email_belongs_to_admin_user($member_info['email']);
- SwpmMemberUtils::check_and_die_if_username_belongs_to_admin_user($member_info['user_name']);
- $account_status = SwpmSettings::get_instance()->get_value( 'default-account-status', 'active' );
- $member_info['account_state'] = $account_status;
- $plain_password = $member_info['plain_password'];
- unset( $member_info['plain_password'] );
- //Create SWPM member entry
- $wpdb->insert( $wpdb->prefix . 'swpm_members_tbl', $member_info );
- //Register to WordPress
- $query = $wpdb->prepare( 'SELECT role FROM ' . $wpdb->prefix . 'swpm_membership_tbl WHERE id = %d', $member_info['membership_level'] );
- $wp_user_info = array();
- $wp_user_info['user_nicename'] = implode( '-', explode( ' ', $member_info['user_name'] ) );
- $wp_user_info['display_name'] = $member_info['user_name'];
- $wp_user_info['user_email'] = $member_info['email'];
- $wp_user_info['nickname'] = $member_info['user_name'];
- if ( isset( $member_info['first_name'] ) ) {
- $wp_user_info['first_name'] = $member_info['first_name'];
- }
- if ( isset( $member_info['last_name'] ) ) {
- $wp_user_info['last_name'] = $member_info['last_name'];
- }
- $wp_user_info['user_login'] = $member_info['user_name'];
- $wp_user_info['password'] = $plain_password;
- $wp_user_info['role'] = $wpdb->get_var( $query );
- $wp_user_info['user_registered'] = date( 'Y-m-d H:i:s' );
- SwpmUtils::create_wp_user( $wp_user_info );
- //End register to WordPress
- //Send notification
- $send_notification = SwpmSettings::get_instance()->get_value( 'enable-notification-after-manual-user-add' );
- $member_info['plain_password'] = $plain_password;
- $this->member_info = $member_info;
- if ( ! empty( $send_notification ) ) {
- $this->send_reg_email();
- }
- //Trigger action hook
- do_action( 'swpm_admin_end_registration_complete_user_data', $member_info );
- //Save success message
- $message = array(
- 'succeeded' => true,
- 'message' => '<p>' . SwpmUtils::_( 'Member record added successfully.' ) . '</p>',
- );
- SwpmTransfer::get_instance()->set( 'status', $message );
- wp_redirect( 'admin.php?page=simple_wp_membership' );
- exit( 0 );
- }
- $message = array(
- 'succeeded' => false,
- 'message' => SwpmUtils::_( 'Please correct the following:' ),
- 'extra' => $form->get_errors(),
- );
- SwpmTransfer::get_instance()->set( 'status', $message );
- }
- public function edit_admin_end( $id ) {
- //Check we are on the admin end and user has management permission
- SwpmMiscUtils::check_user_permission_and_is_admin( 'member edit by admin' );
- //Check nonce
- if ( ! isset( $_POST['_wpnonce_edit_swpmuser_admin_end'] ) || ! wp_verify_nonce( $_POST['_wpnonce_edit_swpmuser_admin_end'], 'edit_swpmuser_admin_end' ) ) {
- //Nonce check failed.
- wp_die( SwpmUtils::_( 'Error! Nonce verification failed for user edit from admin end.' ) );
- }
- global $wpdb;
- $query = $wpdb->prepare( 'SELECT * FROM ' . $wpdb->prefix . 'swpm_members_tbl WHERE member_id = %d', $id );
- $member = $wpdb->get_row( $query, ARRAY_A );
- // let's get previous membership level
- $prev_level = false;
- if ( $member ) {
- $prev_level = $member['membership_level'];
- }
- $email_address = $member['email'];
- $user_name = $member['user_name'];
- unset( $member['member_id'] );
- unset( $member['user_name'] );
- $form = new SwpmForm( $member );
- if ( $form->is_valid() ) {
- $member = $form->get_sanitized_member_form_data();
- $plain_password = isset( $member['plain_password'] ) ? $member['plain_password'] : '';
- SwpmUtils::update_wp_user( $user_name, $member );
- unset( $member['plain_password'] );
- $wpdb->update( $wpdb->prefix . 'swpm_members_tbl', $member, array( 'member_id' => $id ) );
- // set previous membership level
- $member['prev_membership_level'] = $prev_level;
- $member['member_id'] = $id;
- //Trigger action hook
- do_action( 'swpm_admin_end_edit_complete_user_data', $member );
- if ( $member['prev_membership_level'] != $member['membership_level'] ) {
- do_action(
- 'swpm_membership_level_changed',
- array(
- 'member_id' => $id,
- 'from_level' => $member['prev_membership_level'],
- 'to_level' => $member['membership_level'],
- )
- );
- }
- //Set messages
- $message = array(
- 'succeeded' => true,
- 'message' => '<p>Member profile updated successfully.</p>',
- );
- $error = apply_filters( 'swpm_admin_edit_custom_fields', array(), $member + array( 'member_id' => $id ) );
- if ( ! empty( $error ) ) {
- $message = array(
- 'succeeded' => false,
- 'message' => SwpmUtils::_( 'Please correct the following:' ),
- 'extra' => $error,
- );
- SwpmTransfer::get_instance()->set( 'status', $message );
- return;
- }
- SwpmTransfer::get_instance()->set( 'status', $message );
- $send_notification = filter_input( INPUT_POST, 'account_status_change' );
- if ( ! empty( $send_notification ) ) {
- $settings = SwpmSettings::get_instance();
- $from_address = $settings->get_value( 'email-from' );
- $headers = 'From: ' . $from_address . "\r\n";
- $subject = filter_input( INPUT_POST, 'notificationmailhead' );
- $body = filter_input( INPUT_POST, 'notificationmailbody' );
- $settings->set_value( 'account-change-email-body', $body )->set_value( 'account-change-email-subject', $subject )->save();
- $member['login_link'] = $settings->get_value( 'login-page-url' );
- $member['user_name'] = $user_name;
- $member['password'] = empty( $plain_password ) ? SwpmUtils::_( 'Your current password' ) : $plain_password;
- $values = array_values( $member );
- $keys = array_map( 'swpm_enclose_var', array_keys( $member ) );
- $body = html_entity_decode( str_replace( $keys, $values, $body ) );
- $subject = apply_filters( 'swpm_email_account_status_change_subject', $subject );
- $body = apply_filters( 'swpm_email_account_status_change_body', $body );
- SwpmMiscUtils::mail( $email_address, $subject, $body, $headers );
- SwpmLog::log_simple_debug( 'Notify email sent (after profile edit from admin side). Email sent to: ' . $email_address, true );
- }
- wp_redirect( 'admin.php?page=simple_wp_membership' );
- exit( 0 );
- }
- $message = array(
- 'succeeded' => false,
- 'message' => SwpmUtils::_( 'Please correct the following:' ),
- 'extra' => $form->get_errors(),
- );
- SwpmTransfer::get_instance()->set( 'status', $message );
- }
- }
|