true
) );
if ( isset($_GET['mode']) && isset($_GET['group_id']) && 'add_field' == $_GET['mode'] ) {
xprofile_admin_manage_field($_GET['group_id']);
} else if ( isset($_GET['mode']) && isset($_GET['group_id']) && isset($_GET['field_id']) && 'edit_field' == $_GET['mode'] ) {
xprofile_admin_manage_field($_GET['group_id'], $_GET['field_id']);
} else if ( isset($_GET['mode']) && isset($_GET['field_id']) && 'delete_field' == $_GET['mode'] ) {
xprofile_admin_delete_field($_GET['field_id'], 'field');
} else if ( isset($_GET['mode']) && isset($_GET['option_id']) && 'delete_option' == $_GET['mode'] ) {
xprofile_admin_delete_field($_GET['option_id'], 'option');
} else if ( isset($_GET['mode']) && 'add_group' == $_GET['mode'] ) {
xprofile_admin_manage_group();
} else if ( isset($_GET['mode']) && isset($_GET['group_id']) && 'delete_group' == $_GET['mode'] ) {
xprofile_admin_delete_group($_GET['group_id']);
} else if ( isset($_GET['mode']) && isset($_GET['group_id']) && 'edit_group' == $_GET['mode'] ) {
xprofile_admin_manage_group($_GET['group_id']);
} else {
?>
name = wp_filter_kses( $_POST['group_name'] );
$group->description = wp_filter_kses( $_POST['group_desc'] );
if ( !$group->save() ) {
$message = __('There was an error saving the group. Please try again', 'buddypress');
$type = 'error';
} else {
$message = __('The group was saved successfully.', 'buddypress');
$type = 'success';
do_action( 'xprofile_groups_saved_group', $group );
}
unset($_GET['mode']);
xprofile_admin( $message, $type );
} else {
$group->render_admin_form($message);
}
} else {
$group->render_admin_form();
}
}
/**************************************************************************
xprofile_admin_delete_group()
Handles the deletion of profile data groups.
**************************************************************************/
function xprofile_admin_delete_group( $group_id ) {
global $message, $type;
$group = new BP_XProfile_Group($group_id);
if ( !$group->delete() ) {
$message = __('There was an error deleting the group. Please try again', 'buddypress');
$type = 'error';
} else {
$message = __('The group was deleted successfully.', 'buddypress');
$type = 'success';
do_action( 'xprofile_groups_deleted_group', $group );
}
unset($_GET['mode']); // TODO: wtf?
xprofile_admin( $message, $type );
}
/**************************************************************************
xprofile_admin_manage_field()
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 = wp_filter_kses( $_POST['description'] );
$field->is_required = wp_filter_kses( $_POST['required'] );
$field->type = wp_filter_kses( $_POST['fieldtype'] );
$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++;
}
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();
xprofile_admin( $message, $type );
}
} else {
$field->render_admin_form($message);
}
} else {
$field->render_admin_form();
}
}
/**************************************************************************
xprofile_admin_delete_field()
Handles the deletion of a profile field [or option].
**************************************************************************/
function xprofile_admin_delete_field( $field_id, $type = 'field' ) {
global $message, $type;
if ( 'field' == $type ) {
$type = __('field', 'buddypress');
} else {
$type = __('option', 'buddypress');
}
$field = new BP_XProfile_Field($field_id);
if ( !$field->delete() ) {
$message = sprintf( __('There was an error deleting the %s. Please try again', 'buddypress'), $type);
$type = 'error';
} else {
$message = sprintf( __('The %s was deleted successfully!', 'buddypress'), $type);
$type = 'success';
do_action( 'xprofile_fields_deleted_field', $field );
}
unset($_GET['mode']);
xprofile_admin($message, $type);
}
function xprofile_ajax_reorder_fields() {
global $bp;
/* Check the nonce */
check_admin_referer( 'bp_reorder_fields', '_wpnonce_reorder_fields' );
if ( empty( $_POST['field_order'] ) )
return false;
parse_str($_POST['field_order'], $order );
foreach ( (array) $order['field'] as $position => $field_id ) {
xprofile_update_field_position( (int) $field_id, (int) $position );
}
}
add_action( 'wp_ajax_xprofile_reorder_fields', 'xprofile_ajax_reorder_fields' );