/** * Display the user edit fields * * @param unknown_type $user */ function display_custom_user_fields($user = null, $fields = null) { //initializing variables if (!is_null($user)) { $user = get_userdata($user->ID); } $is_administration = false; if (is_null($fields)) { $is_administration = true; } if ($is_administration) { echo "<style>", ".field_wrapper label {display:block;position:relative;float:left;width:220px;}", ".typetext input {width: 25em;}", ".typecheckbox input {margin-right:200px;position:relative;float:left;}", ".field_wrapper span {display:block;padding-left:220px;}", ".field_wrapper {padding: 10px;}", ".typetextarea textarea {width: 500px;}", ".field_wrapper .profile_description{font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif;font-size: 12px;font-style: italic;color: #666;}", "</style>", "<h3>Additional Details</h3>"; //initializing variables $currentUser = new WP_User($user->ID); $fields = array(); foreach ($currentUser->roles as $role) { $fields = wp_parse_args($fields, get_custom_user_fields($role)); } } //reasons to fail if (empty($fields)) { return false; } // Use nonce for verification echo '<div class="nonce_wrapper"><input type="hidden" name="user_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" /></div>', '<input type="hidden" name="user_type" value="', BRequest::getVar('user_type'), '" />'; foreach ($fields as $field) { if (!current_user_can('edit_users') && $field['id'] == 'role') { continue; } // get current post meta data $unique = md5(microtime()); if (!is_null($user) && isset($user->{$field['id']})) { $meta = $user->{$field['id']}; } elseif (!is_null($user)) { $meta = get_user_meta($user->ID, $field['id'], true); } else { $meta = BRequest::getVar($field['id'], ''); } echo '<div class="field_wrapper div', $field['id'], ' type', $field['type'], '">'; if ($field['type'] != 'password') { echo '<label for="', $field['id'], '">', $field['name'], '</label>'; } switch ($field['type']) { case 'password': echo '<label for="', $field['id'], '">', $field['name'], '</label>', '<input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off">', '<span class="description">If you would like to change the password type a new one. Otherwise leave this blank.</span><br>', '<input type="password" name="pass2" id="pass2" size="16" value="" autocomplete="off">', '<span class="description">Type your new password again.</span><br>', '<div id="pass-strength-result">Strength indicator</div>', '<p class="description indicator-hint">Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).</p>', '<script type="text/javascript"> /* <![CDATA[ */ var pwsL10n = { empty: "Strength indicator", short: "Very weak", bad: "Weak", good: "Medium", strong: "Strong", mismatch: "Mismatch" }; try{convertEntities(pwsL10n);}catch(e){}; /* ]]> */ </script>', '<script type="text/javascript" src="', get_bloginfo('url'), '/wp-admin/load-scripts.php?c=1&load=jquery,hoverIntent,common,jquery-color,user-profile,password-strength-meter"></script>'; break; case 'address': echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>', "\n", '<span class="profile_description">', $field['desc'], '</span>'; break; case 'email': echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" class="regular-text" />', "\n"; echo '<input type="text" name="', $field['id'], '1" id="', $field['id'], '" value="', $default = "Please confirm your email", '" class="regular-text" onBlur="if (this.value == \'\') this.value = \'', $default, '\';" onFocus="if (this.value == \'', $default, '\') this.value = \'\';" />', "\n", '<span class="profile_description">', $field['desc'], '</span>'; break; case 'text': $disabled = ''; if (is_user_logged_in() && $field['id'] == 'user_login') { $disabled = 'readonly="true"'; } echo '<input ', $disabled, ' type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" class="regular-text" />', "\n", '<span class="profile_description">', $field['desc'], '</span>'; break; case 'textarea': echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="30" rows="5">', $meta ? $meta : $field['std'], '</textarea>', "\n", '<span class="profile_description">', $field['desc'], '</span>'; break; case 'select': echo '<select name="', $field['id'], '" id="', $field['id'], '">'; if (!is_array($field['options'])) { $field['options'] = $field['options'](); } foreach ($field['options'] as $key => $option) { if (is_int($key)) { $key = $option; } echo '<option ', $meta == $option ? ' selected="selected"' : '', ' value="', $key, '">', $option, '</option>'; } echo '</select>'; break; case 'radio': foreach ($field['options'] as $option) { echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name']; } echo '<br/>', $field['desc']; break; case 'checkbox': echo '<input type="hidden" name="', $field['id'], '" value="" /> '; echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta && $meta != 'false' ? ' checked="checked"' : '', ' />', '<span class="profile_description">', $field['desc'], '</span>'; break; case 'editor': echo '<div style="border:1px solid #DFDFDF;border-collapse: separate;border-top-left-radius: 6px 6px;border-top-right-radius: 6px 6px;">', '<textarea rows="10" class="theEditor" cols="40" name="', $field['id'], '" id="' . $unique . '"></textarea>', '</div>', '<script type="text/javascript">edCanvas = document.getElementById(\'' . $unique . '\');</script>', "\n", $field['desc']; break; } echo '</div>'; } }
/** * Displays all of the user profile fields. * * @param unknown_type $userid */ function display_profile_fields() { //initializing variables $user =& get_user(); $fields = get_custom_user_fields($user->roles[0]); $defaults = bum_get_default_profile_fields(); $fields = wp_parse_args($fields, $defaults); bum_display_custom_user_fields($user, $fields); }
/** * Save user meta data * * @param $user_id */ function bum_save_user_meta_data($user_id, $role = false) { //initializing variables $user = new WP_User($user_id); $fields = array(); $role = $role === false ? $user->roles[0] : $role; $fields = get_custom_user_fields($role); //reasons to fail /*if (!isset($_REQUEST['user_meta_box_nonce']) || empty($fields)) return false; // verify nonce if (!wp_verify_nonce($_REQUEST['user_meta_box_nonce'], basename(__FILE__))) { return $user_id; }*/ // check autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $user_id; } //update metas if (is_array($fields)) { foreach ($fields as $field) { $info = bum_get_field_info($field); $fid = 'bum_' . $info['id']; if (!isset($_POST[$fid]) && !isset($_POST[$fid . '[]'])) { continue; } $old = $info['meta_value']; $new = $_REQUEST[$fid]; if ($new && $new != $old) { if (is_array($new)) { $new = implode('|', $new); } update_user_meta($user_id, $fid, $new); } elseif ('' == $new && $old) { delete_user_meta($user_id, $fid, $old); } } } return true; }