Skip to:
Content

BuddyPress.org

Changeset 7870


Ignore:
Timestamp:
02/14/2014 01:43:39 AM (11 years ago)
Author:
boonebgorges
Message:

Migrate blogmeta functions to the WP metadata API

See #4551

Location:
trunk/bp-blogs
Files:
2 edited

Legend:

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

    r7868 r7870  
    840840    global $wpdb, $bp;
    841841
    842     if ( !is_numeric( $blog_id ) )
    843         return false;
    844 
    845     $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
    846 
    847     if ( is_array($meta_value) || is_object($meta_value) )
    848         $meta_value = serialize($meta_value);
    849 
     842    // Legacy - return false if the $blog_id is empty
     843    if ( ! is_numeric( $blog_id ) ) {
     844        return false;
     845    }
     846
     847    // Legacy - sanitize meta_key
     848    $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
     849
     850    // Legacy - if no meta_key is passed, delete all for the blog_id
     851    if ( empty( $meta_key ) ) {
     852        $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->blogmeta} WHERE blog_id = %d", $blog_id ) );
     853    } else {
     854        $keys = array( $meta_key );
     855    }
     856
     857    // Legacy - trim meta_value
    850858    $meta_value = trim( $meta_value );
    851859
    852     if ( !$meta_key )
    853         $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d", $blog_id ) );
    854     else if ( $meta_value )
    855         $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s AND meta_value = %s", $blog_id, $meta_key, $meta_value ) );
    856     else
    857         $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) );
    858 
    859     wp_cache_delete( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, 'bp' );
    860 
    861     return true;
     860    add_filter( 'query', 'bp_filter_metaid_column_name' );
     861
     862    foreach ( $keys as $key ) {
     863        $retval = delete_metadata( 'blog', $blog_id, $key, $meta_value );
     864    }
     865
     866    remove_filter( 'query', 'bp_filter_metaid_column_name' );
     867
     868    return $retval;
    862869}
    863870
     
    877884 */
    878885function bp_blogs_get_blogmeta( $blog_id, $meta_key = '') {
    879     global $wpdb, $bp;
    880 
    881     $blog_id = (int) $blog_id;
    882 
    883     if ( !$blog_id )
    884         return false;
    885 
    886     if ( !empty($meta_key) ) {
    887         $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
    888 
    889         if ( !$metas = wp_cache_get( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, 'bp' ) ) {
    890             $metas = $wpdb->get_col( $wpdb->prepare( "SELECT meta_value FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) );
    891             wp_cache_set( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, $metas, 'bp' );
     886
     887    // Legacy - Sanitize meta_key
     888    $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
     889
     890    add_filter( 'query', 'bp_filter_metaid_column_name' );
     891    $retval = get_metadata( 'blog', $blog_id, $meta_key, true );
     892    remove_filter( 'query', 'bp_filter_metaid_column_name' );
     893
     894    // Legacy - If no meta_key is passed, return only the found values,
     895    // not a structured array
     896    if ( empty( $meta_key ) && is_array( $retval ) ) {
     897        $values = array();
     898        foreach ( $retval as $value ) {
     899            $values[] = array_pop( $value );
    892900        }
    893     } else {
    894         $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d", $blog_id ) );
    895     }
    896 
    897     if ( empty($metas) ) {
    898         if ( empty($meta_key) )
    899             return array();
    900         else
    901             return '';
    902     }
    903 
    904     $metas = array_map('maybe_unserialize', (array) $metas);
    905 
    906     if ( 1 == count($metas) )
    907         return $metas[0];
    908     else
    909         return $metas;
     901        $retval = $values;
     902    }
     903
     904    return $retval;
    910905}
    911906
     
    922917 */
    923918function bp_blogs_update_blogmeta( $blog_id, $meta_key, $meta_value ) {
    924     global $wpdb, $bp;
    925 
    926     if ( !is_numeric( $blog_id ) )
    927         return false;
    928 
     919
     920    // Legacy - Sanitize meta_key
    929921    $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
    930922
    931     if ( is_string($meta_value) )
    932         $meta_value = stripslashes( $meta_value );
    933 
    934     $meta_value = maybe_serialize($meta_value);
    935 
    936     if (empty( $meta_value ) )
    937         return bp_blogs_delete_blogmeta( $blog_id, $meta_key );
    938 
    939     $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) );
    940 
    941     if ( !$cur )
    942         $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->blogs->table_name_blogmeta} ( blog_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", $blog_id, $meta_key, $meta_value ) );
    943     else if ( $cur->meta_value != $meta_value )
    944         $wpdb->query( $wpdb->prepare( "UPDATE {$bp->blogs->table_name_blogmeta} SET meta_value = %s WHERE blog_id = %d AND meta_key = %s", $meta_value, $blog_id, $meta_key ) );
    945     else
    946         return false;
    947 
    948     wp_cache_set( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, $meta_value, 'bp' );
    949 
    950     return true;
     923    add_filter( 'query', 'bp_filter_metaid_column_name' );
     924    $retval = update_metadata( 'blog', $blog_id, $meta_key, $meta_value );
     925    remove_filter( 'query', 'bp_filter_metaid_column_name' );
     926
     927    // Legacy - New items fall through to add_metadata(). Return true
     928    // instead of the ID returned from that function.
     929    if ( is_int( $retval ) ) {
     930        $retval = true;
     931    }
     932
     933    return $retval;
    951934}
    952935
  • trunk/bp-blogs/bp-blogs-loader.php

    r7756 r7870  
    5353            'table_name'          => $bp->table_prefix . 'bp_user_blogs',
    5454            'table_name_blogmeta' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
     55        );
     56
     57        $meta_tables = array(
     58            'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
    5559        );
    5660
     
    6569            'autocomplete_all'      => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
    6670            'global_tables'         => $global_tables,
     71            'meta_tables'           => $meta_tables,
    6772        );
    6873
Note: See TracChangeset for help on using the changeset viewer.