Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/14/2014 07:02:16 PM (10 years ago)
Author:
boonebgorges
Message:

Add delete_all support for all _delete_meta() functions

The delete_all parameter allows you to delete all meta items matching the
specified meta_key, regardless of the associated object.

Because our meta delete functions also support the deletion of all metadata
associated with an object (by leaving out the meta_key param), a decision had
to be made regarding the behavior when _delete_meta() is called with delete_all

true and meta_key = false. The most logical (and least destructive) strategy

was deemed to be: force delete_all to false when meta_key is also false. This
ensures that you don't accidentally wipe out all metadata for a component.

See #5400

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups/bp-groups-functions.php

    r7875 r7883  
    966966 * @param bool $delete_all Optional. If true, delete matching metadata entries
    967967 *        for all groups. Default: false.
     968 * @param bool $delete_all Optional. If true, delete matching metadata entries
     969 *    for all objects, ignoring the specified group_id. Otherwise, only
     970 *    delete matching metadata entries for the specified group.
     971 *    Default: false.
    968972 * @return bool True on success, false on failure.
    969973 */
    970974function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false, $delete_all = false ) {
     975    global $wpdb;
    971976
    972977    // Legacy - return false if non-int group ID
     
    978983    $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
    979984
     985    // Legacy - if no meta_key is passed, delete all for the item
     986    if ( empty( $meta_key ) ) {
     987        $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->groupmeta} WHERE group_id = %d", $group_id ) );
     988
     989        // With no meta_key, ignore $delete_all
     990        $delete_all = false;
     991    } else {
     992        $keys = array( $meta_key );
     993    }
     994
    980995    add_filter( 'query', 'bp_filter_metaid_column_name' );
    981     $retval = delete_metadata( 'group', $group_id, $meta_key, $meta_value, $delete_all );
     996
     997    foreach ( $keys as $key ) {
     998        $retval = delete_metadata( 'group', $group_id, $key, $meta_value, $delete_all );
     999    }
     1000
    9821001    remove_filter( 'query', 'bp_filter_metaid_column_name' );
    9831002
Note: See TracChangeset for help on using the changeset viewer.