AnkietyGO/profile-builder/front-end/default-fields/display-name/display-name.php

80 lines
4.0 KiB
PHP

<?php
/* handle field output */
function wppb_display_name_handler( $output, $form_location, $field, $user_id, $field_check_errors, $request_data ){
$item_title = apply_filters( 'wppb_'.$form_location.'_display-name_item_title', wppb_icl_t( 'plugin profile-builder-pro', 'default_field_'.$field['id'].'_title_translation', $field['field-title'] ) );
$item_description = wppb_icl_t( 'plugin profile-builder-pro', 'default_field_'.$field['id'].'_description_translation', $field['description'] );
if ( $form_location == 'edit_profile' ){
$error_mark = ( ( $field['required'] == 'Yes' ) ? '<span class="wppb-required" title="'.wppb_required_field_error($field["field-title"]).'">*</span>' : '' );
if ( array_key_exists( $field['id'], $field_check_errors ) )
$error_mark = '<img src="'.WPPB_PLUGIN_URL.'assets/images/pencil_delete.png" title="'.wppb_required_field_error($field["field-title"]).'"/>';
/*
* Create the options for the display_name drop-down
* They are created same as in user-edit.php of the WordPress core
*/
$user_data = get_userdata( $user_id );
$public_display = array();
$public_display['display_nickname'] = $user_data->nickname;
$public_display['display_username'] = $user_data->user_login;
if ( !empty($user_data->first_name) )
$public_display['display_firstname'] = $user_data->first_name;
if ( !empty($user_data->last_name) )
$public_display['display_lastname'] = $user_data->last_name;
if ( !empty($user_data->first_name) && !empty($user_data->last_name) ) {
$public_display['display_firstlast'] = $user_data->first_name . ' ' . $user_data->last_name;
$public_display['display_lastfirst'] = $user_data->last_name . ' ' . $user_data->first_name;
}
if ( !in_array( $user_data->display_name, $public_display ) ) // Only add this if it isn't duplicated elsewhere
$public_display = array( 'display_displayname' => $user_data->display_name ) + $public_display;
$public_display = array_map( 'trim', $public_display );
$public_display = array_unique( $public_display );
$output = '<label for="display_name">'.$item_title.$error_mark.'</label>';
$output .= '<select class="default_field_display-name" name="display_name" id="display-name">';
foreach( $public_display as $display_name_option ) {
$output .= '<option ' . selected( $user_data->display_name, $display_name_option, false ) . '>' . $display_name_option . '</option>';
}
$output .= '</select>';
if( !empty( $item_description ) )
$output .= '<span class="wppb-description-delimiter">'. $item_description .'</span>';
}
return apply_filters( 'wppb_'.$form_location.'_display-name', $output, $form_location, $field, $user_id, $field_check_errors, $request_data );
}
add_filter( 'wppb_output_form_field_default-display-name-publicly-as', 'wppb_display_name_handler', 10, 6 );
/* handle field validation */
function wppb_check_display_name_value( $message, $field, $request_data, $form_location ){
if( $form_location != 'register' ){
if ($field['required'] == 'Yes') {
if ((isset($request_data['display_name']) && (trim($request_data['display_name']) == '')) || !isset($request_data['display_name'])) {
return wppb_required_field_error($field["field-title"]);
}
}
}
return $message;
}
add_filter( 'wppb_check_form_field_default-display-name-publicly-as', 'wppb_check_display_name_value', 10, 4 );
/* handle field save */
function wppb_userdata_add_display_name( $userdata, $global_request ){
if ( isset( $global_request['display_name'] ) )
$userdata['display_name'] = trim( sanitize_text_field( $global_request['display_name'] ) );
return $userdata;
}
add_filter( 'wppb_build_userdata', 'wppb_userdata_add_display_name', 10, 2 );