Skip to:
Content

Ticket #7641: 7641-2.patch

File 7641-2.patch, 7.5 KB (added by espellcaste, 6 weeks 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}