Example #1
0
/**
 * 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 wpaam_get_field_groups($args = array())
{
    if ($args['field_group_id'] && is_int($args['field_group_id'])) {
        $groups = array();
        $groups[] = wpaam()->field_groups->get_group_by('id', absint($args['field_group_id']), true);
    } else {
        $groups = wpaam()->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 = wpaam()->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'] = wpaam_get_field_value($args['user_id'], $field['meta']);
                        $fields[$field_key] = wpaam_array_to_object($fields[$field_key]);
                    }
                }
                $fields = array_values($fields);
                $groups[$key]['fields'] = $fields;
            }
        }
    }
    return apply_filters('wpaam_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 = wpaam_array_to_object($this->group);
     if (!empty($this->group->fields)) {
         $this->group->fields = apply_filters('wpaam_group_fields', $this->group->fields, $this->group->id);
         $this->field_count = count($this->group->fields);
     }
     return $this->group;
 }