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 { |
132 | 132 | * @type bool $include Whether or not to include more specific query params. |
133 | 133 | * @type string $activation_key Activation key to search for. |
134 | 134 | * @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). |
135 | 137 | * } |
136 | 138 | * @return array { |
137 | | * @type array $signups Located signups. |
| 139 | * @type array $signups Located signups. (IDs only if `fields` is set to `ids`.) |
138 | 140 | * @type int $total Total number of signups matching params. |
139 | 141 | * } |
140 | 142 | */ |
… |
… |
class BP_Signup { |
151 | 153 | 'include' => false, |
152 | 154 | 'activation_key' => '', |
153 | 155 | 'user_login' => '', |
| 156 | 'fields' => 'all', |
154 | 157 | ), |
155 | 158 | 'bp_core_signups_get_args' |
156 | 159 | ); |
… |
… |
class BP_Signup { |
213 | 216 | return array( 'signups' => false, 'total' => false ); |
214 | 217 | } |
215 | 218 | |
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 { |
219 | 223 | |
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 ); |
221 | 227 | |
222 | | $signup->id = intval( $signup->signup_id ); |
| 228 | foreach ( (array) $paged_signups as $key => $signup ) { |
223 | 229 | |
224 | | $signup->meta = ! empty( $signup->meta ) ? maybe_unserialize( $signup->meta ) : false; |
| 230 | $signup->id = intval( $signup->signup_id ); |
225 | 231 | |
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; |
230 | 233 | |
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 | } |
237 | 238 | |
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 | } |
240 | 245 | |
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; |
248 | 248 | |
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 | } |
254 | 262 | |
255 | | $paged_signups[ $key ] = $signup; |
| 263 | $paged_signups[ $key ] = $signup; |
| 264 | } |
256 | 265 | } |
257 | 266 | |
258 | 267 | unset( $sql['limit'] ); |
… |
… |
class BP_Signup { |
271 | 280 | $total_signups = $wpdb->get_var( apply_filters( 'bp_members_signups_count_query', join( ' ', $sql ), $sql, $args, $r ) ); |
272 | 281 | |
273 | 282 | return array( 'signups' => $paged_signups, 'total' => $total_signups ); |
274 | | |
275 | 283 | } |
276 | 284 | |
277 | 285 | /** |
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 { |
107 | 107 | |
108 | 108 | $ss = BP_Signup::get( array( |
109 | 109 | 'offset' => 1, |
| 110 | 'fields' => 'ids', |
110 | 111 | ) ); |
111 | 112 | |
112 | | $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 113 | $this->assertEquals( array( $s2 ), $ss['signups'] ); |
113 | 114 | } |
114 | 115 | |
115 | 116 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
122 | 123 | |
123 | 124 | $ss = BP_Signup::get( array( |
124 | 125 | 'number' => 2, |
| 126 | 'fields' => 'ids', |
125 | 127 | ) ); |
126 | 128 | |
127 | | $this->assertEquals( array( $s3, $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 129 | $this->assertEquals( array( $s3, $s2 ), $ss['signups'] ); |
128 | 130 | } |
129 | 131 | |
130 | 132 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
139 | 141 | |
140 | 142 | $ss = BP_Signup::get( array( |
141 | 143 | 'usersearch' => 'ghi', |
| 144 | 'fields' => 'ids', |
142 | 145 | ) ); |
143 | 146 | |
144 | | $this->assertEquals( array( $s1 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 147 | $this->assertEquals( array( $s1 ), $ss['signups'] ); |
145 | 148 | } |
146 | 149 | |
147 | 150 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
161 | 164 | $ss = BP_Signup::get( array( |
162 | 165 | 'orderby' => 'email', |
163 | 166 | 'number' => 3, |
| 167 | 'fields' => 'ids', |
164 | 168 | ) ); |
165 | 169 | |
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'] ); |
168 | 172 | } |
169 | 173 | |
170 | 174 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
185 | 189 | 'orderby' => 'email', |
186 | 190 | 'number' => 3, |
187 | 191 | 'order' => 'ASC', |
| 192 | 'fields' => 'ids', |
188 | 193 | ) ); |
189 | 194 | |
190 | | $this->assertEquals( array( $s2, $s1, $s3 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 195 | $this->assertEquals( array( $s2, $s1, $s3 ), $ss['signups'] ); |
191 | 196 | } |
192 | 197 | |
193 | 198 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
200 | 205 | |
201 | 206 | $ss = BP_Signup::get( array( |
202 | 207 | 'include' => array( $s1, $s3 ), |
| 208 | 'fields' => 'ids', |
203 | 209 | ) ); |
204 | 210 | |
205 | | $this->assertEquals( array( $s1, $s3 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 211 | $this->assertEquals( array( $s1, $s3 ), $ss['signups'] ); |
206 | 212 | } |
207 | 213 | |
208 | 214 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
221 | 227 | |
222 | 228 | $ss = BP_Signup::get( array( |
223 | 229 | 'activation_key' => 'bar', |
| 230 | 'fields' => 'ids', |
224 | 231 | ) ); |
225 | 232 | |
226 | | $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 233 | $this->assertEquals( array( $s2 ), $ss['signups'] ); |
227 | 234 | } |
228 | 235 | |
229 | 236 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
242 | 249 | |
243 | 250 | $ss = BP_Signup::get( array( |
244 | 251 | 'user_login' => 'zzzzfoo', |
| 252 | 'fields' => 'ids', |
245 | 253 | ) ); |
246 | 254 | |
247 | | $this->assertEquals( array( $s2 ), wp_list_pluck( $ss['signups'], 'signup_id' ) ); |
| 255 | $this->assertEquals( array( $s2 ), $ss['signups'] ); |
248 | 256 | } |
249 | 257 | |
250 | 258 | /** |
… |
… |
class BP_Tests_BP_Signup extends BP_UnitTestCase { |
365 | 373 | |
366 | 374 | $this->assertEqualSets( $blogs, array_keys( $blogs ) ); |
367 | 375 | } |
| 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 | } |
368 | 392 | } |