Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/17/2015 04:46:05 AM (6 years ago)
Author:
imath
Message:

Fix notice errors when an activity is generated for a post having no title.

Post types activities are using dynamic action strings when the activity is displayed in the stream and when the activity is saved into the database. In this particular case, once the post is published, we are "faking" an activity object to which we add two extra properties : the post_title and the post_url. To avoid switching blogs too many times, we are saving the post title into an activity meta. To know if we must build the action string for insert or display, we are checking the post_title property of the activity object. When a post is published without a title, the empty() check was not right. Changing for an isset() check prevents the notice errors.

props boonebgorges

Fixes #6119

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/blogs/activity.php

    r9366 r9369  
    311311
    312312    /**
     313     * @group activity_action
     314     * @group bp_blogs_format_activity_action_new_blog_post
     315     */
     316    public function test_bp_blogs_format_activity_action_new_blog_post_no_title() {
     317        if ( is_multisite() ) {
     318            return;
     319        }
     320
     321        $bp = buddypress();
     322        $activity_actions = $bp->activity->actions;
     323        $bp->activity->actions = new stdClass();
     324
     325        $u = $this->factory->user->create();
     326        $p = wp_insert_post( array(
     327            'post_author' => $u,
     328            'post_title'  => '', // no title: the object of the test
     329            'post_status' => 'publish',
     330            'post_content' => 'foo bar',
     331        ) );
     332
     333        $user_link = bp_core_get_userlink( $u );
     334        $blog_url = get_home_url();
     335        $post_url = add_query_arg( 'p', $p, trailingslashit( $blog_url ) );
     336        $post_link = '<a href="' . $post_url . '">(no title)</a>';
     337
     338        // Set activity actions
     339        bp_activity_get_actions();
     340
     341        $a_obj = bp_activity_get( array(
     342            'item_id'           => 1,
     343            'secondary_item_id' => $p,
     344        ) );
     345
     346        $expected = sprintf( '%s wrote a new post, %s', $user_link, $post_link );
     347
     348        $this->assertSame( $expected, $a_obj['activities'][0]->action );
     349
     350        // Reset activity actions
     351        $bp->activity->actions = $activity_actions;
     352        $bp->activity->track = array();
     353    }
     354
     355    /**
     356     * @group activity_action
     357     * @group bp_blogs_format_activity_action_new_blog_post
     358     */
     359    public function test_bp_blogs_format_activity_action_new_blog_post_updated_without_title() {
     360        if ( is_multisite() ) {
     361            return;
     362        }
     363
     364        $bp = buddypress();
     365        $activity_actions = $bp->activity->actions;
     366        $bp->activity->actions = new stdClass();
     367
     368        $u = $this->factory->user->create();
     369        $p = wp_insert_post( array(
     370            'post_author' => $u,
     371            'post_title'  => 'foo',
     372            'post_status' => 'publish',
     373            'post_content' => 'foo bar',
     374        ) );
     375
     376        $user_link  = bp_core_get_userlink( $u );
     377        $blog_url   = get_home_url();
     378        $post_url   = add_query_arg( 'p', $p, trailingslashit( $blog_url ) );
     379        $post_title = get_the_title( $p );
     380        $post_link  = '<a href="' . $post_url . '">' . $post_title . '</a>';
     381
     382        // Set actions
     383        bp_activity_get_actions();
     384
     385        $a_obj = bp_activity_get( array(
     386            'item_id'           => 1,
     387            'secondary_item_id' => $p,
     388        ) );
     389
     390        $expected = sprintf( '%s wrote a new post, %s', $user_link, $post_link );
     391
     392        $this->assertSame( $expected, $a_obj['activities'][0]->action );
     393
     394        // Update the post by removing its title
     395        wp_update_post( array(
     396            'ID'         => $p,
     397            'post_title' => '',
     398        ) );
     399
     400        // we now expect the (no title) post link
     401        $post_link = '<a href="' . $post_url . '">(no title)</a>';
     402        $expected = sprintf( '%s wrote a new post, %s', $user_link, $post_link );
     403
     404        $a_obj = bp_activity_get( array(
     405            'item_id'           => 1,
     406            'secondary_item_id' => $p,
     407        ) );
     408
     409        $this->assertSame( $expected, $a_obj['activities'][0]->action );
     410
     411        // Reset activity actions
     412        $bp->activity->actions = $activity_actions;
     413        $bp->activity->track = array();
     414    }
     415
     416    /**
    313417     * Dopey passthrough method so we can check that the correct values
    314418     * are being passed to the filter
Note: See TracChangeset for help on using the changeset viewer.