Skip to:
Content

BuddyPress.org

Ticket #7641: 7641-2.patch

File 7641-2.patch, 7.5 KB (added by espellcaste, 5 years ago)

Correct one!

  • src/bp-members/classes/class-bp-signup.php

    diff --git a/src/bp-members/classes/class-bp-signup.php b/src/bp-members/classes/class-bp-signup.php
    index 769ea4841..c5249359d 100644
    a b class BP_Signup { 
    132132         *     @type bool        $include        Whether or not to include more specific query params.
    133133         *     @type string      $activation_key Activation key to search for.
    134134         *     @type string      $user_login     Specific user login to return.
     135         *     @type string      $fields         Which fields to return. Specify 'ids' to fetch a list of signups IDs.
     136         *                                       Default: 'all' (return BP_Signup objects).
    135137         * }
    136138         * @return array {
    137          *     @type array $signups Located signups.
     139         *     @type array $signups Located signups. (IDs only if `fields` is set to `ids`.)
    138140         *     @type int   $total   Total number of signups matching params.
    139141         * }
    140142         */
    class BP_Signup { 
    151153                                'include'        => false,
    152154                                'activation_key' => '',
    153155                                'user_login'     => '',
     156                                'fields'         => 'all',
    154157                        ),
    155158                        'bp_core_signups_get_args'
    156159                );
    class BP_Signup { 
    213216                        return array( 'signups' => false, 'total' => false );
    214217                }
    215218
    216                 // Used to calculate a diff between now & last
    217                 // time an activation link has been resent.
    218                 $now = current_time( 'timestamp', true );
     219                // We only want the IDs.
     220                if ( 'ids' === $r['fields'] ) {
     221                        $paged_signups = wp_list_pluck( $paged_signups, 'signup_id' );
     222                } else {
    219223
    220                 foreach ( (array) $paged_signups as $key => $signup ) {
     224                        // Used to calculate a diff between now & last
     225                        // time an activation link has been resent.
     226                        $now = current_time( 'timestamp', true );
    221227
    222                         $signup->id   = intval( $signup->signup_id );
     228                        foreach ( (array) $paged_signups as $key => $signup ) {
    223229
    224                         $signup->meta = ! empty( $signup->meta ) ? maybe_unserialize( $signup->meta ) : false;
     230                                $signup->id   = intval( $signup->signup_id );
    225231
    226                         $signup->user_name = '';
    227                         if ( ! empty( $signup->meta['field_1'] ) ) {
    228                                 $signup->user_name = wp_unslash( $signup->meta['field_1'] );
    229                         }
     232                                $signup->meta = ! empty( $signup->meta ) ? maybe_unserialize( $signup->meta ) : false;
    230233
    231                         // Sent date defaults to date of registration.
    232                         if ( ! empty( $signup->meta['sent_date'] ) ) {
    233                                 $signup->date_sent = $signup->meta['sent_date'];
    234                         } else {
    235                                 $signup->date_sent = $signup->registered;
    236                         }
     234                                $signup->user_name = '';
     235                                if ( ! empty( $signup->meta['field_1'] ) ) {
     236                                        $signup->user_name = wp_unslash( $signup->meta['field_1'] );
     237                                }
    237238
    238                         $sent_at = mysql2date('U', $signup->date_sent );
    239                         $diff    = $now - $sent_at;
     239                                // Sent date defaults to date of registration.
     240                                if ( ! empty( $signup->meta['sent_date'] ) ) {
     241                                        $signup->date_sent = $signup->meta['sent_date'];
     242                                } else {
     243                                        $signup->date_sent = $signup->registered;
     244                                }
    240245
    241                         /**
    242                          * Add a boolean in case the last time an activation link
    243                          * has been sent happened less than a day ago.
    244                          */
    245                         if ( $diff < 1 * DAY_IN_SECONDS ) {
    246                                 $signup->recently_sent = true;
    247                         }
     246                                $sent_at = mysql2date('U', $signup->date_sent );
     247                                $diff    = $now - $sent_at;
    248248
    249                         if ( ! empty( $signup->meta['count_sent'] ) ) {
    250                                 $signup->count_sent = absint( $signup->meta['count_sent'] );
    251                         } else {
    252                                 $signup->count_sent = 1;
    253                         }
     249                                /**
     250                                 * Add a boolean in case the last time an activation link
     251                                 * has been sent happened less than a day ago.
     252                                 */
     253                                if ( $diff < 1 * DAY_IN_SECONDS ) {
     254                                        $signup->recently_sent = true;
     255                                }
     256
     257                                if ( ! empty( $signup->meta['count_sent'] ) ) {
     258                                        $signup->count_sent = absint( $signup->meta['count_sent'] );
     259                                } else {
     260                                        $signup->count_sent = 1;
     261                                }
    254262
    255                         $paged_signups[ $key ] = $signup;
     263                                $paged_signups[ $key ] = $signup;
     264                        }
    256265                }
    257266
    258267                unset( $sql['limit'] );
    class BP_Signup { 
    271280                $total_signups = $wpdb->get_var( apply_filters( 'bp_members_signups_count_query', join( ' ', $sql ), $sql, $args, $r ) );
    272281
    273282                return array( 'signups' => $paged_signups, 'total' => $total_signups );
    274 
    275283        }
    276284
    277285        /**
  • tests/phpunit/testcases/members/class-bp-signup.php

    diff --git a/tests/phpunit/testcases/members/class-bp-signup.php b/tests/phpunit/testcases/members/class-bp-signup.php
    index 040b52994..1063d7ce5 100644
    a b class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    107107
    108108                $ss = BP_Signup::get( array(
    109109                        'offset' => 1,
     110                        'fields' => 'ids',
    110111                ) );
    111112
    112                 $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     113                $this->assertEquals( array( $s2 ), $ss['signups'] );
    113114        }
    114115
    115116        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    122123
    123124                $ss = BP_Signup::get( array(
    124125                        'number' => 2,
     126                        'fields' => 'ids',
    125127                ) );
    126128
    127                 $this->assertEquals( array( $s3, $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     129                $this->assertEquals( array( $s3, $s2 ), $ss['signups'] );
    128130        }
    129131
    130132        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    139141
    140142                $ss = BP_Signup::get( array(
    141143                        'usersearch' => 'ghi',
     144                        'fields' => 'ids',
    142145                ) );
    143146
    144                 $this->assertEquals( array( $s1 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     147                $this->assertEquals( array( $s1 ), $ss['signups'] );
    145148        }
    146149
    147150        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    161164                $ss = BP_Signup::get( array(
    162165                        'orderby' => 'email',
    163166                        'number' => 3,
     167                        'fields' => 'ids',
    164168                ) );
    165169
    166                 // default order is DESC
    167                 $this->assertEquals( array( $s3, $s1, $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     170                // default order is DESC.
     171                $this->assertEquals( array( $s3, $s1, $s2 ), $ss['signups'] );
    168172        }
    169173
    170174        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    185189                        'orderby' => 'email',
    186190                        'number' => 3,
    187191                        'order' => 'ASC',
     192                        'fields' => 'ids',
    188193                ) );
    189194
    190                 $this->assertEquals( array( $s2, $s1, $s3 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     195                $this->assertEquals( array( $s2, $s1, $s3 ), $ss['signups'] );
    191196        }
    192197
    193198        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    200205
    201206                $ss = BP_Signup::get( array(
    202207                        'include' => array( $s1, $s3 ),
     208                        'fields' => 'ids',
    203209                ) );
    204210
    205                 $this->assertEquals( array( $s1, $s3 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     211                $this->assertEquals( array( $s1, $s3 ), $ss['signups'] );
    206212        }
    207213
    208214        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    221227
    222228                $ss = BP_Signup::get( array(
    223229                        'activation_key' => 'bar',
     230                        'fields' => 'ids',
    224231                ) );
    225232
    226                 $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     233                $this->assertEquals( array( $s2 ), $ss['signups'] );
    227234        }
    228235
    229236        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    242249
    243250                $ss = BP_Signup::get( array(
    244251                        'user_login' => 'zzzzfoo',
     252                        'fields' => 'ids',
    245253                ) );
    246254
    247                 $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) );
     255                $this->assertEquals( array( $s2 ), $ss['signups'] );
    248256        }
    249257
    250258        /**
    class BP_Tests_BP_Signup extends BP_UnitTestCase { 
    365373
    366374                $this->assertEqualSets( $blogs, array_keys( $blogs ) );
    367375        }
     376
     377        /**
     378         * @group get
     379         */
     380        public function test_get_signup_ids_only() {
     381                $s1 = self::factory()->signup->create();
     382                $s2 = self::factory()->signup->create();
     383                $s3 = self::factory()->signup->create();
     384
     385                $ss = BP_Signup::get( array(
     386                        'number' => 3,
     387                        'fields' => 'ids',
     388                ) );
     389
     390                $this->assertEquals( array( $s3, $s2, $s1 ), $ss['signups'] );
     391        }
    368392}