Changeset 7840
- Timestamp:
- 02/11/2014 02:58:50 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-core/bp-core-filters.php
r7741 r7840 530 530 } 531 531 add_filter( 'wp_setup_nav_menu_item', 'bp_setup_nav_menu_item', 10, 1 ); 532 533 /** 534 * Filter SQL query strings to swap out the 'meta_id' column. 535 * 536 * WordPress uses the meta_id column for commentmeta and postmeta, and so 537 * hardcodes the column name into its *_metadata() functions. BuddyPress, on 538 * the other hand, uses 'id' for the primary column. To make WP's functions 539 * usable for BuddyPress, we use this just-in-time filter on 'query' to swap 540 * 'meta_id' with 'id. 541 * 542 * @since BuddyPress (2.0.0) 543 * 544 * @access private Do not use. 545 * 546 * @param string $q SQL query. 547 * @return string 548 */ 549 function bp_filter_metaid_column_name( $q ) { 550 return str_replace( 'meta_id', 'id', $q ); 551 } -
trunk/bp-groups/bp-groups-functions.php
r7624 r7840 957 957 /*** Group Meta ****************************************************/ 958 958 959 function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false ) { 960 global $wpdb, $bp; 961 962 if ( !is_numeric( $group_id ) ) 963 return false; 964 959 /** 960 * Delete metadata for a group. 961 * 962 * @param int $group_id ID of the group. 963 * @param string $meta_key The key of the row to delete. 964 * @param string $meta_value Optional. Metadata value. If specified, only delete 965 * metadata entries with this value. 966 * @param bool $delete_all Optional. If true, delete matching metadata entries 967 * for all groups. Default: false. 968 * @return bool True on success, false on failure. 969 */ 970 function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false, $delete_all = false ) { 971 972 // Legacy - return false if non-int group ID 973 if ( ! is_numeric( $group_id ) ) { 974 return false; 975 } 976 977 // Legacy - Sanitize keys 965 978 $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); 966 979 967 if ( is_array( $meta_value ) || is_object( $meta_value ) ) 968 $meta_value = serialize($meta_value); 969 970 $meta_value = trim( $meta_value ); 971 972 if ( !$meta_key ) 973 $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d", $group_id ) ); 974 else if ( $meta_value ) 975 $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s AND meta_value = %s", $group_id, $meta_key, $meta_value ) ); 976 else 977 $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) ); 978 979 // Delete the cached object 980 wp_cache_delete( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, 'bp' ); 981 982 return true; 983 } 984 985 function groups_get_groupmeta( $group_id, $meta_key = '') { 986 global $wpdb, $bp; 987 988 $group_id = (int) $group_id; 989 990 if ( !$group_id ) 991 return false; 992 993 if ( !empty($meta_key) ) { 994 $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); 995 996 $metas = wp_cache_get( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, 'bp' ); 997 if ( false === $metas ) { 998 $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) ); 999 wp_cache_set( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, $metas, 'bp' ); 980 add_filter( 'query', 'bp_filter_metaid_column_name' ); 981 $retval = delete_metadata( 'group', $group_id, $meta_key, $meta_value, $delete_all ); 982 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 983 984 return $retval; 985 } 986 987 /** 988 * Get a piece of group metadata. 989 * 990 * @param int $group_id ID of the group. 991 * @param string $meta_key Metadata key. 992 * @param bool $single Optional. If true, return only the first value of the 993 * specified meta_key. This parameter has no effect if meta_key is 994 * empty. 995 * @return mixed Metadata value. 996 */ 997 function groups_get_groupmeta( $group_id, $meta_key = '', $single = true ) { 998 999 // Legacy - Sanitize keys 1000 $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); 1001 1002 add_filter( 'query', 'bp_filter_metaid_column_name' ); 1003 $retval = get_metadata( 'group', $group_id, $meta_key, $single ); 1004 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1005 1006 // Legacy - If fetching all meta for a group, just return values 1007 if ( empty( $meta_key ) ) { 1008 $values = array(); 1009 foreach ( (array) $retval as $r ) { 1010 $values[] = array_pop( $r ); 1000 1011 } 1001 } else { 1002 $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d", $group_id ) ); 1003 } 1004 1005 if ( empty( $metas ) ) { 1006 if ( empty( $meta_key ) ) 1007 return array(); 1008 else 1009 return ''; 1010 } 1011 1012 $metas = array_map( 'maybe_unserialize', (array) $metas ); 1013 1014 if ( 1 == count( $metas ) ) 1015 return $metas[0]; 1016 else 1017 return $metas; 1018 } 1019 1012 $retval = $values; 1013 } 1014 1015 return $retval; 1016 } 1017 1018 /** 1019 * Update a piece of group metadata. 1020 * 1021 * @param int $group_id ID of the group. 1022 * @param string $meta_key Metadata key. 1023 * @param mixed $meta_value Value to store. 1024 * @return bool True on success, false on failure. 1025 */ 1020 1026 function groups_update_groupmeta( $group_id, $meta_key, $meta_value ) { 1021 global $wpdb, $bp; 1022 1023 if ( !is_numeric( $group_id ) ) 1024 return false; 1025 1026 $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); 1027 1028 if ( is_string( $meta_value ) ) { 1029 $meta_value = stripslashes( $meta_value ); 1030 } 1031 1032 $meta_value = maybe_serialize( $meta_value ); 1033 1034 $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) ); 1035 1036 if ( !$cur ) 1037 $wpdb->query( $wpdb->prepare( "INSERT INTO " . $bp->groups->table_name_groupmeta . " ( group_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", $group_id, $meta_key, $meta_value ) ); 1038 else if ( $cur->meta_value != $meta_value ) 1039 $wpdb->query( $wpdb->prepare( "UPDATE " . $bp->groups->table_name_groupmeta . " SET meta_value = %s WHERE group_id = %d AND meta_key = %s", $meta_value, $group_id, $meta_key ) ); 1040 else 1041 return false; 1042 1043 // Update the cached object and recache 1044 wp_cache_set( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, $meta_value, 'bp' ); 1045 1046 return true; 1027 1028 add_filter( 'query', 'bp_filter_metaid_column_name' ); 1029 $retval = update_metadata( 'group', $group_id, $meta_key, $meta_value ); 1030 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1031 1032 // Legacy - return true if we fall through to add_metadata() 1033 if ( is_int( $retval ) ) { 1034 $retval = true; 1035 } 1036 1037 return $retval; 1047 1038 } 1048 1039 -
trunk/bp-groups/bp-groups-loader.php
r7758 r7840 137 137 ); 138 138 139 // Metadata tables for groups component 140 $meta_tables = array( 141 'group' => $bp->table_prefix . 'bp_groups_groupmeta', 142 ); 143 139 144 // All globals for groups component. 140 145 // Note that global_tables is included in this array. … … 145 150 'notification_callback' => 'groups_format_notifications', 146 151 'search_string' => __( 'Search Groups...', 'buddypress' ), 147 'global_tables' => $global_tables 152 'global_tables' => $global_tables, 153 'meta_tables' => $meta_tables, 148 154 ); 149 155
Note: See TracChangeset
for help on using the changeset viewer.