Changeset 12873
- Timestamp:
- 03/23/2021 11:31:33 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-core/classes/class-bp-invitation-manager.php
r12793 r12873 140 140 // "Send" the invite if necessary. 141 141 if ( $invite_id && $r['send_invite'] ) { 142 $sent = $this->send_invitation_by_id( $invite_id );142 $sent = $this->send_invitation_by_id( $invite_id, $r ); 143 143 if ( ! $sent ) { 144 144 return false; … … 155 155 * @access public 156 156 * 157 * @param int $invitation_id ID of invitation to send. 157 * @param int $invitation_id ID of invitation to send. 158 * @param array $args See BP_Invitation::mark_sent(). 158 159 * 159 160 * @return int|bool The number of rows updated, or false on error. 160 161 */ 161 public function send_invitation_by_id( $invitation_id = 0 ) {162 public function send_invitation_by_id( $invitation_id = 0, $args = array() ) { 162 163 $updated = false; 163 164 … … 197 198 $this->run_send_action( $invitation ); 198 199 199 $updated = BP_Invitation::mark_sent( $invitation->id );200 $updated = BP_Invitation::mark_sent( $invitation->id, $args ); 200 201 201 202 return $updated; … … 306 307 * @access public 307 308 * 308 * @param int $request_id ID of request to send. 309 * @param int $request_id ID of request to send. 310 * @param array $args See BP_Invitation::mark_sent(). 309 311 * 310 312 * @return int|bool The number of rows updated, or false on error. 311 313 */ 312 public function send_request_notification_by_id( $request_id = 0 ) {314 public function send_request_notification_by_id( $request_id = 0, $args = array() ) { 313 315 $updated = false; 314 316 … … 326 328 * A sent invitation + a request = acceptance. 327 329 */ 328 $ args = array(330 $invite_args = array( 329 331 'user_id' => $request->user_id, 330 332 'invitee_email' => $request->invitee_email, … … 333 335 'invite_sent' => 'sent' 334 336 ); 335 $invites = $this->invitation_exists( $ args );337 $invites = $this->invitation_exists( $invite_args ); 336 338 337 339 if ( ! empty( $invites ) ) { 338 340 // Accept the request. 339 return $this->accept_invitation( $ args );341 return $this->accept_invitation( $invite_args ); 340 342 } 341 343 … … 343 345 $this->run_send_action( $request ); 344 346 345 $updated = BP_Invitation::mark_sent( $request->id );347 $updated = BP_Invitation::mark_sent( $request->id, $args ); 346 348 347 349 return $updated; … … 453 455 * accepted update/where arguments. 454 456 * 455 * @param array $update_args Associative array of fields to update, 456 * and the values to update them to. Of the format 457 * array( 'user_id' => 4 ) 457 * @param array $args { 458 * Invitation characteristics. Some basic info is required to accept an invitation, 459 * because we'll need to accept all similar invitations and requests. 460 * 461 * @type int $user_id User ID of the invitee. 462 * Either 'user_id' or 'invitee_email' is required. 463 * @type string $invitee_email Email address of the invitee. 464 * Either 'user_id' or 'invitee_email' is required. 465 * @type int $item_id Item ID of the invitation to accept. 466 * @type int $secondary_item_id Optional. Secondary item ID if needed. 467 * @type string $invite_sent Optional. Defaults to only allowing the 468 * acceptance of sent invitations. 469 * @type string $date_modified Modified time in 'Y-m-d h:i:s' format, GMT. 470 * Defaults to current time if not specified. 471 * } 458 472 * 459 473 * @return int|bool Number of rows updated on success, false on failure. … … 461 475 public function accept_invitation( $args = array() ) { 462 476 463 /*464 * Some basic info is required to accept an invitation,465 * because we'll need to mark all similar invitations and requests.466 * The following, except the optional 'secondary_item_id', are required.467 */468 477 $r = bp_parse_args( $args, array( 469 478 'user_id' => 0, … … 472 481 'secondary_item_id' => null, 473 482 'invite_sent' => 'sent', 483 'date_modified' => bp_core_current_time(), 474 484 ), 'accept_invitation' ); 475 485 $r['class'] = $this->class_name; … … 502 512 * accepted update/where arguments. 503 513 * 504 * @param array $update_args Associative array of fields to update, 505 * and the values to update them to. Of the format 506 * array( 'user_id' => 4 ) 514 * @param array $args { 515 * Invitation characteristics. Some basic info is required to accept an invitation, 516 * because we'll need to accept all similar invitations and requests. 517 * 518 * @type int $user_id User ID of the invitee. 519 * @type int $item_id Item ID of the invitation to accept. 520 * @type int $secondary_item_id Optional. Secondary item ID if needed. 521 * @type string $date_modified Modified time in 'Y-m-d h:i:s' format, GMT. 522 * Defaults to current time if not specified. 523 * } 507 524 * 508 525 * @return bool Number of rows updated on success, false on failure. 509 526 */ 510 527 public function accept_request( $args = array() ) { 511 /* 512 * Some basic info is required to accept an invitation, 513 * because we'll need to accept all similar invitations and requests. 514 * The following, except the optional 'secondary_item_id', are required. 515 */ 528 516 529 $r = bp_parse_args( $args, array( 517 530 'user_id' => 0, 518 531 'item_id' => null, 519 532 'secondary_item_id' => null, 533 'date_modified' => bp_core_current_time(), 520 534 ), 'accept_request' ); 521 535 $r['class'] = $this->class_name; … … 619 633 * @since 5.0.0 620 634 * 621 * @param int $id The ID of the invitation to mark as sent. 635 * @see BP_Invitation::mark_accepted() 636 * for a description of arguments. 622 637 * @return bool True on success, false on failure. 623 638 */ 624 public function mark_accepted_by_id( $id ) {625 return BP_Invitation::mark_accepted( $id );639 public function mark_accepted_by_id( $id, $args ) { 640 return BP_Invitation::mark_accepted( $id, $args ); 626 641 } 627 642 -
trunk/src/bp-core/classes/class-bp-invitation.php
r12867 r12873 639 639 $where_clauses['format'][] = '%d'; 640 640 } 641 } 642 643 // date_modified 644 if ( ! empty( $args['date_modified'] ) ) { 645 $where_clauses['data']['date_modified'] = $args['date_modified']; 646 $where_clauses['format'][] = '%s'; 641 647 } 642 648 … … 988 994 * @since 5.0.0 989 995 * 990 * @param int $id The ID of the invitation to mark as sent. 991 */ 992 public static function mark_sent( $id = 0 ) { 996 * @param int $id The ID of the invitation to mark as sent. 997 * @param array $args { 998 * Optional. Invitation characteristics used 999 * to override certain sending behaviors. 1000 * 1001 * @type string $date_modified Modified time in 'Y-m-d h:i:s' format, GMT. 1002 * Defaults to current time if not specified. 1003 * } 1004 * @return int|bool The number of rows updated, or false on error. 1005 */ 1006 public static function mark_sent( $id = 0, $args = array() ) { 993 1007 994 1008 if ( ! $id ) { … … 998 1012 // Values to be updated. 999 1013 $update_args = array( 1000 'invite_sent' => 'sent', 1014 'invite_sent' => 'sent', 1015 'date_modified' => bp_core_current_time(), 1001 1016 ); 1017 // Respect a specified `date-modified`. 1018 if ( ! empty( $args['date_modified'] ) ) { 1019 $update_args['date_modified'] = $args['date_modified']; 1020 } 1002 1021 1003 1022 // WHERE clauses. … … 1015 1034 * @since 5.0.0 1016 1035 * 1017 * @param array $args See BP_Invitation::update(). 1036 * @param array $args See BP_Invitation::update(). 1037 * @return int|bool The number of rows updated, or false on error. 1018 1038 */ 1019 1039 public static function mark_sent_by_data( $args ) { … … 1021 1041 // Values to be updated. 1022 1042 $update_args = array( 1023 'invite_sent' => 'sent', 1043 'invite_sent' => 'sent', 1044 'date_modified' => bp_core_current_time(), 1024 1045 ); 1046 // Respect a specified `date-modified`. 1047 if ( ! empty( $args['date_modified'] ) ) { 1048 $update_args['date_modified'] = $args['date_modified']; 1049 } 1025 1050 1026 1051 return self::update( $update_args, $args ); … … 1034 1059 * @since 5.0.0 1035 1060 * 1036 * @param int $id The ID of the invitation to mark as sent. 1037 */ 1038 public static function mark_accepted( $id = 0 ) { 1061 * @param int $id The ID of the invitation to mark as sent. 1062 * @param array $args { 1063 * Optional. Invitation characteristics used 1064 * to override certain sending behaviors. 1065 * 1066 * @type string $date_modified Modified time in 'Y-m-d h:i:s' format, GMT. 1067 * Defaults to current time if not specified. 1068 * } 1069 * @return int|bool The number of rows updated, or false on error. 1070 */ 1071 public static function mark_accepted( $id = 0, $args = array() ) { 1039 1072 1040 1073 if ( ! $id ) { … … 1044 1077 // Values to be updated. 1045 1078 $update_args = array( 1046 'accepted' => 'accepted', 1079 'accepted' => 'accepted', 1080 'date_modified' => bp_core_current_time(), 1047 1081 ); 1082 // Respect a specified `date-modified`. 1083 if ( ! empty( $args['date_modified'] ) ) { 1084 $update_args['date_modified'] = $args['date_modified']; 1085 } 1048 1086 1049 1087 // WHERE clauses. … … 1061 1099 * @since 5.0.0 1062 1100 * 1063 * @param array $args See BP_Invitation::update(). 1101 * @param array $args See BP_Invitation::update(). 1102 * @return int|bool The number of rows updated, or false on error. 1064 1103 */ 1065 1104 public static function mark_accepted_by_data( $args ) { … … 1067 1106 // Values to be updated. 1068 1107 $update_args = array( 1069 'accepted' => 'accepted', 1108 'accepted' => 'accepted', 1109 'date_modified' => bp_core_current_time(), 1070 1110 ); 1111 // Respect a specified `date-modified`. 1112 if ( ! empty( $args['date_modified'] ) ) { 1113 $update_args['date_modified'] = $args['date_modified']; 1114 } 1071 1115 1072 1116 return self::update( $update_args, $args ); -
trunk/src/bp-groups/bp-groups-functions.php
r12852 r12873 2045 2045 // If a new request was created, send the emails. 2046 2046 if ( $request_id && is_int( $request_id ) ) { 2047 $invites_class->send_request_notification_by_id( $request_id );2047 $invites_class->send_request_notification_by_id( $request_id, $r ); 2048 2048 $admins = groups_get_group_admins( $r['group_id'] ); 2049 2049 -
trunk/tests/phpunit/testcases/core/invitations.php
r12866 r12873 333 333 } 334 334 335 public function test_bp_invitations_add_request_with_date_modified() { 336 $old_current_user = get_current_user_id(); 337 338 $u1 = $this->factory->user->create(); 339 $this->set_current_user( $u1 ); 340 341 $invites_class = new BPTest_Invitation_Manager_Extension(); 342 343 $time = gmdate( 'Y-m-d H:i:s', time() - 100 ); 344 $args = array( 345 'user_id' => $u1, 346 'item_id' => 7, 347 'date_modified' => $time, 348 ); 349 $r1 = $invites_class->add_request( $args ); 350 351 $req = new BP_Invitation( $r1 ); 352 $this->assertEquals( $time, $req->date_modified ); 353 354 $this->set_current_user( $old_current_user ); 355 } 356 357 public function test_bp_invitations_add_invite_with_date_modified() { 358 $old_current_user = get_current_user_id(); 359 360 $u1 = $this->factory->user->create(); 361 $u2 = $this->factory->user->create(); 362 $this->set_current_user( $u1 ); 363 364 $invites_class = new BPTest_Invitation_Manager_Extension(); 365 $time = gmdate( 'Y-m-d H:i:s', time() - 100 ); 366 367 // Create an invitation. 368 $invite_args = array( 369 'user_id' => $u2, 370 'inviter_id' => $u1, 371 'item_id' => 1, 372 'send_invite' => 1, 373 'date_modified' => $time, 374 ); 375 $i1 = $invites_class->add_invitation( $invite_args ); 376 377 $inv = new BP_Invitation( $i1 ); 378 $this->assertEquals( $time, $inv->date_modified ); 379 380 $this->set_current_user( $old_current_user ); 381 } 382 335 383 }
Note: See TracChangeset
for help on using the changeset viewer.