Skip to:
Content

BuddyPress.org

Changeset 4362


Ignore:
Timestamp:
05/15/2011 05:23:50 PM (14 years ago)
Author:
boonebgorges
Message:

Applies pre-save filters to permitted xprofile options before comparing with submitted values, to account for special characters. Fixes #3213

Location:
trunk/bp-xprofile
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-xprofile/bp-xprofile-filters.php

    r4351 r4362  
    6767 * @param string $field_value
    6868 * @param int $field_id
     69 * @param bool $reserialize Whether to reserialize arrays before returning. Defaults to true
    6970 * @return string
    7071 */
    71 function xprofile_sanitize_data_value_before_save ( $field_value, $field_id ) {
     72function xprofile_sanitize_data_value_before_save ( $field_value, $field_id, $reserialize = true ) {
    7273
    7374    // Return if empty
     
    9495        }
    9596
    96         $filtered_field_value = serialize( $filtered_values );
     97        if ( $reserialize )
     98            $filtered_field_value = serialize( $filtered_values );
     99        else
     100            $filtered_field_value = $filtered_values;
    97101    }
    98102
  • trunk/bp-xprofile/bp-xprofile-template.php

    r4211 r4362  
    433433                    $selected = '';
    434434                   
     435                    // Run the allowed option name through the before_save
     436                    // filter, so we'll be sure to get a match
     437                    $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false );
     438                   
    435439                    // First, check to see whether the user-entered value
    436440                    // matches
    437                     if ( in_array( $options[$k]->name, (array) $option_values ) )
     441                    if ( in_array( $allowed_options, (array) $option_values ) )
    438442                        $selected = ' selected="selected"';
    439443
     
    459463                    }
    460464                   
     465                    // Run the allowed option name through the before_save
     466                    // filter, so we'll be sure to get a match
     467                    $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false );
     468                   
    461469                    $selected = '';
    462                     if ( $option_value == $options[$k]->name || !empty( $value ) && $value == $options[$k]->name || ( empty( $option_value ) && $options[$k]->is_default_option ) )
     470                    if ( $option_value == $allowed_options || !empty( $value ) && $value == $allowed_options || ( empty( $option_value ) && $options[$k]->is_default_option ) )
    463471                        $selected = ' checked="checked"';
    464472
     
    486494                    // match the option
    487495                    for ( $j = 0; $j < count($option_values); $j++ ) {
    488                         if ( $option_values[$j] == $options[$k]->name || @in_array( $options[$k]->name, $value ) ) {
     496                       
     497                        // Run the allowed option name through the
     498                        // before_save filter, so we'll be sure to get a
     499                        // match
     500                        $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false );
     501                       
     502                        if ( $option_values[$j] == $allowed_options || @in_array( $allowed_options, $value ) ) {
    489503                            $selected = ' checked="checked"';
    490504                            break;
Note: See TracChangeset for help on using the changeset viewer.