Skip to:
Content

BuddyPress.org

Changeset 7870


Ignore:
Timestamp:
02/14/2014 01:43:39 AM (13 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.