/** * Retrieve field groups, populated with fields and associated user data. * * @since 1.2.0 * @param array $args arguments for the query. * @return array list of groups and fields with associated data. */ function wpum_get_field_groups($args = array()) { if ($args['field_group_id'] && is_int($args['field_group_id'])) { $groups = array(); $groups[] = WPUM()->field_groups->get_group_by('id', absint($args['field_group_id']), true); } else { $groups = WPUM()->field_groups->get_groups($args); } // Merge fields for each group if (!empty($groups)) { foreach ($groups as $key => $group) { $get_fields_by_group_args = array('id' => absint($group['id']), 'orderby' => 'field_order', 'order' => 'ASC', 'array' => true, 'number' => array_key_exists('number_fields', $args) ? $args['number_fields'] : false, 'exclude_fields' => array_key_exists('exclude_fields', $args) ? $args['exclude_fields'] : false); $fields = WPUM()->fields->get_by_group($get_fields_by_group_args); if (empty($fields) && $args['hide_empty_groups'] === true) { unset($groups[$key]); } else { foreach ($fields as $field_key => $field) { if ($field['meta'] == 'password' || $field['meta'] == 'user_avatar') { unset($fields[$field_key]); } else { $fields[$field_key]['value'] = wpum_get_field_value($args['user_id'], $field['meta']); $fields[$field_key] = wpum_array_to_object($fields[$field_key]); } } $fields = array_values($fields); $groups[$key]['fields'] = $fields; } } } return apply_filters('wpum_get_field_groups', $groups, $args); }
/** * Get next group within the loop. * * @access public * @return array * @since 1.2.0 */ public function next_group() { $this->current_group++; $this->group = $this->groups[$this->current_group]; $this->field_count = 0; $this->group = wpum_array_to_object($this->group); if (!empty($this->group->fields)) { $this->group->fields = apply_filters('wpum_group_fields', $this->group->fields, $this->group->id); $this->field_count = count($this->group->fields); } return $this->group; }