function update() { require_once ABSPATH . 'wp-includes/pluggable.php'; /* Update profile when there is no error */ if (!isset($this->errors)) { $limited_fields = array(); $param_field_updates = array('user_id' => $this->userid); $limited_fields = apply_filters('upme_trigger_field_update', $limited_fields, $param_field_updates); // Get list of dattime fields $date_time_fields = array(); foreach ($this->upme_fileds_array as $key => $field) { extract($field); if (isset($this->upme_fileds_array[$key]['field']) && $this->upme_fileds_array[$key]['field'] == 'checkbox') { if (in_array($meta, $limited_fields)) { $prev_value = get_user_meta($this->userid, $meta, true); if ($prev_value != null) { array_push($this->changed_fields, array('meta' => $meta, 'prev_value' => $prev_value, 'new_value' => '')); } } update_user_meta($this->userid, $meta, null); } // Filter date/time custom fields if (isset($this->upme_fileds_array[$key]['field']) && $this->upme_fileds_array[$key]['field'] == 'datetime') { array_push($date_time_fields, $this->upme_fileds_array[$key]['meta']); } } if (is_array($this->usermeta)) { foreach ($this->usermeta as $key => $value) { /* Update profile when there is no error */ if (!isset($this->errors[$key])) { // save checkboxes if (is_array($value)) { // checkboxes $value = implode(', ', $value); } // $upme_date_format = (string) isset($this->upme_settings['date_format']) ? $this->upme_settings['date_format'] : 'mm/dd/yy'; if (in_array($key, $date_time_fields)) { if (!empty($value)) { $formatted_date = upme_date_format_to_standerd($value, $upme_date_format); $value = $formatted_date; } } /* UPME Actions for checking extra fields or hidden data in profile edit form */ if (in_array($key, $limited_fields)) { $prev_value = get_user_meta($this->userid, $key, true); if ($prev_value != stripslashes_deep(esc_attr($value))) { array_push($this->changed_fields, array('meta' => $key, 'prev_value' => $prev_value, 'new_value' => $value)); } } // End Filter // Prevent passwords from saving in user meta table if ('user_pass' != $key && 'user_pass_confirm' != $key) { update_user_meta($this->userid, $key, esc_attr($value)); } /* update core fields - email, url, pass */ if (in_array($key, array('user_email', 'user_url', 'display_name')) || $key == 'user_pass' && esc_attr($value) != '') { $result = wp_update_user(array('ID' => $this->userid, $key => esc_attr($value))); /* UPME Action for after changing password */ if (!is_wp_error($result) && 'user_pass' == $key) { do_action('upme_after_password_change', $this->userid); } // End Filter } } } // Implementing the email sending capabilities } } }
function update() { require_once ABSPATH . 'wp-includes/pluggable.php'; /* Update profile when there is no error */ if (!isset($this->errors)) { // Get list of dattime fields $date_time_fields = array(); foreach ($this->upme_fileds_array as $key => $field) { extract($field); if (isset($this->upme_fileds_array[$key]['field']) && $this->upme_fileds_array[$key]['field'] == 'checkbox') { update_user_meta($this->userid, $meta, null); } // Filter date/time custom fields if (isset($this->upme_fileds_array[$key]['field']) && $this->upme_fileds_array[$key]['field'] == 'datetime') { array_push($date_time_fields, $this->upme_fileds_array[$key]['meta']); } } if (is_array($this->usermeta)) { $changed_fields = array(); $limited_fields = array(); $param_field_updates = array('user_id' => $this->userid); $limited_fields = apply_filters('upme_trigger_field_update', $limited_fields, $param_field_updates); foreach ($this->usermeta as $key => $value) { /* Update profile when there is no error */ if (!isset($this->errors[$key])) { // save checkboxes if (is_array($value)) { // checkboxes $value = implode(', ', $value); } // // Set date format from admin settings $upme_settings = get_option('upme_options'); $upme_date_format = (string) isset($upme_settings['date_format']) ? $upme_settings['date_format'] : 'mm/dd/yy'; if (in_array($key, $date_time_fields)) { if (!empty($value)) { $formatted_date = upme_date_format_to_standerd($value, $upme_date_format); $value = $formatted_date; } } /* UPME Actions for checking extra fields or hidden data in profile edit form */ if (in_array($key, $limited_fields)) { $prev_value = get_user_meta($this->userid, $key, true); if ($prev_value != esc_attr($value)) { array_push($changed_fields, array('meta' => $key, 'prev_value' => $prev_value, 'new_value' => $value)); } } // End Filter // Prevent passwords from saving in user meta table if ('user_pass' != $key && 'user_pass_confirm' != $key) { update_user_meta($this->userid, $key, esc_attr($value)); } /* update core fields - email, url, pass */ if (in_array($key, array('user_email', 'user_url', 'display_name')) || $key == 'user_pass' && esc_attr($value) != '') { $result = wp_update_user(array('ID' => $this->userid, $key => esc_attr($value))); /* UPME Action for after changing password */ if (!is_wp_error($result) && 'user_pass' == $key) { do_action('upme_after_password_change', $this->userid); } // End Filter } } } if (is_array($changed_fields) && count($changed_fields) != 0) { $this->notify_field_update = true; /* UPME Actions for executing custom functions on profile data change */ $profile_field_update_triggered_params = array('changed_fields' => $changed_fields, 'user_id' => $this->userid); do_action('upme_profile_field_update_triggered', $profile_field_update_triggered_params); // End action if ($this->notify_field_update) { $full_name = get_user_meta($this->userid, 'first_name', true) . ' ' . get_user_meta($this->userid, 'last_name', true); $subject = __('Profile Information Update', 'upme'); $message = sprintf(__('%s has updated profile information.', 'upme'), $full_name) . "\r\n\r\n"; $message .= sprintf(__('Please find the updated information below.', 'upme'), $full_name) . "\r\n\r\n"; foreach ($changed_fields as $key => $value) { $message .= __('Field Key', 'upme') . " :" . $value['meta'] . "\r\n"; $message .= __('Previous Value', 'upme') . " :" . $value['prev_value'] . "\r\n"; $message .= __('Updated Value', 'upme') . " :" . $value['new_value'] . "\r\n\r\n"; } $message .= __('Thanks', 'upme') . "\r\n"; $message .= sprintf(__('%s'), get_option('blogname'), 'upme') . "\r\n"; global $upme_email_templates; $send_params = array('full_name' => $full_name, 'changed_fields' => $changed_fields); $upme_email_templates->upme_send_emails('nofify_profile_update', get_option('admin_email'), $subject, $message, $send_params, $this->userid); // wp_mail( // get_option('admin_email'), // $subject, // $message // ); } } // Implementing the email sending capabilities } } }
function upme_save_user_extra_fields($user_id) { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['upme']) && is_array($_POST['upme']) && count($_POST['upme']) > 0) { // Set date format from admin settings $upme_settings = get_option('upme_options'); $upme_date_format = (string) isset($upme_settings['date_format']) ? $upme_settings['date_format'] : 'mm/dd/yy'; // Get profile fields $profile_fields = get_option('upme_profile_fields'); // Get list of dattime fields $date_time_fields = array(); // Get list of required fields $required_fields = array(); foreach ($profile_fields as $key => $field) { $field_settings = $field; extract($field); // Set checkbox values to null, for preventing checkboxes saving issue when all are deselected if (isset($profile_fields[$key]['field']) && $profile_fields[$key]['field'] == 'checkbox') { update_user_meta($user_id, $meta, null); } // Filter date/time custom fields if (isset($profile_fields[$key]['field']) && $profile_fields[$key]['field'] == 'datetime') { array_push($date_time_fields, $profile_fields[$key]['meta']); } if (isset($profile_fields[$key]['required']) && $profile_fields[$key]['required'] == '1') { $required_fields[$profile_fields[$key]['meta']] = $field_settings; } /* UPME filter for adding restrictions before custom field type saving */ $backend_custom_field_type_restrictions_params = array('field_settings' => $field_settings); $this->errors = apply_filters('upme_backend_custom_field_type_restrictions', $this->errors, $_POST['upme'], $backend_custom_field_type_restrictions_params); /* END filter */ } foreach ($_POST['upme'] as $key => $value) { // Validation for required fields if (array_key_exists($key, $required_fields)) { switch ($required_fields[$key]['field']) { case 'text': case 'textarea': case 'datetime': case 'select': case 'fileupload': case 'password': case 'video': case 'soundcloud': if ('' == trim($value)) { $this->errors[] = __($required_fields[$key]['name'], 'upme') . __(' is required.', 'upme'); } break; case 'radio': case 'checkbox': break; default: if ('' == trim($value)) { $this->errors[] = __($required_fields[$key]['name'], 'upme') . __(' is required.', 'upme'); } break; } } //$this->errors[] if (!(isset($this->errors) && count($this->errors) > 0)) { if (is_array($value)) { $value = implode(', ', $value); } if (in_array($key, $date_time_fields)) { if ('' != $value) { $formatted_date = upme_date_format_to_standerd($value, $upme_date_format); $value = $formatted_date; } } /* UPME action for executing custom functionality before saving a field */ do_action('upme_before_save_backend_field_' . $key, $key, $value, $user_id); // End Action // To Do Need to check for adding new meta when it was not same as old update_user_meta($user_id, $key, $value); /* UPME action for executing custom functionality after saving a field */ do_action('upme_after_save_backend_field_' . $key, $key, $value, $user_id); // End Action if ($key == 'upme_user_profile_status') { /* UPME action for executing custom functionality after saving a field */ do_action('upme_user_profile_status_update', $key, $value, $user_id); // End Action } } } if (!(isset($this->errors) && count($this->errors) > 0)) { // Save core WordPress fields to user meta table update_user_meta($user_id, 'first_name', isset($_POST['first_name']) ? $_POST['first_name'] : ''); update_user_meta($user_id, 'last_name', isset($_POST['last_name']) ? $_POST['last_name'] : ''); if (isset($_POST['user_email']) && '' != $_POST['user_email']) { update_user_meta($user_id, 'user_email', $_POST['user_email']); } upme_update_user_cache($user_id); } } } }
function create() { global $upme_roles, $upme_email_templates; require_once ABSPATH . 'wp-includes/pluggable.php'; // Verify whether registration form name is modified if (isset($_POST['upme-register-form-name'])) { $upme_secret_key = get_option('upme_secret_key'); $register_form_name = $_POST['upme-register-form-name']; $register_form_name_hash = $_POST['upme-hidden-register-form-name-hash']; if ($register_form_name_hash != hash('sha256', $register_form_name . $upme_secret_key)) { // Invailid form name was defined by manually editing $this->errors[] = __('Invalid registration form.', 'upme'); return; } $this->registration_form_name = $register_form_name; } /* UPME action for adding restrictions before registration */ $before_registration_validation_params = array(); do_action('upme_before_registration_restrictions', $this->usermeta, $before_registration_validation_params); /* END action */ /* Create profile when there is no error */ if (!isset($this->errors)) { // Set date format from admin settings $upme_settings = get_option('upme_options'); $upme_date_format = (string) isset($upme_settings['date_format']) ? $upme_settings['date_format'] : 'mm/dd/yy'; /* Create account, update user meta */ $sanitized_user_login = sanitize_user($_POST['user_login']); /* Get password */ if (isset($_POST['user_pass']) && $_POST['user_pass'] != '') { $user_pass = $_POST['user_pass']; } else { $user_pass = wp_generate_password(12, false); /* UPME Filters for before registration head section */ $registration_generated_password_params = array('meta' => $this->usermeta); $user_pass = apply_filters('upme_registration_generated_password', $user_pass, $registration_generated_password_params); // End Filters } /* New user */ $user_id = wp_create_user($sanitized_user_login, $user_pass, $_POST['user_email']); if (!$user_id) { /* UPME action for handling failure in new user creation */ $new_user_registration_fail_params = array(); do_action('upme_new_user_registration_fail', $user_id, $new_user_registration_fail_params); /* END action */ } else { global $upme; /* Force custom user role on registration using shortcode attributes */ if (isset($_POST['upme-hidden-register-form-user-role'])) { $upme_secret_key = get_option('upme_secret_key'); $register_user_role = $_POST['upme-hidden-register-form-user-role']; $register_user_role_hash = $_POST['upme-hidden-register-form-user-role-hash']; if ($register_user_role_hash == hash('sha256', $register_user_role . $upme_secret_key) && get_role($register_user_role)) { $user = new WP_User($user_id); $user->set_role($register_user_role); } else { // Invailid user role was defined by manually editing return; } } else { /* Allow users to select the role without forcing */ $allow_user_role_registration = $upme_settings['select_user_role_in_registration']; // Set new users role specified in the registration page // This will only used when Select User Role in Registration setting is enabled $allowed_user_roles = $upme_roles->upme_allowed_user_roles_registration(); $user_role = isset($this->usermeta['user_role']) ? $this->usermeta['user_role'] : ''; if (!empty($user_role) && isset($allowed_user_roles[$user_role]) && $allow_user_role_registration) { $user = new WP_User($user_id); $user->set_role($user_role); } } // Get profile fields $profile_fields = get_option('upme_profile_fields'); // Get list of dattime fields $date_time_fields = array(); foreach ($profile_fields as $key => $field) { extract($field); // Filter date/time custom fields if (isset($profile_fields[$key]['field']) && $profile_fields[$key]['field'] == 'datetime') { array_push($date_time_fields, $profile_fields[$key]['meta']); } } /* Now update all user meta */ foreach ($this->usermeta as $key => $value) { // save checkboxes if (is_array($value)) { // checkboxes $value = implode(', ', $value); } if (in_array($key, $date_time_fields)) { if ('' != $value) { $formatted_date = upme_date_format_to_standerd($value, $upme_date_format); $value = $formatted_date; } } /* UPME action for adding custom filtering for each field save registration */ $before_registration_field_update_params = array('user_id' => $user_id, 'meta' => $key, 'value' => $value); do_action('upme_before_registration_field_update', $before_registration_field_update_params); /* END action */ // Prevent passwords from saving in user meta table if ('user_pass' != $key && 'user_pass_confirm' != $key) { update_user_meta($user_id, $key, esc_attr($value)); } /* UPME action for adding custom filtering for each field save registration */ $after_registration_field_update_params = array('user_id' => $user_id, 'meta' => $key, 'value' => $value); do_action('upme_after_registration_field_update', $after_registration_field_update_params); /* END action */ /* update core fields - email, url, pass */ if (in_array($key, array('user_email', 'user_url', 'display_name'))) { wp_update_user(array('ID' => $user_id, $key => esc_attr($value))); } } // Check user selected passwrod setting for saving the activation details } // Set approval status when user profile approvals are enabled $approval_setting_status = $this->validate_user_approval(); if ($approval_setting_status) { $approval_status = 'INACTIVE'; update_user_meta($user_id, 'upme_approval_status', $approval_status); } else { $approval_status = 'ACTIVE'; update_user_meta($user_id, 'upme_approval_status', $approval_status); } // Set Profile Status to active by default update_user_meta($user_id, 'upme_user_profile_status', 'ACTIVE'); // Set the password nag when user selected password setting is disabled // Set activation status and codes when selected password setting is enabled $upme_settings = get_option('upme_options'); $set_pass = (bool) $upme_settings['set_password']; $activation_setting_status = $this->validate_email_confirmation(); $activation_status = ''; if (!$set_pass) { update_user_option($user_id, 'default_password_nag', true, true); //Set up the Password change nag. } if ($activation_setting_status) { $activation_status = 'INACTIVE'; update_user_meta($user_id, 'upme_activation_status', $activation_status); } else { $activation_status = 'ACTIVE'; update_user_meta($user_id, 'upme_activation_status', $activation_status); } $activation_code = wp_generate_password(12, false); update_user_meta($user_id, 'upme_activation_code', $activation_code); // Set automatic login based on the setting value in admin if ($this->validate_automatic_login()) { wp_set_auth_cookie($user_id, false, is_ssl()); } /* action after Account Creation */ do_action('upme_user_register', $user_id); if (!empty($activation_status) && 'INACTIVE' == $activation_status) { upme_new_user_notification($user_id, $user_pass, $activation_status, $activation_code); } else { $user = new WP_User($user_id); $username = $user->user_login; $current_option = get_option('upme_options'); $link = get_permalink($current_option['login_page_id']); $send_params = array('username' => $username, 'password' => $user_pass, 'login_link' => $link); $email_status = $upme_email_templates->upme_send_emails('reg_default_user', '', '', '', $send_params, $user_id); $send_params = array('username' => $username, 'email' => $user->user_email); $admin_email_status = $upme_email_templates->upme_send_emails('reg_default_admin', '', '', '', $send_params, $user_id); if (!$email_status && !$admin_email_status) { wp_new_user_notification($user_id, $user_pass); } } } }