Skip to:
Content

BuddyPress.org

Ticket #2776: 2776-xprofile-2.patch

File 2776-xprofile-2.patch, 13.1 KB (added by DJPaul, 14 years ago)

xprofile 2

  • bp-xprofile/bp-xprofile-filters.php

     
    11<?php
     2// Apply WordPress defined filters
     3add_filter( 'bp_get_the_profile_field_value',          'wp_filter_kses', 1 );
     4add_filter( 'bp_get_the_profile_field_name',           'wp_filter_kses', 1 );
     5add_filter( 'bp_get_the_profile_field_edit_value',     'wp_filter_kses', 1 );
     6add_filter( 'bp_get_the_profile_field_description',    'wp_filter_kses', 1 );
    27
    3 /* Apply WordPress defined filters */
     8add_filter( 'bp_get_the_profile_field_value',          'wptexturize'        );
     9add_filter( 'bp_get_the_profile_field_value',          'convert_smilies', 2 );
     10add_filter( 'bp_get_the_profile_field_value',          'convert_chars'      );
     11add_filter( 'bp_get_the_profile_field_value',          'wpautop'            );
     12add_filter( 'bp_get_the_profile_field_value',          'make_clickable'     );
     13add_filter( 'bp_get_the_profile_field_value',          'force_balance_tags' );
    414
    5 add_filter( 'bp_get_the_profile_field_value',         'wp_filter_kses', 1 );
    6 add_filter( 'bp_get_the_profile_field_name',          'wp_filter_kses', 1 );
    7 add_filter( 'bp_get_the_profile_field_edit_value',    'wp_filter_kses', 1 );
    8 add_filter( 'bp_get_the_profile_field_description',   'wp_filter_kses', 1 );
     15add_filter( 'bp_get_the_profile_field_name',           'stripslashes' );
     16add_filter( 'bp_get_the_profile_field_edit_value',     'stripslashes' );
     17add_filter( 'bp_get_the_profile_field_description',    'stripslashes' );
    918
    10 add_filter( 'bp_get_the_profile_field_value',         'wptexturize'        );
    11 add_filter( 'bp_get_the_profile_field_value',         'convert_smilies', 2 );
    12 add_filter( 'bp_get_the_profile_field_value',         'convert_chars'      );
    13 add_filter( 'bp_get_the_profile_field_value',         'wpautop'            );
    14 add_filter( 'bp_get_the_profile_field_value',         'make_clickable'     );
    15 add_filter( 'bp_get_the_profile_field_value',         'force_balance_tags' );
    1619
    17 add_filter( 'bp_get_the_profile_field_value',         'stripslashes' );
    18 add_filter( 'bp_get_the_profile_field_edit_value',    'stripslashes' );
    19 add_filter( 'bp_get_the_profile_field_name',          'stripslashes' );
    20 add_filter( 'bp_get_the_profile_field_description',   'stripslashes' );
     20add_filter( 'xprofile_get_field_data',                 'wp_filter_kses', 1 );
     21add_filter( 'xprofile_field_name_before_save',         'wp_filter_kses', 1 );
     22add_filter( 'xprofile_field_description_before_save',  'wp_filter_kses', 1 );
     23add_filter( 'xprofile_field_option_value_before_save', 'wp_filter_kses', 1 );
    2124
    22 add_filter( 'xprofile_get_field_data',                'wp_filter_kses', 1 );
    23 add_filter( 'xprofile_field_name_before_save',        'wp_filter_kses', 1 );
    24 add_filter( 'xprofile_field_description_before_save', 'wp_filter_kses', 1 );
     25add_filter( 'xprofile_get_field_data',                 'force_balance_tags' );
     26add_filter( 'xprofile_field_name_before_save',         'force_balance_tags' );
     27add_filter( 'xprofile_field_description_before_save',  'force_balance_tags' );
     28add_filter( 'xprofile_field_option_value_before_save', 'force_balance_tags' );
    2529
    26 add_filter( 'xprofile_get_field_data',                'force_balance_tags' );
    27 add_filter( 'xprofile_field_name_before_save',        'force_balance_tags' );
    28 add_filter( 'xprofile_field_description_before_save', 'force_balance_tags' );
     30add_filter( 'xprofile_get_field_data',                 'stripslashes' );
     31add_filter( 'xprofile_field_name_before_save',         'stripslashes' );
     32add_filter( 'xprofile_field_description_before_save',  'stripslashes' );
     33add_filter( 'xprofile_field_type_before_save',         'stripslashes' );
     34add_filter( 'xprofile_field_option_value_before_save', 'stripslashes' );
    2935
    30 add_filter( 'xprofile_get_field_data',                'stripslashes' );
     36add_filter( 'xprofile_group_name_before_save',         'stripslashes' );
     37add_filter( 'xprofile_group_description_before_save',  'stripslashes' );
    3138
    32 /* Custom BuddyPress filters */
    3339
     40// Custom BuddyPress filters
    3441add_filter( 'bp_get_the_profile_field_value',         'xprofile_filter_format_field_value', 1, 2 );
    3542add_filter( 'bp_get_the_site_member_profile_data',    'xprofile_filter_format_field_value', 1, 2 );
    3643add_filter( 'bp_get_the_profile_field_value',         'xprofile_filter_link_profile_data', 50, 2 );
     
    4754 * @return string
    4855 */
    4956function xprofile_sanitize_data_value_before_save ( $field_value, $field_id ) {
    50 
    5157        // Return if empty
    5258        if ( empty( $field_value ) )
    5359                return;
     
    5763
    5864        // Filter single value
    5965        if ( !is_array( $field_value ) ) {
    60                 $kses_field_value     = wp_filter_kses( $field_value );
     66                $kses_field_value     = stripslashes( wp_filter_kses( $field_value ) );
    6167                $filtered_field_value = force_balance_tags( $kses_field_value );
    6268
    6369        // Filter each array item independently
    6470        } else {
    6571                foreach ( (array)$field_value as $value ) {
    66                         $kses_field_value       = wp_filter_kses( $value );
    67                         $filtered_values[] = force_balance_tags( $kses_field_value );
     72                        $kses_field_value   = stripslashes( wp_filter_kses( $value ) );
     73                        $filtered_values[]  = force_balance_tags( $kses_field_value );
    6874                }
    6975
    7076                $filtered_field_value = serialize( $filtered_values );
     
    143149        return $comments;
    144150}
    145151add_filter( 'comments_array', 'xprofile_filter_comments', 10, 2 );
    146 
    147 ?>
     152?>
     153 No newline at end of file
  • bp-xprofile/bp-xprofile-templatetags.php

     
    387387                                        $option_values = maybe_unserialize( BP_XProfile_ProfileData::get_value_byid( $options[$k]->parent_id ) );
    388388                                        $option_values = (array)$option_values;
    389389
    390                                         /* Check for updated posted values, but errors preventing them from being saved first time */
     390                                        // Check for updated posted values, but errors preventing them from being saved first time
    391391                                        foreach( (array)$option_values as $i => $option_value ) {
    392392                                                if ( isset( $_POST['field_' . $field->id] ) && $_POST['field_' . $field->id] != $option_value ) {
    393393                                                        if ( !empty( $_POST['field_' . $field->id] ) )
     
    395395                                                }
    396396                                        }
    397397
    398                                         if ( in_array( $options[$k]->name, (array)$option_values ) || $options[$k]->is_default_option ) {
     398                                        if ( in_array( $options[$k]->name, (array)$option_values ) || empty( $option_value ) && $options[$k]->is_default_option )
    399399                                                $selected = ' selected="selected"';
    400                                         } else {
     400                                        else
    401401                                                $selected = '';
    402                                         }
    403402
    404                                         $html .= apply_filters( 'bp_get_the_profile_field_options_select', '<option' . $selected . ' value="' . stripslashes( esc_attr( $options[$k]->name ) ) . '">' . stripslashes( esc_attr( $options[$k]->name ) ) . '</option>', $options[$k] );
     403                                        $html .= apply_filters( 'bp_get_the_profile_field_options_select', '<option' . $selected . ' value="' . esc_attr( $options[$k]->name ) . '">' . esc_attr( $options[$k]->name ) . '</option>', $options[$k] );
    405404                                }
    406405                                break;
    407406
     
    411410                                for ( $k = 0; $k < count($options); $k++ ) {
    412411                                        $option_value = BP_XProfile_ProfileData::get_value_byid($options[$k]->parent_id);
    413412
    414                                         /* Check for updated posted values, but errors preventing them from being saved first time */
     413                                        // Check for updated posted values, but errors preventing them from being saved first time
    415414                                        if ( isset( $_POST['field_' . $field->id] ) && $option_value != $_POST['field_' . $field->id] ) {
    416415                                                if ( !empty( $_POST['field_' . $field->id] ) )
    417416                                                        $option_value = $_POST['field_' . $field->id];
    418417                                        }
    419418
    420                                         if ( $option_value == $options[$k]->name || $value == $options[$k]->name || ( empty( $option_value ) && $options[$k]->is_default_option ) ) {
     419                                        if ( $option_value == $options[$k]->name || $value == $options[$k]->name || empty( $option_value ) && $options[$k]->is_default_option )
    421420                                                $selected = ' checked="checked"';
    422                                         } else {
     421                                        else
    423422                                                $selected = '';
    424                                         }
    425423
    426                                         $html .= apply_filters( 'bp_get_the_profile_field_options_radio', '<label><input' . $selected . ' type="radio" name="field_' . $field->id . '" id="option_' . $options[$k]->id . '" value="' . stripslashes( esc_attr( $options[$k]->name ) ) . '"> ' . stripslashes( esc_attr( $options[$k]->name ) ) . '</label>', $options[$k] );
     424                                        $html .= apply_filters( 'bp_get_the_profile_field_options_radio', '<label><input' . $selected . ' type="radio" name="field_' . $field->id . '" id="option_' . $options[$k]->id . '" value="' . esc_attr( $options[$k]->name ) . '"> ' . esc_attr( $options[$k]->name ) . '</label>', $options[$k] );
    427425                                }
    428426
    429427                                $html .= '</div>';
     
    432430                        case 'checkbox':
    433431                                $option_values = BP_XProfile_ProfileData::get_value_byid($options[0]->parent_id);
    434432
    435                                 /* Check for updated posted values, but errors preventing them from being saved first time */
     433                                // Check for updated posted values, but errors preventing them from being saved first time
    436434                                if ( isset( $_POST['field_' . $field->id] ) && $option_values != maybe_serialize( $_POST['field_' . $field->id] ) ) {
    437435                                        if ( !empty( $_POST['field_' . $field->id] ) )
    438436                                                $option_values = $_POST['field_' . $field->id];
     
    442440
    443441                                for ( $k = 0; $k < count($options); $k++ ) {
    444442                                        for ( $j = 0; $j < count($option_values); $j++ ) {
    445                                                 if ( $option_values[$j] == $options[$k]->name || @in_array( $options[$k]->name, $value ) || $options[$k]->is_default_option ) {
     443                                                if ( $option_values[$j] == $options[$k]->name || @in_array( $options[$k]->name, $value ) || empty( $option_value ) && $options[$k]->is_default_option ) {
    446444                                                        $selected = ' checked="checked"';
    447445                                                        break;
    448446                                                }
    449447                                        }
    450448
    451                                         $html .= apply_filters( 'bp_get_the_profile_field_options_checkbox', '<label><input' . $selected . ' type="checkbox" name="field_' . $field->id . '[]" id="field_' . $options[$k]->id . '_' . $k . '" value="' . stripslashes( esc_attr( $options[$k]->name ) ) . '"> ' . stripslashes( esc_attr( $options[$k]->name ) ) . '</label>', $options[$k] );
     449                                        $html .= apply_filters( 'bp_get_the_profile_field_options_checkbox', '<label><input' . $selected . ' type="checkbox" name="field_' . $field->id . '[]" id="field_' . $options[$k]->id . '_' . $k . '" value="' . esc_attr( $options[$k]->name ) . '"> ' . esc_attr( $options[$k]->name ) . '</label>', $options[$k] );
    452450                                        $selected = '';
    453451                                }
    454452                                break;
  • bp-xprofile/bp-xprofile-classes.php

     
    3434        function save() {
    3535                global $wpdb, $bp;
    3636
    37                 $this->name                     = apply_filters( 'xprofile_group_name_before_save', $this->name, $this->id );
    38                 $this->description      = apply_filters( 'xprofile_group_description_before_save', $this->description, $this->id );
     37                $this->name        = apply_filters( 'xprofile_group_name_before_save', $this->name, $this->id );
     38                $this->description = apply_filters( 'xprofile_group_description_before_save', $this->description, $this->id );
    3939
    4040                do_action( 'xprofile_group_before_save', $this );
    4141
     
    297297                        $this->group_id          = $field->group_id;
    298298                        $this->parent_id         = $field->parent_id;
    299299                        $this->type              = $field->type;
    300                         $this->name              = stripslashes( $field->name );
    301                         $this->description       = stripslashes( $field->description );
     300                        $this->name              = $field->name;
     301                        $this->description       = $field->description;
    302302                        $this->is_required       = $field->is_required;
    303303                        $this->can_delete        = $field->can_delete;
    304304                        $this->field_order       = $field->field_order;
     
    412412                                                                $is_default = 1;
    413413                                                }
    414414
    415                                                 if ( '' != $option_value ) {
     415                                                if ( !empty( $option_value ) ) {
     416                                                        $option_value = apply_filters( 'xprofile_field_option_value_before_save', $option_value, $this->group_id );
     417
    416418                                                        if ( !$wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->profile->table_name_fields} (group_id, parent_id, type, name, description, is_required, option_order, is_default_option) VALUES (%d, %d, 'option', %s, '', 0, %d, %d)", $this->group_id, $parent_id, $option_value, $counter, $is_default ) ) )
    417419                                                                return false;
    418420                                                }
     
    740742                        $this->id           = $profiledata->id;
    741743                        $this->user_id      = $profiledata->user_id;
    742744                        $this->field_id     = $profiledata->field_id;
    743                         $this->value        = stripslashes( $profiledata->value );
     745                        $this->value        = $profiledata->value;
    744746                        $this->last_updated = $profiledata->last_updated;
    745747                }
    746748        }
     
    964966                return $data[BP_XPROFILE_FULLNAME_FIELD_NAME];
    965967        }
    966968}
    967 
    968969?>
    969  No newline at end of file
  • bp-xprofile.php

     
    663663
    664664        /* Check the value is an acceptable value */
    665665        if ( 'checkbox' == $field->type || 'radio' == $field->type || 'selectbox' == $field->type || 'multiselectbox' == $field->type ) {
     666                $value = stripslashes_deep( $value );
    666667                $options = $field->get_children();
    667668
    668669                foreach( $options as $option )