Activity::generate_item_details( $r )
Generate item details.
Source Source
File: cli/src/activity.php
protected function generate_item_details( $r ) { global $wpdb; $bp = buddypress(); switch ( $r['type'] ) { case 'activity_update': if ( empty( $r['user-id'] ) ) { $r['user-id'] = $this->get_random_user_id(); } // Make group updates look more like actual group updates. // i.e. give them links to their groups. if ( 'groups' === $r['component'] ) { if ( empty( $r['item-id'] ) ) { WP_CLI::error( 'No group found by that ID.' ); } // get the group. $group_obj = groups_get_group( array( 'group_id' => $r['item-id'], ) ); // make sure such a group exists. if ( empty( $group_obj->id ) ) { WP_CLI::error( 'No group found by that slug or id.' ); } // stolen from groups_join_group. $r['action'] = sprintf( '%1$s posted an update in the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . bp_get_group_permalink( $group_obj ) . '">' . esc_attr( $group_obj->name ) . '</a>' ); } else { // old way, for some other kind of update. $r['action'] = sprintf( '%s posted an update', bp_core_get_userlink( $r['user-id'] ) ); } if ( empty( $r['content'] ) ) { $r['content'] = $this->generate_random_text(); } $r['primary-link'] = bp_core_get_userlink( $r['user-id'] ); break; case 'activity_comment': if ( empty( $r['user-id'] ) ) { $r['user-id'] = $this->get_random_user_id(); } $parent_item = $wpdb->get_row( "SELECT * FROM {$bp->activity->table_name} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared if ( \is_object( $parent_item ) ) { if ( 'activity_comment' === $parent_item->type ) { $r['item-id'] = $parent_item->id; $r['secondary-item-id'] = $parent_item->secondary_item_id; } else { $r['item-id'] = $parent_item->id; } } $r['action'] = sprintf( '%s posted a new activity comment', bp_core_get_userlink( $r['user-id'] ) ); $r['content'] = $this->generate_random_text(); $r['primary-link'] = bp_core_get_userlink( $r['user-id'] ); break; case 'new_blog': case 'new_blog_post': case 'new_blog_comment': if ( ! bp_is_active( 'blogs' ) ) { return $r; } if ( is_multisite() ) { $r['item-id'] = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared } else { $r['item-id'] = 1; } // Need blog content for posts/comments. if ( 'new_blog_post' === $r['type'] || 'new_blog_comment' === $r['type'] ) { if ( is_multisite() ) { switch_to_blog( $r['item-id'] ); } $comment_info = $wpdb->get_results( "SELECT comment_id, comment_post_id FROM {$wpdb->comments} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $comment_id = $comment_info[0]->comment_id; $comment = get_comment( $comment_id ); $post_id = $comment_info[0]->comment_post_id; $post = get_post( $post_id ); if ( is_multisite() ) { restore_current_blog(); } } // new_blog. if ( 'new_blog' === $r['type'] ) { if ( '' === $r['user-id'] ) { $r['user-id'] = $this->get_random_user_id(); } if ( ! $r['action'] ) { $r['action'] = sprintf( '%s created the site %s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . get_home_url( $r['item-id'] ) . '">' . esc_attr( get_blog_option( $r['item-id'], 'blogname' ) ) . '</a>' ); } if ( ! $r['primary-link'] ) { $r['primary-link'] = get_home_url( $r['item-id'] ); } // new_blog_post. } elseif ( 'new_blog_post' === $r['type'] ) { if ( '' === $r['user-id'] ) { $r['user-id'] = $post->post_author; } if ( '' === $r['primary-link'] ) { $r['primary-link'] = add_query_arg( 'p', $post->ID, trailingslashit( get_home_url( $r['item-id'] ) ) ); } if ( '' === $r['action'] ) { $r['action'] = sprintf( '%1$s wrote a new post, %2$s', bp_core_get_userlink( (int) $post->post_author ), '<a href="' . $r['primary-link'] . '">' . $post->post_title . '</a>' ); } if ( '' === $r['content'] ) { $r['content'] = $post->post_content; } if ( '' === $r['secondary-item-id'] ) { $r['secondary-item-id'] = $post->ID; } // new_blog_comment. } else { // groan - have to fake this. if ( '' === $r['user-id'] ) { $user = get_user_by( 'email', $comment->comment_author_email ); $r['user-id'] = ( empty( $user ) ) ? $this->get_random_user_id() : $user->ID; } $post_permalink = get_permalink( $comment->comment_post_ID ); $comment_link = get_comment_link( $comment->comment_ID ); if ( '' === $r['primary-link'] ) { $r['primary-link'] = $comment_link; } if ( '' === $r['action'] ) { $r['action'] = sprintf( '%1$s commented on the post, %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . $post_permalink . '">' . apply_filters( 'the_title', $post->post_title ) . '</a>' ); } if ( '' === $r['content'] ) { $r['content'] = $comment->comment_content; } if ( '' === $r['secondary-item-id'] ) { $r['secondary-item-id'] = $comment->ID; } } $r['content'] = ''; break; case 'friendship_created': if ( empty( $r['user-id'] ) ) { $r['user-id'] = $this->get_random_user_id(); } if ( empty( $r['item-id'] ) ) { $r['item-id'] = $this->get_random_user_id(); } $r['action'] = sprintf( '%1$s and %2$s are now friends', bp_core_get_userlink( $r['user-id'] ), bp_core_get_userlink( $r['item-id'] ) ); break; case 'created_group': if ( empty( $r['item-id'] ) ) { $random_group = \BP_Groups_Group::get_random( 1, 1 ); $r['item-id'] = $random_group['groups'][0]->slug; } $group = groups_get_group( array( 'group_id' => $r['item-id'], ) ); // @todo what if it's not a group? ugh if ( empty( $r['user-id'] ) ) { $r['user-id'] = $group->creator_id; } $group_permalink = bp_get_group_permalink( $group ); if ( empty( $r['action'] ) ) { $r['action'] = sprintf( '%1$s created the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . $group_permalink . '">' . esc_attr( $group->name ) . '</a>' ); } if ( empty( $r['primary-link'] ) ) { $r['primary-link'] = $group_permalink; } break; case 'joined_group': if ( empty( $r['item-id'] ) ) { $random_group = \BP_Groups_Group::get_random( 1, 1 ); if ( ! empty( $random_group['groups'][0]->slug ) ) { $r['item-id'] = $random_group['groups'][0]->slug; } } $group = groups_get_group( array( 'group_id' => $r['item-id'], ) ); if ( empty( $r['user-id'] ) ) { $r['user-id'] = $this->get_random_user_id(); } if ( empty( $r['action'] ) ) { $r['action'] = sprintf( '%1$s joined the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ); } if ( empty( $r['primary-link'] ) ) { $r['primary-link'] = bp_get_group_permalink( $group ); } break; case 'new_avatar': case 'new_member': case 'updated_profile': if ( empty( $r['user-id'] ) ) { $r['user-id'] = $this->get_random_user_id(); } $userlink = bp_core_get_userlink( $r['user-id'] ); // new_avatar. if ( 'new_avatar' === $r['type'] ) { $r['action'] = sprintf( '%s changed their profile picture', $userlink ); // new_member. } elseif ( 'new_member' === $r['type'] ) { $r['action'] = sprintf( '%s became a registered member', $userlink ); // updated_profile. } else { $r['action'] = sprintf( '%s updated their profile', $userlink ); } break; } return $r; }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
1.1 | Introduced. |