/** * @group xprofile_field_admin_validate */ public function test_admin_validate_field_options() { // Mock POST global values $_POST['title'] = 'Foo'; $_POST['required'] = false; $_POST['fieldtype'] = 'radio'; $_POST['radio_option'] = array(1 => '0', 2 => '1', 3 => '4'); // Validate the mocked POST radio button options $result = BP_XProfile_Field::admin_validate(); // Assert valid $this->assertEquals($result, true); // cleanup unset($_POST['title'], $_POST['required'], $_POST['fieldtype'], $_POST['radio_option']); }
function xprofile_admin_manage_field($group_id, $field_id = null) { global $bp, $nxtdb, $message, $groups; $field = new BP_XProfile_Field($field_id); $field->group_id = $group_id; if (isset($_POST['saveField'])) { if (BP_XProfile_Field::admin_validate()) { $field->name = nxt_filter_kses($_POST['title']); $field->description = !empty($_POST['description']) ? nxt_filter_kses($_POST['description']) : ''; $field->is_required = nxt_filter_kses($_POST['required']); $field->type = nxt_filter_kses($_POST['fieldtype']); if (!empty($_POST["sort_order_{$field->type}"])) { $field->order_by = nxt_filter_kses($_POST["sort_order_{$field->type}"]); } $field->field_order = $nxtdb->get_var($nxtdb->prepare("SELECT field_order FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id)); if (!$field->field_order) { $field->field_order = (int) $nxtdb->get_var($nxtdb->prepare("SELECT max(field_order) FROM {$bp->profile->table_name_fields} WHERE group_id = %d", $group_id)); $field->field_order++; } if (!$field->save()) { $message = __('There was an error saving the field. Please try again', 'buddypress'); $type = 'error'; unset($_GET['mode']); xprofile_admin($message, $type); } else { $message = __('The field was saved successfully.', 'buddypress'); $type = 'success'; if (1 == $field_id) { bp_update_option('bp-xprofile-fullname-field-name', $field->name); } unset($_GET['mode']); do_action('xprofile_fields_saved_field', $field); $groups = BP_XProfile_Group::get(); xprofile_admin($message, $type); } } else { $field->render_admin_form($message); } } else { $field->render_admin_form(); } }
/** * Handles the adding or editing of profile field data for a user. */ function xprofile_admin_manage_field($group_id, $field_id = null) { global $bp, $wpdb, $message, $groups; $field = new BP_XProfile_Field($field_id); $field->group_id = $group_id; if (isset($_POST['saveField'])) { if (BP_XProfile_Field::admin_validate()) { $field->name = wp_filter_kses($_POST['title']); $field->description = !empty($_POST['description']) ? wp_filter_kses($_POST['description']) : ''; $field->is_required = wp_filter_kses($_POST['required']); $field->type = wp_filter_kses($_POST['fieldtype']); if (!empty($_POST["sort_order_{$field->type}"])) { $field->order_by = wp_filter_kses($_POST["sort_order_{$field->type}"]); } $field->field_order = $wpdb->get_var($wpdb->prepare("SELECT field_order FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id)); if (!$field->field_order) { $field->field_order = (int) $wpdb->get_var($wpdb->prepare("SELECT max(field_order) FROM {$bp->profile->table_name_fields} WHERE group_id = %d", $group_id)); $field->field_order++; } // For new profile fields, set the $field_id. For existing profile fields, // this will overwrite $field_id with the same value. $field_id = $field->save(); if (!$field_id) { $message = __('There was an error saving the field. Please try again', 'buddypress'); $type = 'error'; unset($_GET['mode']); xprofile_admin($message, $type); } else { $message = __('The field was saved successfully.', 'buddypress'); $type = 'success'; if (1 == $field_id) { bp_update_option('bp-xprofile-fullname-field-name', $field->name); } if (!empty($_POST['default-visibility'])) { bp_xprofile_update_field_meta($field_id, 'default_visibility', $_POST['default-visibility']); } if (!empty($_POST['allow-custom-visibility'])) { bp_xprofile_update_field_meta($field_id, 'allow_custom_visibility', $_POST['allow-custom-visibility']); } unset($_GET['mode']); do_action('xprofile_fields_saved_field', $field); $groups = bp_xprofile_get_groups(); xprofile_admin($message, $type); } } else { $field->render_admin_form($message); } } else { $field->render_admin_form(); } }
/** * Save the global field value. * * @since 1.0 * * @param object $field */ public function bp_xprofile_save_global_field_value($field) { if (!empty($_POST['saveField'])) { if (BP_XProfile_Field::admin_validate()) { $field_id = $field->id; if (empty($field_id)) { $field_id = BP_XProfile_Field::get_id_from_name($field->name); } $this->__update_xprofile_meta($field_id, 'field', 'global_value', $_POST['fieldvalue']); } } }
/** * Handles the adding or editing of profile field data for a user. * * @param int $group_id ID of the group. * @param int|null $field_id ID of the field being managed. */ function xprofile_admin_manage_field($group_id, $field_id = null) { global $wpdb, $message, $groups; $bp = buddypress(); if (is_null($field_id)) { $field = new BP_XProfile_Field(); } else { $field = xprofile_get_field($field_id); } $field->group_id = $group_id; if (isset($_POST['saveField'])) { if (BP_XProfile_Field::admin_validate()) { $field->is_required = $_POST['required']; $field->type = $_POST['fieldtype']; $field->name = $_POST['title']; if (!empty($_POST['description'])) { $field->description = $_POST['description']; } else { $field->description = ''; } if (!empty($_POST["sort_order_{$field->type}"])) { $field->order_by = $_POST["sort_order_{$field->type}"]; } $field->field_order = $wpdb->get_var($wpdb->prepare("SELECT field_order FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id)); if (empty($field->field_order) || is_wp_error($field->field_order)) { $field->field_order = (int) $wpdb->get_var($wpdb->prepare("SELECT max(field_order) FROM {$bp->profile->table_name_fields} WHERE group_id = %d", $group_id)); $field->field_order++; } // For new profile fields, set the $field_id. For existing profile // fields, this will overwrite $field_id with the same value. $field_id = $field->save(); if (empty($field_id)) { $message = __('There was an error saving the field. Please try again.', 'buddypress'); $type = 'error'; } else { $message = __('The field was saved successfully.', 'buddypress'); $type = 'success'; // @todo remove these old options if (1 == $field_id) { bp_update_option('bp-xprofile-fullname-field-name', $field->name); } // Set member types. if (isset($_POST['has-member-types'])) { $member_types = array(); if (isset($_POST['member-types'])) { $member_types = stripslashes_deep($_POST['member-types']); } $field->set_member_types($member_types); } // Validate default visibility. if (!empty($_POST['default-visibility']) && in_array($_POST['default-visibility'], wp_list_pluck(bp_xprofile_get_visibility_levels(), 'id'))) { bp_xprofile_update_field_meta($field_id, 'default_visibility', $_POST['default-visibility']); } // Validate custom visibility. if (!empty($_POST['allow-custom-visibility']) && in_array($_POST['allow-custom-visibility'], array('allowed', 'disabled'))) { bp_xprofile_update_field_meta($field_id, 'allow_custom_visibility', $_POST['allow-custom-visibility']); } // Validate signup. if (!empty($_POST['signup-position'])) { bp_xprofile_update_field_meta($field_id, 'signup_position', (int) $_POST['signup-position']); } else { bp_xprofile_delete_meta($field_id, 'field', 'signup_position'); } /** * Fires at the end of the process to save a field for a user, if successful. * * @since 1.0.0 * * @param BP_XProfile_Field $field Current BP_XProfile_Field object. */ do_action('xprofile_fields_saved_field', $field); $groups = bp_xprofile_get_groups(); } unset($_GET['mode']); xprofile_admin($message, $type); } else { $field->render_admin_form($message); } } else { $field->render_admin_form(); } }
function xprofile_admin_manage_field($group_id, $field_id = null) { global $message, $groups; $field = new BP_XProfile_Field($field_id); $field->group_id = $group_id; if (isset($_POST['saveField'])) { if (BP_XProfile_Field::admin_validate($_POST)) { $field->name = wp_filter_kses($_POST['title']); $field->desc = wp_filter_kses($_POST['description']); $field->is_required = wp_filter_kses($_POST['required']); $field->is_public = wp_filter_kses($_POST['public']); $field->type = wp_filter_kses($_POST['fieldtype']); $field->order_by = wp_filter_kses($_POST["sort_order_{$field->type}"]); if (!$field->save()) { $message = __('There was an error saving the field. Please try again', 'buddypress'); $type = 'error'; unset($_GET['mode']); xprofile_admin($message, $type); } else { $message = __('The field was saved successfully.', 'buddypress'); $type = 'success'; unset($_GET['mode']); do_action('xprofile_fields_saved_field', $field); $groups = BP_XProfile_Group::get_all(); xprofile_admin($message, $type); } } else { $field->render_admin_form($message); } } else { $field->render_admin_form(); } }