Exemple #1
0
 /**
  * @group mentions
  * @group bp_activity_at_name_filter
  */
 public function test_bp_activity_at_name_filter()
 {
     $u1 = $this->factory->user->create(array('user_login' => 'foobarbaz', 'user_nicename' => 'foobarbaz'));
     $u2 = $this->factory->user->create(array('user_login' => 'foo2', 'user_nicename' => 'foo2'));
     $u1_mention_name = bp_activity_get_user_mentionname($u1);
     $u1_domain = bp_core_get_user_domain($u1);
     $u2_mention_name = bp_activity_get_user_mentionname($u2);
     $u2_domain = bp_core_get_user_domain($u2);
     // mentions normal text should be replaced
     $at_name_in_text = sprintf('Hello @%s', $u1_mention_name);
     $at_name_in_text_final = "Hello <a href='" . $u1_domain . "' rel='nofollow'>@{$u1_mention_name}</a>";
     $this->assertEquals($at_name_in_text_final, bp_activity_at_name_filter($at_name_in_text));
     // mentions inside links sholudn't be replaced
     // inside href
     $at_name_in_mailto = sprintf("Send messages to <a href='mail@%s.com'>Foo Bar Baz</a>", $u1_mention_name);
     $at_name_in_mailto_final = sprintf("Send messages to <a href='mail@%s.com'>Foo Bar Baz</a>", $u1_mention_name);
     $this->assertEquals($at_name_in_mailto_final, bp_activity_at_name_filter($at_name_in_mailto));
     // inside linked text
     $at_name_in_link = sprintf('<a href="https://twitter.com/%1$s">@%1$s</a>', $u1_mention_name);
     $at_name_in_link_final = sprintf('<a href="https://twitter.com/%1$s">@%1$s</a>', $u1_mention_name);
     $this->assertEquals($at_name_in_link_final, bp_activity_at_name_filter($at_name_in_link));
     // Don't link non-existent users
     $text = "Don't link @non @existent @users";
     $this->assertSame($text, bp_activity_at_name_filter($text));
     // Don't link the domain name of the site
     preg_match('|https?://([^/]+)|', home_url(), $matches);
     if (!empty($matches[1])) {
         $text = $matches[1] . " Don't link the domain name " . $matches[1];
     }
     $this->assertSame($text, bp_activity_at_name_filter($text));
     // Multiples
     $at_name_in_mailto = sprintf("Send messages to @%s <a href='mail@%s.com'>Foo Bar Baz</a>. Please CC <a href='http://twitter.com/foo2'>@foo2</a>.", $u1_mention_name, $u1_mention_name, $u2_mention_name, $u2_mention_name);
     $at_name_in_mailto_final = sprintf('Send messages to <a href=\'%s\' rel=\'nofollow\'>@%s</a> <a href=\'mail@%s.com\'>Foo Bar Baz</a>. Please CC <a href=\'http://twitter.com/%s\'>@%s</a>.', $u1_domain, $u1_mention_name, $u1_mention_name, $u2_mention_name, $u2_mention_name);
     $this->assertEquals($at_name_in_mailto_final, bp_activity_at_name_filter($at_name_in_mailto));
 }
 /**
  * Creates two notifications for $u1, one of which is for mentions
  */
 protected function create_notifications()
 {
     $u1_mentionname = bp_activity_get_user_mentionname($this->u1);
     $this->a1 = $this->factory->activity->create(array('user_id' => $this->u2, 'component' => buddypress()->activity->id, 'type' => 'activity_update', 'content' => sprintf('Hello! @%s', $u1_mentionname)));
     $u2_mentionname = bp_activity_get_user_mentionname($this->u2);
     $this->a2 = $this->factory->activity->create(array('user_id' => $this->u1, 'component' => buddypress()->activity->id, 'type' => 'activity_update', 'content' => sprintf('Hello! @%s', $u2_mentionname)));
 }
Exemple #3
0
 /**
  * @group scope
  * @group filter_query
  * @group BP_Activity_Query
  */
 function test_bp_has_activities_friends_and_mentions_scope()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     $u3 = $this->factory->user->create();
     // user 1 becomes friends with user 2
     friends_add_friend($u1, $u2, true);
     $now = time();
     // friend status update
     $a1 = $this->factory->activity->create(array('user_id' => $u2, 'type' => 'activity_update', 'recorded_time' => date('Y-m-d H:i:s', $now)));
     // mentioned item by non-friend
     $mention_username = '******' . bp_activity_get_user_mentionname($u1);
     $a2 = $this->factory->activity->create(array('user_id' => $u3, 'component' => 'activity', 'type' => 'activity_update', 'content' => "{$mention_username} - Oy!", 'recorded_time' => date('Y-m-d H:i:s', $now - 100)));
     // misc activity items
     $this->factory->activity->create(array('user_id' => $u1, 'component' => 'blogs', 'item_id' => 1, 'type' => 'new_blog_post', 'recorded_time' => date('Y-m-d H:i:s', $now - 100)));
     $this->factory->activity->create(array('user_id' => $u3, 'component' => 'activity', 'type' => 'activity_update', 'recorded_time' => date('Y-m-d H:i:s', $now - 100)));
     $this->factory->activity->create(array('user_id' => $u3, 'component' => 'groups', 'item_id' => 324, 'type' => 'activity_update', 'recorded_time' => date('Y-m-d H:i:s', $now - 100)));
     global $activities_template;
     // grab activities from multiple scopes
     bp_has_activities(array('user_id' => $u1, 'scope' => 'mentions,friends'));
     // assert!
     $this->assertEqualSets(array($a1, $a2), wp_list_pluck($activities_template->activities, 'id'));
     // clean up!
     $activities_template = null;
 }
/**
 * Set up activity arguments for use with the 'favorites' scope.
 *
 * @since 2.2.0
 *
 * @param array $retval Empty array by default.
 * @param array $filter Current activity arguments.
 * @return array $retval
 */
function bp_activity_filter_mentions_scope($retval = array(), $filter = array())
{
    // Are mentions disabled?
    if (!bp_activity_do_mentions()) {
        return $retval;
    }
    // Determine the user_id.
    if (!empty($filter['user_id'])) {
        $user_id = $filter['user_id'];
    } else {
        $user_id = bp_displayed_user_id() ? bp_displayed_user_id() : bp_loggedin_user_id();
    }
    // Should we show all items regardless of sitewide visibility?
    $show_hidden = array();
    if (!empty($user_id) && $user_id !== bp_loggedin_user_id()) {
        $show_hidden = array('column' => 'hide_sitewide', 'value' => 0);
    }
    $retval = array('relation' => 'AND', array('column' => 'content', 'compare' => 'LIKE', 'value' => '@' . bp_activity_get_user_mentionname($user_id) . '<'), $show_hidden, 'override' => array('search_terms' => false, 'display_comments' => 'stream', 'filter' => array('user_id' => 0), 'show_hidden' => true));
    return $retval;
}
/**
 * Get the mentionname for the displayed user.
 *
 * @since BuddyPress (1.9.0)
 *
 * @return string Mentionname for the displayed user, if available.
 */
function bp_get_displayed_user_mentionname()
{
    /**
     * Filters the mentionname for the displayed user.
     *
     * @since BuddyPress (1.9.0)
     *
     * @param string $value The mentionanme for the displayed user.
     */
    return apply_filters('bp_get_displayed_user_mentionname', bp_activity_get_user_mentionname(bp_displayed_user_id()));
}
Exemple #6
0
/**
 * Get the mentionname for the displayed user.
 *
 * @since BuddyPress (1.9.0)
 *
 * @return string Mentionname for the displayed user, if available.
 */
function bp_get_displayed_user_mentionname()
{
    return apply_filters('bp_get_displayed_user_mentionname', bp_activity_get_user_mentionname(bp_displayed_user_id()));
}
Exemple #7
0
 /**
  * @group bp_activity_get_user_mentionname
  */
 public function test_bp_activity_get_user_mentionname_compatibilitymode_on()
 {
     add_filter('bp_is_username_compatibility_mode', '__return_true');
     $u1 = $this->factory->user->create(array('user_login' => 'foo bar baz', 'user_nicename' => 'foo-bar-baz'));
     $u2 = $this->factory->user->create(array('user_login' => 'foo.bar.baz', 'user_nicename' => 'foo-bar-baz'));
     $this->assertEquals('foo-bar-baz', bp_activity_get_user_mentionname($u1));
     $this->assertEquals('foo.bar.baz', bp_activity_get_user_mentionname($u2));
     remove_filter('bp_is_username_compatibility_mode', '__return_true');
 }
 /**
  * Sets a custom <blockquote> for our oEmbed fallback HTML.
  *
  * @since 2.6.0
  *
  * @param  int $item_id The activity ID.
  * @return string
  */
 protected function set_fallback_html($item_id)
 {
     $activity = new BP_Activity_Activity($item_id);
     $mentionname = bp_activity_do_mentions() ? ' (@' . bp_activity_get_user_mentionname($activity->user_id) . ')' : '';
     $date = date_i18n(get_option('date_format'), strtotime($activity->date_recorded));
     // Make sure we can use some activity functions that depend on the loop.
     $GLOBALS['activities_template'] = new stdClass();
     $GLOBALS['activities_template']->activity = $activity;
     // 'wp-embedded-content' CSS class is necessary due to how the embed JS works.
     $blockquote = sprintf('<blockquote class="wp-embedded-content bp-activity-item">%1$s%2$s %3$s</blockquote>', bp_activity_get_embed_excerpt($activity->content), '- ' . bp_core_get_user_displayname($activity->user_id) . $mentionname, '<a href="' . esc_url(bp_activity_get_permalink($item_id)) . '">' . $date . '</a>');
     // Clean up.
     unset($GLOBALS['activities_template']);
     /**
      * Filters the fallback HTML used when embedding a BP activity item.
      *
      * @since 2.6.0
      *
      * @param string               $blockquote Current fallback HTML
      * @param BP_Activity_Activity $activity   Activity object
      */
     return apply_filters('bp_activity_embed_fallback_html', $blockquote, $activity);
 }