Changeset 13184 for trunk/src/bp-blogs/classes/class-bp-blogs-blog.php
- Timestamp:
- 12/12/2021 02:09:02 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-blogs/classes/class-bp-blogs-blog.php
r12544 r13184 164 164 * Retrieve a set of blog-user associations. 165 165 * 166 * @param string $type The order in which results should be returned. 167 * 'active', 'alphabetical', 'newest', or 'random'. 168 * @param int|bool $limit Optional. The maximum records to return. 169 * Default: false. 170 * @param int|bool $page Optional. The page of records to return. 171 * Default: false (unlimited results). 172 * @param int $user_id Optional. ID of the user whose blogs are being 173 * retrieved. Default: 0. 174 * @param string|bool $search_terms Optional. Search by text stored in 175 * blogmeta (such as the blog name). Default: false. 176 * @param bool $update_meta_cache Whether to pre-fetch metadata for 177 * blogs. Default: true. 178 * @param array|bool $include_blog_ids Array of blog IDs to include. 166 * @since 1.2.0 167 * @since 10.0.0 Converted to array as main function argument. Added $date_query parameter. 168 * 169 * @param array $data { 170 * Array of site data to query for. 171 * @type string $type The order in which results should be returned. 172 * 'active', 'alphabetical', 'newest', or 'random'. 173 * @type int|bool $limit Optional. The maximum records to return. 174 * Default: false. 175 * @type int|bool $page Optional. The page of records to return. 176 * Default: false (unlimited results). 177 * @type int $user_id Optional. ID of the user whose blogs are being 178 * retrieved. Default: 0. 179 * @type string|bool $search_terms Optional. Search by text stored in 180 * blogmeta (such as the blog name). Default: false. 181 * @type bool $update_meta_cache Whether to pre-fetch metadata for 182 * blogs. Default: true. 183 * @type array|bool $include_blog_ids Optional. Array of blog IDs to include. 184 * @type array $date_query Optional. Filter results by site last activity date. See first 185 * paramter of {@link WP_Date_Query::__construct()} for syntax. Only 186 * applicable if $type is either 'newest' or 'active'. 187 * } 179 188 * @return array Multidimensional results array, structured as follows: 180 189 * 'blogs' - Array of located blog objects 181 190 * 'total' - A count of the total blogs matching the filter params 182 191 */ 183 public static function get( $type, $limit = false, $page = false, $user_id = 0, $search_terms = false, $update_meta_cache = true, $include_blog_ids = false ) { 184 global $wpdb; 185 186 $bp = buddypress(); 187 188 if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) 192 public static function get( ...$args ) { 193 global $wpdb; 194 195 $bp = buddypress(); 196 197 // Backward compatibility with old method of passing arguments. 198 if ( ! is_array( $args[0] ) || count( $args ) > 1 ) { 199 _deprecated_argument( __METHOD__, '10.0.0', sprintf( __( 'Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress' ), __METHOD__, __FILE__ ) ); 200 201 $old_args_keys = [ 202 0 => 'type', 203 1 => 'limit', 204 2 => 'page', 205 3 => 'user_id', 206 4 => 'search_terms', 207 5 => 'update_meta_cache', 208 6 => 'include_blog_ids', 209 ]; 210 211 $args = bp_core_parse_args_array( $old_args_keys, $args ); 212 } else { 213 $args = reset( $args ); 214 } 215 216 $r = wp_parse_args( 217 $args, 218 array( 219 'type' => 'active', 220 'limit' => false, 221 'page' => false, 222 'user_id' => 0, 223 'search_terms' => false, 224 'update_meta_cache' => true, 225 'include_blog_ids' => false, 226 'date_query' => false, 227 ) 228 ); 229 230 if ( ! is_user_logged_in() || ( ! bp_current_user_can( 'bp_moderate' ) && ( $r['user_id'] != bp_loggedin_user_id() ) ) ) { 189 231 $hidden_sql = "AND wb.public = 1"; 190 else232 } else { 191 233 $hidden_sql = ''; 192 193 $pag_sql = ( $limit && $page ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ) : ''; 194 195 $user_sql = !empty( $user_id ) ? $wpdb->prepare( " AND b.user_id = %d", $user_id ) : ''; 196 197 switch ( $type ) { 234 } 235 236 $pag_sql = ( $r['limit'] && $r['page'] ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $r['page'] - 1 ) * $r['limit']), intval( $r['limit'] ) ) : ''; 237 238 $user_sql = ! empty( $r['user_id'] ) ? $wpdb->prepare( " AND b.user_id = %d", $r['user_id'] ) : ''; 239 240 $date_query_sql = ''; 241 242 switch ( $r['type'] ) { 198 243 case 'active': default: 199 $order_sql = "ORDER BY bm.meta_value DESC"; 244 $date_query_sql = BP_Date_Query::get_where_sql( $r['date_query'], 'bm.meta_value', true ); 245 $order_sql = "ORDER BY bm.meta_value DESC"; 200 246 break; 201 247 case 'alphabetical': … … 203 249 break; 204 250 case 'newest': 205 $order_sql = "ORDER BY wb.registered DESC"; 251 $date_query_sql = BP_Date_Query::get_where_sql( $r['date_query'], 'wb.registered', true ); 252 $order_sql = "ORDER BY wb.registered DESC"; 206 253 break; 207 254 case 'random': … … 211 258 212 259 $include_sql = ''; 213 $include_blog_ids = array_filter( wp_parse_id_list( $ include_blog_ids) );260 $include_blog_ids = array_filter( wp_parse_id_list( $r['include_blog_ids'] ) ); 214 261 if ( ! empty( $include_blog_ids ) ) { 215 262 $blog_ids_sql = implode( ',', $include_blog_ids ); … … 217 264 } 218 265 219 if ( ! empty( $ search_terms) ) {220 $search_terms_like = '%' . bp_esc_like( $ search_terms) . '%';266 if ( ! empty( $r['search_terms'] ) ) { 267 $search_terms_like = '%' . bp_esc_like( $r['search_terms'] ) . '%'; 221 268 $search_terms_sql = $wpdb->prepare( 'AND (bm_name.meta_value LIKE %s OR bm_description.meta_value LIKE %s)', $search_terms_like, $search_terms_like ); 222 269 } else { … … 236 283 wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} 237 284 AND bm.meta_key = 'last_activity' AND bm_name.meta_key = 'name' AND bm_description.meta_key = 'description' 238 {$search_terms_sql} {$user_sql} {$include_sql} 285 {$search_terms_sql} {$user_sql} {$include_sql} {$date_query_sql} 239 286 GROUP BY b.blog_id {$order_sql} {$pag_sql} 240 287 " ); … … 245 292 {$bp->blogs->table_name} b 246 293 LEFT JOIN {$wpdb->base_prefix}blogs wb ON (b.blog_id = wb.blog_id) 294 LEFT JOIN {$bp->blogs->table_name_blogmeta} bm ON (b.blog_id = bm.blog_id) 247 295 LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_name ON (b.blog_id = bm_name.blog_id) 248 296 LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_description ON (b.blog_id = bm_description.blog_id) 249 297 WHERE 250 298 wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} 251 AND 252 bm_name.meta_key = 'name' AND bm_description.meta_key = 'description' 253 {$search_terms_sql} {$user_sql} {$include_sql} 299 AND bm.meta_key = 'last_activity' AND bm_name.meta_key = 'name' AND bm_description.meta_key = 'description' 300 {$search_terms_sql} {$user_sql} {$include_sql} {$date_query_sql} 254 301 " ); 255 302 … … 259 306 } 260 307 261 $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $ type);308 $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $r['type'] ); 262 309 263 310 // Integer casting. … … 267 314 } 268 315 269 if ( $ update_meta_cache) {316 if ( $r['update_meta_cache'] ) { 270 317 bp_blogs_update_meta_cache( $blog_ids ); 271 318 }
Note: See TracChangeset
for help on using the changeset viewer.