Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/14/2014 07:02:16 PM (11 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-xprofile/bp-xprofile-functions.php

    r7879 r7883  
    539539 * @param mixed $meta_value Optional. If provided, only metadata that matches
    540540 *        the value will be permitted.
     541 * @param bool $delete_all Optional. If true, delete matching metadata entries
     542 *    for all objects, ignoring the specified object_id. Otherwise, only
     543 *    delete matching metadata entries for the specified object.
     544 *    Default: false.
    541545 * @return bool True on success, false on failure.
    542546 */
    543 function bp_xprofile_delete_meta( $object_id, $object_type, $meta_key = false, $meta_value = false ) {
     547function bp_xprofile_delete_meta( $object_id, $object_type, $meta_key = false, $meta_value = false, $delete_all = false ) {
    544548    global $wpdb;
    545549
     
    559563        $table_name = $wpdb->{$table_key};
    560564        $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$table_name} WHERE object_type = %s AND object_id = %d", $object_type, $object_id ) );
     565
     566        // Force delete_all to false if deleting all for object
     567        $delete_all = false;
    561568    } else {
    562569        $keys = array( $meta_key );
     
    570577
    571578    foreach ( $keys as $key ) {
    572         $retval = delete_metadata( 'xprofile_' . $object_type, $object_id, $key, $meta_value );
     579        $retval = delete_metadata( 'xprofile_' . $object_type, $object_id, $key, $meta_value, $delete_all );
    573580    }
    574581
Note: See TracChangeset for help on using the changeset viewer.