Skip to:
Content

BuddyPress.org

Ticket #5500: 5500_update3_abweb.patch

File 5500_update3_abweb.patch, 22.4 KB (added by abwebstudio1, 4 years ago)

5500_update3_abweb.patch

  • bp-xprofile/bp-xprofile-admin.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    331331        xprofile_admin( $message, $type );
    332332}
    333333
     334        function xprofile_admin_manage_datebox_option( $message ) {
     335                if( empty( $_POST['datebox_option'] ) ) return;
     336
     337                $_POST['datebox_option'][0] = isset( $_POST['datebox_option'][0] ) ? 'yes' : 'no';
     338
     339                $_POST['datebox_option'][1] = ( isset( $_POST['datebox_option'][1] ) || $_POST['datebox_option'][7] == 'elapsed' ) ? 'yes' : 'no';
     340
     341                $_POST['datebox_option'][2] = ( isset( $_POST['datebox_option'][2] ) && $_POST['datebox_option'][2] == 'year' ) ? 'year' : 'ago';
     342
     343                $message .= ( $_POST['datebox_option'][3] == '' ) ? __( 'Field "Max years ago" - required! ', 'buddypress' ) : '';
     344                $_POST['datebox_option'][3] =   isset( $_POST['datebox_option'][3] ) ? mb_substr( abs ( intval ( $_POST['datebox_option'][3] ) ), 0, 4, 'UTF-8' ) : 100;
     345
     346                $message .= ( $_POST['datebox_option'][4] == '' ) ? __( 'Field "Min years ago" - required! ', 'buddypress' ) : '';
     347                $_POST['datebox_option'][4] =
     348                        isset( $_POST['datebox_option'][4] ) ? mb_substr( intval( $_POST['datebox_option'][4] ), 0, 5, 'UTF-8' ) : 18;
     349
     350                if ( isset( $_POST['datebox_option_3_from_type'] ) && $_POST['datebox_option_3_from_type'] ) {
     351                        $test_from = intval( date('Y') + $_POST['datebox_option'][3] );
     352                } else {
     353                        $test_from = intval( date('Y') - $_POST['datebox_option'][3] );
     354                        $_POST['datebox_option'][3] = -intval( $_POST['datebox_option'][3] );
     355                }
     356
     357                if ( isset( $_POST['datebox_option_3_to_type'] ) && $_POST['datebox_option_3_to_type'] ) {
     358                        $test_to = intval( date('Y') + $_POST['datebox_option'][4] );
     359                } else {
     360                        $test_to = intval( date('Y') - $_POST['datebox_option'][4] );
     361                        $_POST['datebox_option'][4] = -intval( $_POST['datebox_option'][4] );
     362                }
     363
     364                $message .= ( $test_from < $test_to ) ? __( 'Wrong year range! ', 'buddypress' ) : '';
     365
     366                $message .= ( $_POST['datebox_option'][5] == '' ) ? __( 'Field "Erliest" - required! ', 'buddypress' ) : '';
     367                $_POST['datebox_option'][5] = ( isset( $_POST['datebox_option'][5] ) )
     368                        ? mb_substr( intval($_POST['datebox_option'][5] ), 0, 5, 'UTF-8' ) : date("Y") - 100;
     369
     370                $message .= ( $_POST['datebox_option'][5] == '' ) ? __( 'Field "Latest" - required! ', 'buddypress' ) : '';
     371                $_POST['datebox_option'][6] = ( isset($_POST['datebox_option'][6] ) )
     372                        ? mb_substr( abs( intval( $_POST['datebox_option'][6] ) ), 0, 4, 'UTF-8') : date("Y") - 18;
     373
     374                $message .= ( $_POST['datebox_option'][5] > $_POST['datebox_option'][6] ) ? __( 'Wrong Erliest/Latest range! ', 'buddypress' ) : '';
     375
     376                ksort( $_POST['datebox_option'], SORT_NUMERIC );
     377                reset( $_POST['datebox_option'] );
     378
     379                if(!empty($message)){
     380                        $GLOBALS['message'] = $message;
     381                }
     382        }
     383
    334384/**
    335385 * Handles the adding or editing of profile field data for a user.
    336386 *
     
    351401        $field->group_id = $group_id;
    352402
    353403        if ( isset( $_POST['saveField'] ) ) {
     404                xprofile_admin_manage_datebox_option($message);
     405
    354406                if ( BP_XProfile_Field::admin_validate() ) {
    355407                        $field->is_required = $_POST['required'];
    356408                        $field->type        = $_POST['fieldtype'];
  • bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    2828                $this->category = _x( 'Single Fields', 'xprofile field type category', 'buddypress' );
    2929                $this->name     = _x( 'Date Selector', 'xprofile field type', 'buddypress' );
    3030
     31                $this->supports_options = true; # This parameter - added
     32
    3133                $this->set_format( '/^\d{4}-\d{1,2}-\d{1,2} 00:00:00$/', 'replace' ); // "Y-m-d 00:00:00"
    3234
    3335                /**
     
    4143                do_action( 'bp_xprofile_field_type_datebox', $this );
    4244        }
    4345
     46        public function is_valid($value) {
     47                if ($value) {
     48                        return true;
     49                }
     50                return false;
     51        }
     52
    4453        /**
    4554         * Output the edit field HTML for this field type.
    4655         *
     
    162171
    163172                        // If MySQL timestamp.
    164173                        } else {
    165                                 $day   = mysql2date( 'j', $date );
    166                                 $month = mysql2date( 'F', $date, false ); // Not localized, so that selected() works below.
    167                                 $year  = mysql2date( 'Y', $date );
     174                                $DT = new DateTime($date); // problem 2038 year http://php.net/manual/en/class.datetime.php
     175                                $day = $DT->format('j');
     176                                $month = $DT->format('F');
     177                                $year = $DT->format('Y');
    168178                        }
    169179                }
    170180
     
    226236                        case 'year':
    227237                                $html = sprintf( '<option value="" %1$s>%2$s</option>', selected( $year, 0, false ), /* translators: no option picked in select box */ __( '----', 'buddypress' ) );
    228238
    229                                 for ( $i = 2037; $i > 1901; $i-- ) {
    230                                         $html .= sprintf( '<option value="%1$s" %2$s>%3$s</option>', (int) $i, selected( $year, $i, false ), (int) $i );
    231                                 }
     239                                $ord = bp_xprofile_get_meta( 'bp_date_field', 'field', 'BPOptRegData' );
     240                                $ord = unserialize($ord);
     241                                $opt = $this->field_obj->get_children();
     242
     243                                if(isset($opt[2]->name)){
     244                                        $ord['range-curr'] = ($opt[2]->name == 'year') ? 'year' : 'ago';
     245                                } else {
     246                                        $ord['range-curr'] = 'ago';
     247                                }
     248
     249                                if(isset($opt[3]->name)) {
     250                                        $ord['range-year']['ago']['max'] = $opt[3]->name;
     251                                }
     252
     253                                if(isset($opt[4]->name)){
     254                                        $ord['range-year']['ago']['min'] = $opt[4]->name;
     255                                }
     256
     257                                if(isset($opt[5]->name)){
     258                                        $ord['range-year']['year']['earliest'] = $opt[5]->name;
     259                                }
     260
     261                                if(isset($opt[6]->name)){
     262                                        $ord['range-year']['year']['latest'] = $opt[6]->name;
     263                                }
     264
     265                                if($ord['range-curr'] == 'ago'){
     266                                        $ord['range-year']['year']['latest'] = date("Y") + $ord['range-year']['ago']['min'];
     267                                        $ord['range-year']['year']['earliest'] = date("Y") + $ord['range-year']['ago']['max'];
     268                                }
     269
     270                                for ( $i = $ord['range-year']['year']['latest']; $i > ($ord['range-year']['year']['earliest']-1); $i-- ) {
     271                                        $html .= sprintf( '<option value="%1$s" %2$s>%3$s</option>', (int) $i, selected( $year, $i, false ), (int) $i );
     272                                }
    232273                        break;
    233274                }
    234275
     
    272313                $year_r = bp_parse_args( $raw_properties, array(
    273314                        'id'   => bp_get_the_profile_field_input_name() . '_year',
    274315                        'name' => bp_get_the_profile_field_input_name() . '_year'
    275                 ) ); ?>
     316                ) );
    276317
    277                 <label for="<?php bp_the_profile_field_input_name(); ?>_day" class="screen-reader-text"><?php esc_html_e( 'Select day', 'buddypress' ); ?></label>
    278                 <select <?php echo $this->get_edit_field_html_elements( $day_r ); ?>>
    279                         <?php bp_the_profile_field_options( array( 'type' => 'day' ) ); ?>
    280                 </select>
     318                // Change the location of selects, depending on the "date_format"
     319
     320                ob_start();
     321                ?>
     322            <select <?php echo $this->get_edit_field_html_elements( $day_r ); ?>>
     323                        <?php bp_the_profile_field_options( array( 'type' => 'day' ) ); ?>
     324            </select>
     325                <?php
     326                $selectDay = ob_get_contents();
     327                ob_end_clean();
    281328
    282                 <label for="<?php bp_the_profile_field_input_name(); ?>_month" class="screen-reader-text"><?php esc_html_e( 'Select month', 'buddypress' ); ?></label>
    283                 <select <?php echo $this->get_edit_field_html_elements( $month_r ); ?>>
    284                         <?php bp_the_profile_field_options( array( 'type' => 'month' ) ); ?>
    285                 </select>
     329                ob_start();
     330                ?>
     331            <select <?php echo $this->get_edit_field_html_elements( $month_r ); ?>>
     332                        <?php bp_the_profile_field_options( array( 'type' => 'month' ) ); ?>
     333            </select>
     334                <?php
     335                $selectMonth = ob_get_contents();
     336                ob_end_clean();
    286337
    287                 <label for="<?php bp_the_profile_field_input_name(); ?>_year" class="screen-reader-text"><?php esc_html_e( 'Select year', 'buddypress' ); ?></label>
    288                 <select <?php echo $this->get_edit_field_html_elements( $year_r ); ?>>
    289                         <?php bp_the_profile_field_options( array( 'type' => 'year' ) ); ?>
    290                 </select>
     338                ob_start();
     339                ?>
     340            <select <?php echo $this->get_edit_field_html_elements( $year_r ); ?>>
     341                        <?php bp_the_profile_field_options( array( 'type' => 'year' ) ); ?>
     342            </select>
     343                <?php
     344                $selectYear = ob_get_contents();
     345                ob_end_clean();
    291346
     347                // Change the location of selects, depending on the "date_format"
     348
     349                $format = get_option('date_format', 'd/m/Y');
     350
     351                switch( $format )
     352                {
     353                        case 'm/d/Y';#m/d/Y
     354                        case 'm-d-Y';
     355                        case 'm.d.Y';
     356                                echo $selectMonth;
     357                                echo $selectDay;
     358                                echo $selectYear;
     359                                break;
     360
     361                        case 'd/m/Y'; #d/m/Y
     362                        case 'd-m-Y';
     363                        case 'd.m.Y';
     364                                echo $selectDay;
     365                                echo $selectMonth;
     366                                echo $selectYear;
     367                                break;
     368
     369                        default; #Y-m-d
     370                                echo $selectYear;
     371                                echo $selectMonth;
     372                                echo $selectDay;
     373                                break;
     374                }
     375
     376                ?>
     377
     378
    292379        <?php
    293380        }
    294381
     
    302389         * @param string            $control_type  Optional. HTML input type used to render the current
    303390         *                                         field's child options.
    304391         */
    305         public function admin_new_field_html( BP_XProfile_Field $current_field, $control_type = '' ) {}
     392        public function admin_new_field_html( BP_XProfile_Field $current_field, $control_type = '' ) {
     393                //parent::admin_new_field_html( $current_field, 'checkbox' );
     394                $type = array_search( get_class( $this ), bp_xprofile_get_field_types() );
    306395
     396                if ( false === $type ) {
     397                        return;
     398                }
     399
     400                $class = $current_field->type != $type ? 'display: none;' : '';
     401                $current_type_obj = bp_xprofile_create_field_type( $type );
     402                $SET = $current_field->BPOptRegData;
     403                $SET = unserialize( $SET );
     404                $OPT = $current_field->get_children( true );
     405
     406
     407                ?>
     408
     409    <div id="<?php echo esc_attr( $type ); ?>" class="postbox bp-options-box" style="<?php echo esc_attr( $class ); ?> margin-top: 15px;">
     410        <h3><?php esc_html_e( 'Please enter options for this Field:', 'buddypress' ); ?></h3>
     411
     412        <div class="inside">
     413
     414            <div id="datebox_div1" class="bp-option sortable">
     415
     416            <h2 style="font-size: 23px;">Date field</h2>
     417
     418                <table class="form-table" style="margin: 8px 13px;">
     419                                        <tr>
     420                                                <th style="width: 100px;">Date format</th>
     421                                                <td>
     422                                                        <fieldset>
     423
     424                                                                <legend class="screen-reader-text"><span>Date format</span></legend>
     425                                                                <?php
     426                                                                        $date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
     427                                                                ?>
     428                                                                <?php if( !empty( $date_formats ) ): ?>
     429                                                                        <?php foreach ( $date_formats as $key => $format ): ?>
     430                                                                        <?php
     431                                                                                $checked = '';
     432                                                                                if( $OPT[7]->name == $format || ( !$OPT[7]->name && !$key ) ) {
     433                                                                                        $checked = 'checked';
     434                                                                                        $custom_format = false;
     435                                                                                }
     436                                                                        ?>
     437
     438                                                                        <label title='<?=esc_attr( $format ); ?>'>
     439                                                                                <input <?=$checked; ?> type='radio' name='datebox_option[7]' value='<?= esc_attr($format); ?>' />
     440                                                                                <span class="date-time-text format-i18n"><?=date_i18n( $format );?></span>
     441                                                                                <code><?=$format?></code>
     442                                                                        </label><br/>
     443
     444                                                                        <?php endforeach;?>
     445                                                                <?php endif; ?>
     446
     447                                                                <label>
     448                                                                        <input type="radio" <?= ( $SET['show-time'] == 'yes' OR $OPT[1]->name == 'yes' ) ? ' checked="checked" ' : ''; ?> value="elapsed" id="date_format_elapsed_radio" name="datebox_option[7]">
     449                                                                        Time elapsed
     450                                                                        <span style="padding-left: 15px;"> Examples: </span>
     451                                                                        <code>4 years ago</code>,
     452                                                                        <code>4 years from now</code>
     453                                                                </label>
     454
     455                                                                <label>
     456                                                                        <input type="radio" <?=( $custom_format )? 'checked': ''; ?> value="custom" id="date_format_custom_radio" name="datebox_option[7]">
     457                                                                        Custom:
     458                                                                        <input type="text" style="width: 80px;" class="small-text" value='<?= esc_attr( $OPT[7]->name ); ?>' id="date_format_custom" name="date_format_custom">
     459                                                                        <span style="padding-left: 15px;"> Example: </span>
     460                                                                        <code>d.m.Y</code>
     461                                                                </label><br/>
     462
     463                                                        </fieldset>
     464                                                </td>
     465                                        </tr>
     466                                        <tr>
     467                                                <th style="width: 100px;">Range</th>
     468                                                <td>
     469                                                        <fieldset>
     470                                                                <legend class="screen-reader-text"><span>Range</span></legend>
     471
     472                                                                <label>
     473                                                                        <input type="radio" name="datebox_option[2]" value="year"
     474                                                                                <?= ( $SET['range-curr'] == 'year' || $OPT[2]->name == 'year' ) ? ' checked="checked" ' : ''; ?> />
     475
     476                                                                        <span class="date-time-text format-i18n">From</span>
     477                                                                        <input type="text" name="datebox_option[5]" size="3" maxlength="5"
     478                                                                                                value="<?= isset( $OPT[5]->name ) ? $OPT[5]->name : $SET['range-year']['year']['earliest']; ?>" />
     479
     480                                                                        <span class="date-time-text format-i18n" style="padding-left:7px;padding-right:7px;">to</span>
     481                                                                        <input type="text" name="datebox_option[6]" size="3" maxlength="4"
     482                                                                                          value="<?= isset( $OPT[6]->name ) ? $OPT[6]->name : $SET['range-year']['year']['latest']; ?>" />
     483                                                                </label><br/>
     484
     485                                                                <label>
     486                                                                        <input type="radio" name="datebox_option[2]"  value="ago"
     487                                                        <?= ( $SET['range-curr'] == 'ago' || $OPT[2]->name == 'ago' ) ? ' checked="checked" ' : ''; ?> />
     488
     489                                                                        <span class="date-time-text format-i18n">From</span>
     490                                                                        <input type="text" name="datebox_option[3]" size="3" maxlength="4"
     491                                                                value="<?= isset( $OPT[3]->name ) ? abs( $OPT[3]->name ) : $SET['range-year']['ago']['max']; ?>" />
     492                                                                        <select name="datebox_option_3_from_type">
     493                                                                                <option value="0" <?php if ( isset( $OPT[3]->name ) && intval( $OPT[3]->name ) < 0 ) echo 'selected="selected"'; ?>>years ago</option>
     494                                                                                <option value="1" <?php if ( isset( $OPT[3]->name ) && intval( $OPT[3]->name ) > 0 ) echo 'selected="selected"'; ?>>years from now</option>
     495                                                                        </select>
     496
     497                                                                        <span class="date-time-text format-i18n" style="padding-left:7px;padding-right:7px;">to</span>
     498                                                                        <input type="text" name="datebox_option[4]" size="3" maxlength="5"
     499                                                       value="<?= isset( $OPT[4]->name ) ? abs( $OPT[4]->name ) : $SET['range-year']['ago']['min']; ?>" />
     500                                                                        <select name="datebox_option_3_to_type">
     501                                                                                <option value="0" <?php if (isset( $OPT[4]->name ) && intval( $OPT[4]->name ) < 0) echo 'selected="selected"'; ?>>years ago</option>
     502                                                                                <option value="1" <?php if (isset( $OPT[4]->name ) && intval( $OPT[4]->name ) > 0) echo 'selected="selected"'; ?>>years from now</option>
     503                                                                        </select>
     504                                                                </label><br/>
     505
     506                                                        </fieldset>
     507                                                </td>
     508                                        </tr>
     509                    <tr>
     510                        <td></td>
     511                        <td colspan="3">
     512                                                                                                        <p><a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.</p>
     513                                                                                                        <p><b>Note</b>: Range is allowed between 1902 and 2037 years only.</p>
     514                                                                                                </td>
     515                        </tr>
     516                </table>
     517         </div>
     518
     519            <input type="hidden" name="datebox_option_number" id="datebox_option_number" value="8"/>
     520            <input type="hidden" name="sort_order_datebox" id="sort_order_datebox" value="custom"/>
     521
     522            <?php /*div id="datebox_more"></div>
     523            <p><a href="javascript:add_option('datebox')">Add Another Option</a></p*/ ?>
     524        </div>
     525    </div>
     526           <script>
     527                   jQuery(document).ready(function($) {
     528                                $("input[name='date_format']").click(function(){
     529                                                if ( "date_format_custom_radio" != $(this).attr("id") )
     530                                                        $( "input[name='date_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
     531                                        });
     532
     533                                        $("input[name='date_format_custom']").focus(function(){
     534                                                $( '#date_format_custom_radio' ).prop( 'checked', true );
     535                                        });
     536
     537                           $("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
     538                                                var format = $(this);
     539                                                $('#date_format_custom_radio' ).val(format.val());
     540                                                format.siblings( '.spinner' ).addClass( 'is-active' );
     541                                                $.post(ajaxurl, {
     542                                                                action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
     543                                                                date : format.val()
     544                                                                }, function(d) {
     545                                                                        format.siblings( '.spinner' ).removeClass( 'is-active' ); format.siblings('.example').text(d);
     546
     547                                                                } );
     548                                                });
     549                       });
     550            </script>
     551
     552                <?php
     553        }
     554
    307555        /**
    308556         * Format Date values for display.
    309557         *
     
    322570                        $field_value = strtotime( $field_value );
    323571                }
    324572
    325                 return bp_format_time( $field_value, true, false );
    326         }
     573                global $wpdb, $bp;
     574                $option = unserialize( bp_xprofile_get_meta( 'bp_date_field', 'field', 'BPOptRegData' ) );
     575                //$uid = bp_displayed_user_id();
     576                $parent_id = isset( $GLOBALS['field']->id ) ? $GLOBALS['field']->id : $field_id;
     577                $sort_sql = 'ORDER BY option_order ASC';
     578                $sql = $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_fields} WHERE parent_id = %d $sort_sql", $parent_id);
     579                $opt = $wpdb->get_results( $sql );
     580
     581                $option['date-format'] = $opt[7]->name;
     582
     583                if(isset($opt[0]) && isset($opt[1])){
     584                        $option['show-year'] = $opt[0]->name;
     585                        $option['show-time'] = $opt[1]->name;
     586                }
     587
     588
     589                if($option['show-time'] == 'yes'){
     590                        $field_value = self::formatDateByBPOptRegData($field_value,$option, true, true);
     591
     592                }else {
     593                        $field_value = self::formatDateByBPOptRegData($field_value,$option, true, false);
     594                }
     595
     596                return $field_value;
     597        }
     598
     599        private function formatDateByBPOptRegData( $time, $option, $localize_time = true, $show) {
     600
     601                        if ( ! isset( $time ) || ! is_numeric( $time ) ) {
     602                                return false;
     603                        }
     604
     605                        if ( ! empty( $localize_time ) ) {
     606                                $root_blog_offset = get_blog_option( bp_get_root_blog_id(), 'gmt_offset' );
     607                        }else{
     608                                $root_blog_offset = false;
     609                        }
     610
     611                        $time_offset = $time + ( $root_blog_offset * 3600 );
     612
     613                        if($show === false){
     614                                $date = date_i18n( $option['date-format'], $time_offset );
     615                        } else {  // Here we calculate the number of years
     616                                $current_year = intval( date("Y") );
     617                                $selected_year = intval( date( "Y", $time_offset ) );
     618                                if ( $selected_year > $current_year ) {
     619                                        $date = ' ' . ( $selected_year - $current_year ) . __(' years from now', 'buddypress');
     620                                } else {
     621                                        $date = ' ' . ( $current_year - $selected_year ) . __(' years ago', 'buddypress');
     622                                }
     623                        }
     624
     625                        return $date;
     626                }
    327627}
  • bp-xprofile/bp-xprofile-screens.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    6565                return;
    6666        }
    6767
     68
    6869        // No errors.
    6970        $errors = false;
    7071
     
    9192
    9293                                if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) ) {
    9394                                        // Concatenate the values.
    94                                         $date_value =   $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
     95                                        $eng_months = array( 1=>'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' );
     96                                        $_POST['field_' . $field_id . '_month'] = array_search( $_POST['field_' . $field_id . '_month'], $eng_months );
     97                                        $date_value = $_POST['field_' . $field_id . '_year'] . '-' . $_POST['field_' . $field_id . '_month'] . '-' . $_POST['field_' . $field_id . '_day'];
    9598
    9699                                        // Turn the concatenated value into a timestamp.
    97                                         $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) );
     100                                        $date = new DateTime( $date_value );
     101                                        $_POST['field_' . $field_id] = $date->getTimestamp();
    98102                                }
    99103
    100104                        }
     
    114118
    115119                        // Reset the errors var.
    116120                        $errors = false;
    117 
    118121                        // Now we've checked for required fields, lets save the values.
    119122                        $old_values = $new_values = array();
    120123                        foreach ( (array) $posted_field_ids as $field_id ) {
  • bp-xprofile/classes/class-bp-xprofile-field.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    162162         */
    163163        protected $member_types;
    164164
     165
     166
     167        public $BPOptRegData = array();
     168
    165169        /**
    166170         * Initialize and/or populate profile field.
    167171         *
     
    181185                        $this->type_obj            = bp_xprofile_create_field_type( 'textbox' );
    182186                        $this->type_obj->field_obj = $this;
    183187                }
     188
     189                        $this->BPOptRegData = $this->runCheckBPOptRegDate();
     190        }
     191
     192
     193        public function runCheckBPOptRegDate() {
     194
     195                $BPOptRegData = bp_xprofile_get_meta( 'bp_date_field', 'field', 'BPOptRegData' );
     196
     197                $serialize = serialize(
     198                        array(
     199                                'show-year' => 'yes',
     200                                'show-time' => 'no',
     201                                'range-curr' => 'year',
     202                                'range-year' => array(
     203                                        'ago' => array('min' => 18, 'max' => 100),
     204                                        'year' => array('earliest' => (date("Y")-101), 'latest' => (date("Y")-18))
     205                                ),
     206                                'date-format' => "Y-m-d",
     207                        )
     208                );
     209
     210                bp_xprofile_update_meta( 'bp_date_field', 'field', 'BPOptRegData', $serialize );
     211
     212                return $serialize;
    184213        }
    185214
    186215        /**
  • bp-xprofile/bp-xprofile-functions.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    434434        }
    435435
    436436        // For certain fields, only certain parameters are acceptable, so add them to the whitelist.
    437         if ( $field_type_obj->supports_options ) {
     437        if ( $field_type_obj->supports_options && $field_type_obj->name != 'Date Selector' ) {
    438438                $field_type_obj->set_whitelist_values( wp_list_pluck( $field->get_children(), 'name' ) );
    439439        }
    440440