bp_ps_parse_request( $request )

Parse BuddyBoss profile search request.

Description

Source

File: bp-core/profile-search/bps-fields.php

function bp_ps_parse_request ($request)
{
	$j = 1;

	$parsed = array ();
	list (, $fields) = bp_ps_get_fields ();
	foreach ($fields as $key => $value)
		$parsed[$key] = clone $fields[$key];

	foreach ($request as $key => $value)
	{
		if ($value === '')  continue;

		$k = bp_ps_match_key ($key, $parsed);
		if ($k === false)  continue;

		$f = $parsed[$k];
		$filter = ($key == $f->code)? '': substr ($key, strlen ($f->code) + 1);
		if (!bp_ps_is_filter ($filter, $f))  continue;

		switch ($filter)
		{
		default:
			$f->filter = $filter;
			$f->value = $value;
			break;
		case 'distance':
			if (!empty ($value['location']) && !empty ($value['lat']) && !empty ($value['lng']))
			{
				if (empty ($value['distance']))  $value['distance'] = 1;
				$f->filter = $filter;
				$f->value = $value;
			}
			break;
		case 'range':
			if (is_numeric ($value['min']))
				$f->value['min'] = $value['min'];
			if (is_numeric ($value['max']))
				$f->value['max'] = $value['max'];
			if (isset ($f->value))
				$f->filter = $filter;
			break;
		case 'date_range':
            $range_types = array( 'min', 'max' );
            foreach ( $range_types as $range_type ) {
                if ( isset( $value[ $range_type ] ) && !empty( $value[ $range_type ] ) ) {
                    $f->value[ $range_type ]['day'] = isset( $value[ $range_type ]['day'] ) ? $value[ $range_type ]['day'] : 0;
                    $f->value[ $range_type ]['year'] = isset( $value[ $range_type ]['year'] ) ? (int) $value[ $range_type ]['year'] : 0;
                    $f->value[ $range_type ]['month'] = isset( $value[ $range_type ]['month'] ) ? $value[ $range_type ]['month'] : '';

                    //if year is not set, we reset month and day as well
                    if ( empty( $f->value[ $range_type ]['year'] ) ) {
                        $f->value[ $range_type ]['month'] = '';
                        $f->value[ $range_type ]['day'] = '';
                    }
                    
                    //if month is not set, we reset day
                    if ( empty( $f->value[ $range_type ]['month'] ) ) {
                        $f->value[ $range_type ]['day'] = '';
                    }
                }
            }
            
            $f->filter = $filter;
			break;
            
		case 'range_min':		
			if (!is_numeric ($value))  break;
			$f->filter = rtrim ($filter, '_min');
			$f->value['min'] = $value;
			break;
            
		case 'range_max':
			if (!is_numeric ($value))  break;
			$f->filter = rtrim ($filter, '_max');
			$f->value['max'] = $value;
			break;
            
        case 'date_range_min':
            $range_types = array( 'min' );
            foreach ( $range_types as $range_type ) {
                if ( isset( $value[ $range_type ] ) && !empty( $value[ $range_type ] ) ) {
                    $f->value[ $range_type ]['day'] = isset( $value[ $range_type ]['day'] ) ? $value[ $range_type ]['day'] : 0;
                    $f->value[ $range_type ]['year'] = isset( $value[ $range_type ]['year'] ) ? (int) $value[ $range_type ]['year'] : 0;
                    $f->value[ $range_type ]['month'] = isset( $value[ $range_type ]['month'] ) ? $value[ $range_type ]['month'] : '';

                    //if year is not set, we reset month and day as well
                    if ( empty( $f->value[ $range_type ]['year'] ) ) {
                        $f->value[ $range_type ]['month'] = '';
                        $f->value[ $range_type ]['day'] = '';
                    }
                    
                    //if month is not set, we reset day
                    if ( empty( $f->value[ $range_type ]['month'] ) ) {
                        $f->value[ $range_type ]['day'] = '';
                    }
                }
            }
            
            $f->filter = $filter;
			break;
            
        case 'date_range_max':
            $range_types = array( 'max' );
            foreach ( $range_types as $range_type ) {
                if ( isset( $value[ $range_type ] ) && !empty( $value[ $range_type ] ) ) {
                    $f->value[ $range_type ]['day'] = isset( $value[ $range_type ]['day'] ) ? $value[ $range_type ]['day'] : 0;
                    $f->value[ $range_type ]['year'] = isset( $value[ $range_type ]['year'] ) ? (int) $value[ $range_type ]['year'] : 0;
                    $f->value[ $range_type ]['month'] = isset( $value[ $range_type ]['month'] ) ? $value[ $range_type ]['month'] : '';

                    //if year is not set, we reset month and day as well
                    if ( empty( $f->value[ $range_type ]['year'] ) ) {
                        $f->value[ $range_type ]['month'] = '';
                        $f->value[ $range_type ]['day'] = '';
                    }
                    
                    //if month is not set, we reset day
                    if ( empty( $f->value[ $range_type ]['month'] ) ) {
                        $f->value[ $range_type ]['day'] = '';
                    }
                }
            }
            
            $f->filter = $filter;
			break;
        
		case 'label':
			$f->label = stripslashes ($value);
			break;
		}

		if (!isset ($f->order))  $f->order = $j++;
	}

	return $parsed;
}

Changelog

Changelog
Version Description
BuddyBoss 1.0.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.