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();
         $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']);
         $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();
         }
         $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 register()
 {
     global $wpdb;
     $member = SwpmTransfer::$default_fields;
     $form = new SwpmForm($member);
     if ($form->is_valid()) {
         $member_info = $form->get_sanitized();
         $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']);
         $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);
         /*             * ******************** register to wordpress ********** */
         $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();
         }
         $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);
 }
 private function create_wp_user()
 {
     global $wpdb;
     $member_info = $this->member_info;
     $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'];
     $wp_user_info['first_name'] = $member_info['first_name'];
     $wp_user_info['last_name'] = $member_info['last_name'];
     $wp_user_info['user_login'] = $member_info['user_name'];
     $wp_user_info['password'] = $member_info['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);
     return true;
 }
 private function prepare_and_create_wp_user_front_end()
 {
     global $wpdb;
     $member_info = $this->member_info;
     //Retrieve the user role assigned for this level
     $query = $wpdb->prepare("SELECT role FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $member_info['membership_level']);
     $user_role = $wpdb->get_var($query);
     //Check to make sure that the user role of this level is not admin.
     if ($user_role == 'administrator') {
         //For security reasons we don't allow users with administrator role to be creted from the front-end. That can only be done from the admin dashboard side.
         $error_msg = '<p>Error! The user role for this membership level (level ID: ' . $member_info['membership_level'] . ') is set to "Administrator".</p>';
         $error_msg .= '<p>For security reasons, member registration to this level is not permitted from the front end.</p>';
         $error_msg .= '<p>An administrator of the site can manually create a member record with this access level from the admin dashboard side.</p>';
         wp_die($error_msg);
     }
     $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'];
     $wp_user_info['first_name'] = $member_info['first_name'];
     $wp_user_info['last_name'] = $member_info['last_name'];
     $wp_user_info['user_login'] = $member_info['user_name'];
     $wp_user_info['password'] = $member_info['plain_password'];
     $wp_user_info['role'] = $user_role;
     $wp_user_info['user_registered'] = date('Y-m-d H:i:s');
     SwpmUtils::create_wp_user($wp_user_info);
     return true;
 }