groups = BP_XProfile_Group::get( array( 'profile_group_id' => $profile_group_id, 'user_id' => $user_id, 'hide_empty_groups' => true, 'fetch_fields' => true, 'fetch_field_data' => true ) ); $this->group_count = count($this->groups); $this->user_id = $user_id; } function has_groups() { if ( $this->group_count ) return true; return false; } function next_group() { $this->current_group++; $this->group = $this->groups[$this->current_group]; $this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id ); $this->field_count = count( $this->group->fields ); return $this->group; } function rewind_groups() { $this->current_group = -1; if ( $this->group_count > 0 ) { $this->group = $this->groups[0]; } } function profile_groups() { if ( $this->current_group + 1 < $this->group_count ) { return true; } elseif ( $this->current_group + 1 == $this->group_count ) { do_action('xprofile_template_loop_end'); // Do some cleaning up after the loop $this->rewind_groups(); } $this->in_the_loop = false; return false; } function the_profile_group() { global $group; $this->in_the_loop = true; $group = $this->next_group(); if ( 0 == $this->current_group ) // loop has just started do_action('xprofile_template_loop_start'); } /**** FIELDS ****/ function next_field() { $this->current_field++; $this->field = $this->group->fields[$this->current_field]; return $this->field; } function rewind_fields() { $this->current_field = -1; if ( $this->field_count > 0 ) { $this->field = $this->group->fields[0]; } } function has_fields() { $has_data = false; for ( $i = 0; $i < count( $this->group->fields ); $i++ ) { $field = &$this->group->fields[$i]; if ( $field->data->value != null ) { $has_data = true; } } if ( $has_data ) return true; return false; } function profile_fields() { if ( $this->current_field + 1 < $this->field_count ) { return true; } elseif ( $this->current_field + 1 == $this->field_count ) { // Do some cleaning up after the loop $this->rewind_fields(); } return false; } function the_profile_field() { global $field; $field = $this->next_field(); if ( !empty( $field->data->value ) ) { $this->field_has_data = true; } else { $this->field_has_data = false; } } } function xprofile_get_profile() { locate_template( array( 'profile/profile-loop.php'), true ); } function bp_has_profile( $args = '' ) { global $bp, $profile_template; $defaults = array( 'user_id' => $bp->displayed_user->id, 'profile_group_id' => false ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); $profile_template = new BP_XProfile_Data_Template( $user_id, $profile_group_id ); return apply_filters( 'bp_has_profile', $profile_template->has_groups(), &$profile_template ); } function bp_profile_groups() { global $profile_template; return $profile_template->profile_groups(); } function bp_the_profile_group() { global $profile_template; return $profile_template->the_profile_group(); } function bp_profile_group_has_fields() { global $profile_template; return $profile_template->has_fields(); } function bp_field_css_class( $class = false ) { echo bp_get_field_css_class( $class ); } function bp_get_field_css_class( $class = false ) { global $profile_template; $css_classes = array(); if ( $class ) $css_classes[] = sanitize_title( attribute_escape( $class ) ); /* Set a class with the field ID */ $css_classes[] = 'field_' . $profile_template->field->id; /* Set a class with the field name (sanitized) */ $css_classes[] = 'field_' . sanitize_title( $profile_template->field->name ); if ( $profile_template->current_field % 2 ) $css_classes[] = 'alt'; $css_classes = apply_filters( 'bp_field_css_classes', &$css_classes ); return apply_filters( 'bp_get_field_css_class', ' class="' . implode( ' ', $css_classes ) . '"' ); } function bp_field_has_data() { global $profile_template; return $profile_template->field_has_data; } function bp_field_has_public_data() { global $profile_template; if ( $profile_template->field_has_data ) return true; return false; } function bp_the_profile_group_id() { echo bp_get_the_profile_group_id(); } function bp_get_the_profile_group_id() { global $group; return apply_filters( 'bp_get_the_profile_group_id', $group->id ); } function bp_the_profile_group_name() { echo bp_get_the_profile_group_name(); } function bp_get_the_profile_group_name() { global $group; return apply_filters( 'bp_get_the_profile_group_name', $group->name ); } function bp_the_profile_group_slug() { echo bp_get_the_profile_group_slug(); } function bp_get_the_profile_group_slug() { global $group; return apply_filters( 'bp_get_the_profile_group_slug', sanitize_title( $group->name ) ); } function bp_the_profile_group_description() { echo bp_get_the_profile_group_description(); } function bp_get_the_profile_group_description() { global $group; echo apply_filters( 'bp_get_the_profile_group_description', $group->description ); } function bp_the_profile_group_edit_form_action() { echo bp_get_the_profile_group_edit_form_action(); } function bp_get_the_profile_group_edit_form_action() { global $bp, $group; return apply_filters( 'bp_get_the_profile_group_edit_form_action', $bp->displayed_user->domain . BP_XPROFILE_SLUG . '/edit/group/' . $group->id . '/' ); } function bp_the_profile_group_field_ids() { echo bp_get_the_profile_group_field_ids(); } function bp_get_the_profile_group_field_ids() { global $group; foreach ( (array) $group->fields as $field ) $field_ids .= $field->id . ','; return substr( $field_ids, 0, -1 ); } function bp_profile_fields() { global $profile_template; return $profile_template->profile_fields(); } function bp_the_profile_field() { global $profile_template; return $profile_template->the_profile_field(); } function bp_the_profile_field_id() { echo bp_get_the_profile_field_id(); } function bp_get_the_profile_field_id() { global $field; return apply_filters( 'bp_get_the_profile_field_id', $field->id ); } function bp_the_profile_field_name() { echo bp_get_the_profile_field_name(); } function bp_get_the_profile_field_name() { global $field; return apply_filters( 'bp_get_the_profile_field_name', $field->name ); } function bp_the_profile_field_value() { echo bp_get_the_profile_field_value(); } function bp_get_the_profile_field_value() { global $field; $field->data->value = bp_unserialize_profile_field( $field->data->value ); return apply_filters( 'bp_get_the_profile_field_value', $field->data->value, $field->type, $field->id ); } function bp_the_profile_field_edit_value() { echo bp_get_the_profile_field_edit_value(); } function bp_get_the_profile_field_edit_value() { global $field; /** * Check to see if the posted value is different, if it is re-display this * value as long as it's not empty and a required field. */ if ( isset( $_POST['field_' . $field->id] ) && ( $field->data->value != $_POST['field_' . $field->id] ) ) { if ( !empty( $_POST['field_' . $field->id] ) ) $field->data->value = $_POST['field_' . $field->id]; } $field->data->value = bp_unserialize_profile_field( $field->data->value ); return apply_filters( 'bp_get_the_profile_field_edit_value', esc_html( $field->data->value ) ); } function bp_the_profile_field_type() { echo bp_get_the_profile_field_type(); } function bp_get_the_profile_field_type() { global $field; return apply_filters( 'bp_the_profile_field_type', $field->type ); } function bp_the_profile_field_description() { echo bp_get_the_profile_field_description(); } function bp_get_the_profile_field_description() { global $field; return apply_filters( 'bp_get_the_profile_field_description', $field->description ); } function bp_the_profile_field_input_name() { echo bp_get_the_profile_field_input_name(); } function bp_get_the_profile_field_input_name() { global $field; $array_box = false; if ( 'multiselectbox' == $field->type ) $array_box = '[]'; return apply_filters( 'bp_get_the_profile_field_input_name', 'field_' . $field->id . $array_box ); } function bp_the_profile_field_options( $args = '' ) { echo bp_get_the_profile_field_options( $args ); } function bp_get_the_profile_field_options( $args = '' ) { global $field; $defaults = array( 'type' => false ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); if ( !method_exists( $field, 'get_children' ) ) $field = new BP_XProfile_Field( $field->id ); $options = $field->get_children(); switch ( $field->type ) { case 'selectbox': case 'multiselectbox': if ( 'multiselectbox' != $field->type ) $html .= ''; for ( $k = 0; $k < count($options); $k++ ) { $option_values = maybe_unserialize( BP_XProfile_ProfileData::get_value_byid( $options[$k]->parent_id ) ); $option_values = (array)$option_values; /* Check for updated posted values, but errors preventing them from being saved first time */ foreach( (array)$option_values as $i => $option_value ) { if ( isset( $_POST['field_' . $field->id] ) && $_POST['field_' . $field->id] != $option_value ) { if ( !empty( $_POST['field_' . $field->id] ) ) $option_values[$i] = $_POST['field_' . $field->id]; } } if ( in_array( $options[$k]->name, (array)$option_values ) || $options[$k]->is_default_option ) { $selected = ' selected="selected"'; } else { $selected = ''; } $html .= apply_filters( 'bp_get_the_profile_field_options_select', '', $options[$k] ); } break; case 'radio': $html = '