LLMS_Form_Handler::prepare_data_for_insert( array $posted_data, array[] $fields, string $action )
Prepares user-submitted data for insertion into the database.
Parameters Parameters
- $posted_data
-
(array) (Required) Sanitized & validated user-submitted form data.
- $fields
-
(array[]) (Required) LifterLMS form fields list.
- $action
-
(string) (Required) Insert action, either "registration" for new users or "update" for existing, users.
Return Return
(array)
Source Source
File: includes/forms/class-llms-form-handler.php
protected function prepare_data_for_insert( $posted_data, $fields, $action ) {
$prepared = array();
foreach ( $fields as $field ) {
if ( empty( $field['data_store_key'] ) ) {
continue;
}
// We need to account for fields that are part of the form but are not present in the `$posted_data`
// e.g. unchecked check boxes.
if ( isset( $posted_data[ $field['name'] ] ) || 'checkbox' === $field['type'] ) {
if ( ! isset( $prepared[ $field['data_store'] ] ) ) {
$prepared[ $field['data_store'] ] = array();
}
$prepared[ $field['data_store'] ][ $field['data_store_key'] ] = isset( $posted_data[ $field['name'] ] ) ? $posted_data[ $field['name'] ] : array();
}
}
if ( 'registration' === $action ) {
$defaults = array(
'role' => 'student',
'show_admin_bar_front' => false,
);
// Add a username if we don't have a user_login field.
if ( empty( $prepared['users']['user_login'] ) ) {
$defaults['user_login'] = LLMS_Person_Handler::generate_username( $posted_data['email_address'] );
}
// Add a password if we don't have a password field.
if ( empty( $prepared['users']['user_pass'] ) ) {
$defaults['user_pass'] = wp_generate_password( 32, true, true );
}
$prepared['users'] = wp_parse_args( $prepared['users'], $defaults );
} elseif ( 'update' === $action ) {
$prepared['users']['ID'] = empty( $posted_data['user_id'] ) ? get_current_user_id() : absint( $posted_data['user_id'] );
}
// Record an IP Address.
$prepared['usermeta']['llms_ip_address'] = llms_get_ip_address();
// If terms have been agreed to, record a time stamp for the agreement.
if ( isset( $posted_data['llms_agress_to_terms'] ) ) {
$prepared['usermeta']['llms_agress_to_terms'] = current_time( 'mysql' );
}
/**
* Filter data added to the wp_users data via `wp_insert_user()` or `wp_update_user()`.
*
* The dynamic portion of this hook, `$action`, can be either "registration" or "update".
*
* @since 3.0.0
* @since 5.0.0 Moved from `LLMS_Person_Handler::insert_data()`.
*
* @param array $user_data Array of user data.
* @param array $posted_data Array of user-submitted data.
* @param string $action Submission action, either "registration" or "update".
*/
$prepared['users'] = apply_filters( "lifterlms_user_{$action}_insert_user", $prepared['users'], $posted_data, $action );
/**
* Filter meta data to be added for the user.
*
* The dynamic portion of this hook, `$action`, can be either "registration" or "update".
*
* @since 3.0.0
* @since 5.0.0 Moved from `LLMS_Person_Handler::insert_data()`.
*
* @param array $user_meta Array of user meta data.
* @param array $posted_data Array of user-submitted data.
* @param string $action Submission action, either "registration" or "update".
*/
$prepared['usermeta'] = apply_filters( "lifterlms_user_{$action}_insert_user_meta", $prepared['usermeta'], $posted_data, $action );
return $prepared;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 5.0.0 | Introduced. |