BP_Activity_Activity::delete( array $args = array() )
Delete activity items from the database.
Description
To delete a specific activity item, pass an ‘id’ parameter. Otherwise use the filters.
Parameters
- $args
-
(Optional) @int $id Optional. The ID of a specific item to delete. @string $action Optional. The action to filter by. @string $content Optional. The content to filter by. @string $component Optional. The component name to filter by. @string $type Optional. The activity type to filter by. @string $primary_link Optional. The primary URL to filter by. @int $user_id Optional. The user ID to filter by. @int $item_id Optional. The associated item ID to filter by. @int $secondary_item_id Optional. The secondary associated item ID to filter by. @string $date_recorded Optional. The date to filter by. @int $hide_sitewide Optional. Default: false.
Default value: array()
Return
(array|bool) An array of deleted activity IDs on success, false on failure.
Source
File: bp-activity/classes/class-bp-activity-activity.php
public static function delete( $args = array() ) {
global $wpdb;
$bp = buddypress();
$r = wp_parse_args( $args, array(
'id' => false,
'action' => false,
'content' => false,
'component' => false,
'type' => false,
'primary_link' => false,
'user_id' => false,
'item_id' => false,
'secondary_item_id' => false,
'date_recorded' => false,
'hide_sitewide' => false
) );
// Setup empty array from where query arguments.
$where_args = array();
// ID.
if ( ! empty( $r['id'] ) ) {
$where_args[] = $wpdb->prepare( "id = %d", $r['id'] );
}
// User ID.
if ( ! empty( $r['user_id'] ) ) {
$where_args[] = $wpdb->prepare( "user_id = %d", $r['user_id'] );
}
// Action.
if ( ! empty( $r['action'] ) ) {
$where_args[] = $wpdb->prepare( "action = %s", $r['action'] );
}
// Content.
if ( ! empty( $r['content'] ) ) {
$where_args[] = $wpdb->prepare( "content = %s", $r['content'] );
}
// Component.
if ( ! empty( $r['component'] ) ) {
$where_args[] = $wpdb->prepare( "component = %s", $r['component'] );
}
// Type.
if ( ! empty( $r['type'] ) ) {
$where_args[] = $wpdb->prepare( "type = %s", $r['type'] );
}
// Primary Link.
if ( ! empty( $r['primary_link'] ) ) {
$where_args[] = $wpdb->prepare( "primary_link = %s", $r['primary_link'] );
}
// Item ID.
if ( ! empty( $r['item_id'] ) ) {
$where_args[] = $wpdb->prepare( "item_id = %d", $r['item_id'] );
}
// Secondary item ID.
if ( ! empty( $r['secondary_item_id'] ) ) {
$where_args[] = $wpdb->prepare( "secondary_item_id = %d", $r['secondary_item_id'] );
}
// Date Recorded.
if ( ! empty( $r['date_recorded'] ) ) {
$where_args[] = $wpdb->prepare( "date_recorded = %s", $r['date_recorded'] );
}
// Hidden sitewide.
if ( ! empty( $r['hide_sitewide'] ) ) {
$where_args[] = $wpdb->prepare( "hide_sitewide = %d", $r['hide_sitewide'] );
}
// Bail if no where arguments.
if ( empty( $where_args ) ) {
return false;
}
// Join the where arguments for querying.
$where_sql = 'WHERE ' . join( ' AND ', $where_args );
// Fetch all activities being deleted so we can perform more actions.
$activities = $wpdb->get_results( "SELECT * FROM {$bp->activity->table_name} {$where_sql}" );
/**
* Action to allow intercepting activity items to be deleted.
*
* @since BuddyPress 2.3.0
*
* @param array $activities Array of activities.
* @param array $r Array of parsed arguments.
*/
do_action_ref_array( 'bp_activity_before_delete', array( $activities, $r ) );
// Attempt to delete activities from the database.
$deleted = $wpdb->query( "DELETE FROM {$bp->activity->table_name} {$where_sql}" );
// Bail if nothing was deleted.
if ( empty( $deleted ) ) {
return false;
}
/**
* Action to allow intercepting activity items just deleted.
*
* @since BuddyPress 2.3.0
*
* @param array $activities Array of activities.
* @param array $r Array of parsed arguments.
*/
do_action_ref_array( 'bp_activity_after_delete', array( $activities, $r ) );
// Pluck the activity IDs out of the $activities array.
$activity_ids = wp_parse_id_list( wp_list_pluck( $activities, 'id' ) );
// Handle accompanying activity comments and meta deletion.
if ( ! empty( $activity_ids ) ) {
// Delete all activity meta entries for activity items.
BP_Activity_Activity::delete_activity_meta_entries( $activity_ids );
// Setup empty array for comments.
$comment_ids = array();
// Loop through activity ids and attempt to delete comments.
foreach ( $activity_ids as $activity_id ) {
// Attempt to delete comments.
$comments = BP_Activity_Activity::delete( array(
'type' => 'activity_comment',
'item_id' => $activity_id
) );
// Merge IDs together.
if ( ! empty( $comments ) ) {
$comment_ids = array_merge( $comment_ids, $comments );
}
}
// Merge activity IDs with any deleted comment IDs.
if ( ! empty( $comment_ids ) ) {
$activity_ids = array_unique( array_merge( $activity_ids, $comment_ids ) );
}
}
return $activity_ids;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.2.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.