Changeset 13149
- Timestamp:
- 11/14/2021 03:16:38 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-activity/bp-activity-cache.php
r11101 r13149 48 48 wp_cache_delete( $activity->id, 'bp_activity' ); 49 49 wp_cache_delete( 'bp_activity_sitewide_front', 'bp' ); 50 51 // Clear the comments cache for the parent activity ID. 52 if ( 'activity_comment' === $activity->type ) { 53 wp_cache_delete( $activity->item_id, 'bp_activity_comments' ); 54 } 50 55 } 51 56 add_action( 'bp_activity_after_save', 'bp_activity_clear_cache_for_activity' ); -
trunk/src/bp-activity/bp-activity-functions.php
r13146 r13149 3596 3596 wp_cache_delete( 'bp_activity_sitewide_front', 'bp' ); 3597 3597 3598 if ( 'activity_comment' === $activity->type ) { 3599 $activity_id = $activity->item_id; 3600 } else { 3601 $activity_id = $activity->id; 3602 } 3603 3598 3604 // Clear the activity comment cache for this activity item. 3599 wp_cache_delete( $activity ->id, 'bp_activity_comments' );3605 wp_cache_delete( $activity_id, 'bp_activity_comments' ); 3600 3606 3601 3607 // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity. … … 3643 3649 wp_cache_delete( 'bp_activity_sitewide_front', 'bp' ); 3644 3650 3651 if ( 'activity_comment' === $activity->type ) { 3652 $activity_id = $activity->item_id; 3653 } else { 3654 $activity_id = $activity->id; 3655 } 3656 3645 3657 // Clear the activity comment cache for this activity item. 3646 wp_cache_delete( $activity ->id, 'bp_activity_comments' );3658 wp_cache_delete( $activity_id, 'bp_activity_comments' ); 3647 3659 3648 3660 // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity. -
trunk/tests/phpunit/testcases/activity/cache.php
r11737 r13149 359 359 $this->assertEqualSets( array( $activities[0] ), wp_list_pluck( $q2['activities'], 'id' ) ); 360 360 } 361 362 /** 363 * @ticket BP8296 364 */ 365 public function test_activity_comments_cache_should_be_cleared_when_parent_activity_marked_as_spam() { 366 $u1 = self::factory()->user->create(); 367 $u2 = self::factory()->user->create(); 368 369 $activity = self::factory()->activity->create( 370 array( 371 'component' => buddypress()->activity->id, 372 'type' => 'activity_update', 373 'user_id' => $u1, 374 'content' => 'bar', 375 ) 376 ); 377 378 $comment = bp_activity_new_comment( 379 array( 380 'activity_id' => $activity, 381 'skip_notification' => true, 382 'user_id' => $u2, 383 'content' => 'foo', 384 ) 385 ); 386 387 $activities = bp_activity_get( 388 array( 389 'display_comments' => true, 390 ) 391 ); 392 393 $cached_ids = wp_list_pluck( wp_cache_get( $activity, 'bp_activity_comments' ), 'content', 'id' ); 394 $this->assertTrue( 'foo' === $cached_ids[ $comment ] ); 395 396 $activity_obj = new BP_Activity_Activity( $activity ); 397 398 // An activity is always saved after being marked as spam. 399 bp_activity_mark_as_spam( $activity_obj ); 400 $activity_obj->save(); 401 402 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The activity comments cache should be cleared when an activity has been marked as spam' ); 403 } 404 405 /** 406 * @ticket BP8296 407 */ 408 public function test_activity_comments_cache_should_be_cleared_when_activity_comment_marked_as_spam() { 409 $u1 = self::factory()->user->create(); 410 $u2 = self::factory()->user->create(); 411 412 $activity = self::factory()->activity->create( 413 array( 414 'component' => buddypress()->activity->id, 415 'type' => 'activity_update', 416 'user_id' => $u1, 417 'content' => 'foo', 418 ) 419 ); 420 421 $comment = bp_activity_new_comment( 422 array( 423 'activity_id' => $activity, 424 'skip_notification' => true, 425 'user_id' => $u2, 426 'content' => 'bar', 427 ) 428 ); 429 430 $activities = bp_activity_get( 431 array( 432 'display_comments' => true, 433 ) 434 ); 435 436 $cached_ids = wp_list_pluck( wp_cache_get( $activity, 'bp_activity_comments' ), 'content', 'id' ); 437 $this->assertTrue( 'bar' === $cached_ids[ $comment ] ); 438 439 $comment_obj = new BP_Activity_Activity( $comment ); 440 441 // An activity is always saved after being marked as spam. 442 bp_activity_mark_as_spam( $comment_obj ); 443 $comment_obj->save(); 444 445 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The parent activity comments cache should be cleared when an activity comment has been marked as spam' ); 446 } 447 448 /** 449 * @ticket BP8296 450 */ 451 public function test_activity_comments_cache_should_be_cleared_when_parent_activity_marked_as_ham() { 452 $u1 = self::factory()->user->create(); 453 $u2 = self::factory()->user->create(); 454 455 $activity = self::factory()->activity->create( 456 array( 457 'component' => buddypress()->activity->id, 458 'type' => 'activity_update', 459 'user_id' => $u1, 460 'content' => 'bar', 461 ) 462 ); 463 464 $comment = bp_activity_new_comment( 465 array( 466 'activity_id' => $activity, 467 'skip_notification' => true, 468 'user_id' => $u2, 469 'content' => 'foo', 470 ) 471 ); 472 473 $activities = bp_activity_get( 474 array( 475 'display_comments' => true, 476 ) 477 ); 478 479 $activity_obj = new BP_Activity_Activity( $activity ); 480 $activity_obj->is_spam = 1; 481 $activity_obj->save(); 482 483 // An activity is always saved after being marked as spam. 484 bp_activity_mark_as_ham( $activity_obj ); 485 $activity_obj->save(); 486 487 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The activity comments cache should be cleared when an activity has been marked as ham' ); 488 } 489 490 /** 491 * @ticket BP8296 492 */ 493 public function test_activity_comments_cache_should_be_cleared_when_activity_comment_marked_as_ham() { 494 $u1 = self::factory()->user->create(); 495 $u2 = self::factory()->user->create(); 496 497 $activity = self::factory()->activity->create( 498 array( 499 'component' => buddypress()->activity->id, 500 'type' => 'activity_update', 501 'user_id' => $u1, 502 'content' => 'foo', 503 ) 504 ); 505 506 $comment = bp_activity_new_comment( 507 array( 508 'activity_id' => $activity, 509 'skip_notification' => true, 510 'user_id' => $u2, 511 'content' => 'bar', 512 ) 513 ); 514 515 $activities = bp_activity_get( 516 array( 517 'display_comments' => true, 518 ) 519 ); 520 521 $comment_obj = new BP_Activity_Activity( $comment ); 522 $comment_obj->is_spam = 1; 523 $comment_obj->save(); 524 525 // An activity is always saved after being marked as spam. 526 bp_activity_mark_as_ham( $comment_obj ); 527 $comment_obj->save(); 528 529 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The parent activity comments cache should be cleared when an activity comment has been marked as ham' ); 530 } 531 532 /** 533 * @ticket BP8296 534 */ 535 public function test_activity_comments_cache_should_be_cleared_when_activity_comment_has_been_updated() { 536 $u1 = self::factory()->user->create(); 537 $u2 = self::factory()->user->create(); 538 539 $activity = self::factory()->activity->create( 540 array( 541 'component' => buddypress()->activity->id, 542 'type' => 'activity_update', 543 'user_id' => $u1, 544 'content' => 'foo', 545 ) 546 ); 547 548 $comment = bp_activity_new_comment( 549 array( 550 'activity_id' => $activity, 551 'skip_notification' => true, 552 'user_id' => $u2, 553 'content' => 'bar', 554 ) 555 ); 556 557 $activities = bp_activity_get( 558 array( 559 'display_comments' => true, 560 ) 561 ); 562 563 $comment_obj = new BP_Activity_Activity( $comment ); 564 $comment_obj->content = 'foo'; 565 $comment_obj->save(); 566 567 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The parent activity comments cache should be cleared when an activity comment has been updated' ); 568 } 569 570 /** 571 * @ticket BP8296 572 */ 573 public function test_activity_comments_cache_should_be_cleared_when_activity_comment_has_been_deleted() { 574 $u1 = self::factory()->user->create(); 575 $u2 = self::factory()->user->create(); 576 577 $activity = self::factory()->activity->create( 578 array( 579 'component' => buddypress()->activity->id, 580 'type' => 'activity_update', 581 'user_id' => $u1, 582 'content' => 'foo', 583 ) 584 ); 585 586 $comment = bp_activity_new_comment( 587 array( 588 'activity_id' => $activity, 589 'skip_notification' => true, 590 'user_id' => $u2, 591 'content' => 'bar', 592 ) 593 ); 594 595 $activities = bp_activity_get( 596 array( 597 'display_comments' => true, 598 ) 599 ); 600 601 bp_activity_delete_comment( $activity, $comment ); 602 603 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The parent activity comments cache should be cleared when an activity comment has been deleted' ); 604 } 605 606 /** 607 * @ticket BP8296 608 */ 609 public function test_activity_comments_cache_should_be_cleared_when_activity_comment_has_been_added() { 610 $u1 = self::factory()->user->create(); 611 $u2 = self::factory()->user->create(); 612 613 $activity = self::factory()->activity->create( 614 array( 615 'component' => buddypress()->activity->id, 616 'type' => 'activity_update', 617 'user_id' => $u1, 618 'content' => 'foo', 619 ) 620 ); 621 622 $c1 = bp_activity_new_comment( 623 array( 624 'activity_id' => $activity, 625 'skip_notification' => true, 626 'user_id' => $u2, 627 'content' => 'bar', 628 ) 629 ); 630 631 $activities = bp_activity_get( 632 array( 633 'display_comments' => true, 634 ) 635 ); 636 637 $c2 = bp_activity_new_comment( 638 array( 639 'activity_id' => $activity, 640 'skip_notification' => true, 641 'user_id' => $u1, 642 'content' => 'taz', 643 ) 644 ); 645 646 $this->assertFalse( wp_cache_get( $activity, 'bp_activity_comments' ), 'The parent activity comments cache should be cleared when a new activity comment has been added' ); 647 } 361 648 }
Note: See TracChangeset
for help on using the changeset viewer.