[ Index ] |
PHP Cross Reference of BBPress |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * bbPress User Capabilities 5 * 6 * Used to map user capabilities to WordPress's existing capabilities. 7 * 8 * @package bbPress 9 * @subpackage Capabilities 10 */ 11 12 /** 13 * Maps primary capabilities 14 * 15 * @since 2.2.0 bbPress (r4242) 16 * 17 * @param array $caps Capabilities for meta capability. 18 * @param string $cap Capability name. 19 * @param int $user_id User id. 20 * @param array $args Arguments. 21 * 22 * @return array Actual capabilities for meta capability 23 */ 24 function bbp_map_primary_meta_caps( $caps = array(), $cap = '', $user_id = 0, $args = array() ) { 25 26 // What capability is being checked? 27 switch ( $cap ) { 28 case 'spectate' : 29 30 // Do not allow inactive users. 31 if ( bbp_is_user_inactive( $user_id ) ) { 32 $caps = array( 'do_not_allow' ); 33 34 // Default to the current cap. 35 } else { 36 $caps = array( $cap ); 37 } 38 break; 39 40 case 'participate' : 41 42 // Do not allow inactive users. 43 if ( bbp_is_user_inactive( $user_id ) ) { 44 $caps = array( 'do_not_allow' ); 45 46 // Default to the current cap. 47 } else { 48 $caps = array( $cap ); 49 } 50 break; 51 52 case 'moderate' : 53 54 // Do not allow inactive users. 55 if ( bbp_is_user_inactive( $user_id ) ) { 56 $caps = array( 'do_not_allow' ); 57 58 // Keymasters can always moderate. 59 } elseif ( bbp_is_user_keymaster( $user_id ) ) { 60 $caps = array( 'spectate' ); 61 62 // Check if user can moderate forum. 63 } elseif ( bbp_allow_forum_mods() ) { 64 $caps = array( $cap ); 65 66 // Bail if no post to check. 67 if ( empty( $args[0] ) ) { 68 break; 69 } 70 71 // Get the post. 72 $_post = get_post( $args[0] ); 73 if ( empty( $_post ) ) { 74 break; 75 } 76 77 // Get forum ID for specific type of post. 78 switch ( $_post->post_type ) { 79 80 // Forum. 81 case bbp_get_forum_post_type() : 82 $forum_id = bbp_get_forum_id( $_post->ID ); 83 break; 84 85 // Topic. 86 case bbp_get_topic_post_type() : 87 $forum_id = bbp_get_topic_forum_id( $_post->ID ); 88 break; 89 90 // Reply. 91 case bbp_get_reply_post_type() : 92 $forum_id = bbp_get_reply_forum_id( $_post->ID ); 93 break; 94 95 // Any other post type defaults to 0. 96 default : 97 $forum_id = 0; 98 break; 99 } 100 101 // Bail if no forum ID. 102 if ( empty( $forum_id ) ) { 103 break; 104 } 105 106 // User is mod of this forum 107 if ( bbp_is_object_of_user( $forum_id, $user_id, '_bbp_moderator_id' ) ) { 108 $caps = array( 'spectate' ); 109 } 110 } 111 112 break; 113 114 /** Super Moderators **************************************************/ 115 116 case 'edit_user' : 117 case 'edit_users' : 118 119 // Moderators can edit users if super moderators is enabled 120 if ( bbp_allow_super_mods() ) { 121 122 // Get the user ID 123 $_user_id = ! empty( $args[0] ) 124 ? (int) $args[0] 125 : bbp_get_displayed_user_id(); 126 127 // Users can always edit themselves, so only map for others 128 if ( ! empty( $_user_id ) && ( $_user_id !== $user_id ) ) { 129 130 // Super moderators cannot edit keymasters 131 if ( ! bbp_is_user_keymaster( $_user_id ) ) { 132 $caps = array( 'moderate' ); 133 } 134 } 135 } 136 137 break; 138 } 139 140 // Filter & return 141 return (array) apply_filters( 'bbp_map_primary_meta_caps', $caps, $cap, $user_id, $args ); 142 } 143 144 /** 145 * Set a user's role in the forums 146 * 147 * @since 2.1.0 bbPress (r3860) 148 * 149 * @param int $user_id 150 * 151 * @return mixed False if no change. String of new role if changed. 152 */ 153 function bbp_set_user_role( $user_id = 0, $new_role = '' ) { 154 155 // Validate user id 156 $user_id = bbp_get_user_id( $user_id, false, false ); 157 $user = get_userdata( $user_id ); 158 159 // User exists 160 if ( ! empty( $user ) ) { 161 162 // Get user forum role 163 $role = bbp_get_user_role( $user_id ); 164 165 // User already has this role so no new role is set 166 if ( $new_role === $role ) { 167 $new_role = false; 168 169 // User role is different than the new (valid) role 170 } elseif ( bbp_is_valid_role( $new_role ) ) { 171 172 // Remove the old role 173 if ( ! empty( $role ) ) { 174 $user->remove_role( $role ); 175 } 176 177 // Add the new role 178 if ( ! empty( $new_role ) ) { 179 $user->add_role( $new_role ); 180 } 181 } 182 183 // User does don exist so return false 184 } else { 185 $new_role = false; 186 } 187 188 // Filter & return 189 return apply_filters( 'bbp_set_user_role', $new_role, $user_id, $user ); 190 } 191 192 /** 193 * Return a user's forums role 194 * 195 * @since 2.1.0 bbPress (r3860) 196 * 197 * @param int $user_id 198 * 199 * @return string 200 */ 201 function bbp_get_user_role( $user_id = 0 ) { 202 203 // Validate user id 204 $user_id = bbp_get_user_id( $user_id ); 205 $user = get_userdata( $user_id ); 206 $role = false; 207 208 // User has roles so look for a bbPress one 209 if ( ! empty( $user->roles ) ) { 210 211 // Look for a bbPress role 212 $roles = array_intersect( 213 array_values( $user->roles ), 214 array_keys( bbp_get_dynamic_roles() ) 215 ); 216 217 // If there's a role in the array, use the first one. This isn't very 218 // smart, but since roles aren't exactly hierarchical, and bbPress 219 // does not yet have a UI for multiple user roles, it's fine for now. 220 if ( ! empty( $roles ) ) { 221 $role = array_shift( $roles ); 222 } 223 } 224 225 // Filter & return 226 return apply_filters( 'bbp_get_user_role', $role, $user_id, $user ); 227 } 228 229 /** 230 * Return a user's blog role 231 * 232 * @since 2.3.0 bbPress (r4446) 233 * 234 * @param int $user_id 235 * 236 * @return string 237 */ 238 function bbp_get_user_blog_role( $user_id = 0 ) { 239 240 // Validate user id 241 $user_id = bbp_get_user_id( $user_id ); 242 $user = get_userdata( $user_id ); 243 $role = false; 244 245 // User has roles so lets 246 if ( ! empty( $user->roles ) ) { 247 248 // Look for a non bbPress role 249 $roles = array_intersect( 250 array_values( $user->roles ), 251 array_keys( bbp_get_blog_roles() ) 252 ); 253 254 // If there's a role in the array, use the first one. This isn't very 255 // smart, but since roles aren't exactly hierarchical, and WordPress 256 // does not yet have a UI for multiple user roles, it's fine for now. 257 if ( ! empty( $roles ) ) { 258 $role = array_shift( $roles ); 259 } 260 } 261 262 // Filter & return 263 return apply_filters( 'bbp_get_user_blog_role', $role, $user_id, $user ); 264 } 265 266 /** 267 * Helper function hooked to 'bbp_profile_update' action to save or 268 * update user roles and capabilities. 269 * 270 * @since 2.2.0 bbPress (r4235) 271 * 272 * @param int $user_id 273 */ 274 function bbp_profile_update_role( $user_id = 0 ) { 275 276 // Bail if no user ID was passed 277 if ( empty( $user_id ) ) { 278 return; 279 } 280 281 // Bail if no role 282 if ( ! isset( $_POST['bbp-forums-role'] ) ) { 283 return; 284 } 285 286 // Forums role we want the user to have 287 $new_role = sanitize_key( $_POST['bbp-forums-role'] ); 288 $forums_role = bbp_get_user_role( $user_id ); 289 290 // Bail if no role change 291 if ( $new_role === $forums_role ) { 292 return; 293 } 294 295 // Bail if trying to set their own role 296 if ( bbp_is_user_home_edit() ) { 297 return; 298 } 299 300 // Bail if current user cannot promote the passing user 301 if ( ! current_user_can( 'promote_user', $user_id ) ) { 302 return; 303 } 304 305 // Set the new forums role 306 bbp_set_user_role( $user_id, $new_role ); 307 } 308 309 /** 310 * Check if a role ID is valid 311 * 312 * This helper function accepts a role ID as a string, and compares it against 313 * the array of registered dynamic roles. 314 * 315 * Use this function anytime you are manually attempting to set a user role 316 * without using the bbp_set_user_role() function, or if you need to halt 317 * additional processing during role validation. 318 * 319 * @since 2.6.5 320 * 321 * @param string $role A well-formed (string) role ID to validate 322 * 323 * @return bool True if role is valid. False if role is not valid. 324 */ 325 function bbp_is_valid_role( $role = '' ) { 326 327 // Default return value 328 $retval = false; 329 330 // Skip if no role to check 331 if ( ! empty( $role ) && is_string( $role ) ) { 332 333 // Get the dynamic role IDs 334 $roles = array_keys( bbp_get_dynamic_roles() ); 335 336 // Skip if no known role IDs 337 if ( ! empty( $roles ) ) { 338 339 // Is role in dynamic roles array? 340 $retval = in_array( $role, $roles, true ); 341 } 342 } 343 344 // Filter & return 345 return (bool) apply_filters( 'bbp_is_valid_role', $retval, $role ); 346 } 347 348 /** 349 * Add the default role to the current user if needed 350 * 351 * This function will bail if the forum is not global in a multisite 352 * installation of WordPress, or if the user is marked as spam or deleted. 353 * 354 * @since 2.0.0 bbPress (r3380) 355 * 356 * @return If not multisite, not global, or user is deleted/spammed 357 */ 358 function bbp_set_current_user_default_role() { 359 360 /** Sanity ****************************************************************/ 361 362 // Bail if deactivating bbPress 363 if ( bbp_is_deactivation() ) { 364 return; 365 } 366 367 // Catch all, to prevent premature user initialization 368 if ( ! did_action( 'set_current_user' ) ) { 369 return; 370 } 371 372 // Bail if not logged in or already a member of this site 373 if ( ! is_user_logged_in() ) { 374 return; 375 } 376 377 // Get the current user ID 378 $user_id = bbp_get_current_user_id(); 379 380 // Bail if user already has a forums role 381 if ( bbp_get_user_role( $user_id ) ) { 382 return; 383 } 384 385 // Bail if user is marked as spam or is deleted 386 if ( bbp_is_user_inactive( $user_id ) ) { 387 return; 388 } 389 390 /** Ready *****************************************************************/ 391 392 // Load up bbPress once 393 $bbp = bbpress(); 394 395 // Get whether or not to add a role to the user account 396 $add_to_site = bbp_allow_global_access(); 397 398 // Get the current user's WordPress role. Set to empty string if none found. 399 $user_role = bbp_get_user_blog_role( $user_id ); 400 401 // Get the role map 402 $role_map = bbp_get_user_role_map(); 403 404 /** Forum Role ************************************************************/ 405 406 // Use a mapped role or default role 407 $new_role = empty( $user_role ) || ! isset( $role_map[ $user_role ] ) 408 ? bbp_get_default_role() 409 : $role_map[ $user_role ]; 410 411 /** Add or Map ************************************************************/ 412 413 // Add the user to the site 414 if ( true === $add_to_site ) { 415 bbp_set_user_role( $user_id, $new_role ); 416 417 // Don't add the user, but still give them the correct caps dynamically 418 } else { 419 $bbp->current_user->caps[ $new_role ] = true; 420 $bbp->current_user->get_role_caps(); 421 } 422 } 423 424 /** 425 * Return a map of WordPress roles to bbPress roles. Used to automatically grant 426 * appropriate bbPress roles to WordPress users that wouldn't already have a 427 * role in the forums. Also guarantees WordPress admins get the Keymaster role. 428 * 429 * @since 2.2.0 bbPress (r4334) 430 * 431 * @return array Filtered array of WordPress roles to bbPress roles 432 */ 433 function bbp_get_user_role_map() { 434 435 // Get the default role once here 436 $default_role = bbp_get_default_role(); 437 438 // Filter & return 439 return (array) apply_filters( 'bbp_get_user_role_map', array( 440 'administrator' => bbp_get_keymaster_role(), 441 'editor' => $default_role, 442 'author' => $default_role, 443 'contributor' => $default_role, 444 'subscriber' => $default_role 445 ) ); 446 } 447 448 /** User Status ***************************************************************/ 449 450 /** 451 * Checks if the user has been marked as a spammer. 452 * 453 * @since 2.0.0 bbPress (r3355) 454 * 455 * @param int $user_id int The ID for the user. 456 * @return bool True if spammer, False if not. 457 */ 458 function bbp_is_user_spammer( $user_id = 0 ) { 459 460 // Default to current user 461 if ( empty( $user_id ) && is_user_logged_in() ) { 462 $user_id = bbp_get_current_user_id(); 463 } 464 465 // No user to check 466 if ( empty( $user_id ) ) { 467 return false; 468 } 469 470 // Assume user is not spam 471 $is_spammer = false; 472 473 // Get user data 474 $user = get_userdata( $user_id ); 475 476 // No user found 477 if ( empty( $user ) ) { 478 $is_spammer = false; 479 480 // Check if spam 481 } elseif ( ! empty( $user->spam ) ) { 482 $is_spammer = true; 483 } 484 485 // Filter & return 486 return (bool) apply_filters( 'bbp_core_is_user_spammer', $is_spammer ); 487 } 488 489 /** 490 * Mark a users topics and replies as spam when the user is marked as spam 491 * 492 * @since 2.0.0 bbPress (r3405) 493 * 494 * @param int $user_id Optional. User ID to spam. Defaults to displayed user. 495 * 496 * @return bool If no user ID passed. 497 */ 498 function bbp_make_spam_user( $user_id = 0 ) { 499 500 // Use displayed user if it's not yourself 501 if ( empty( $user_id ) && bbp_is_single_user() && ! bbp_is_user_home() ) { 502 $user_id = bbp_get_displayed_user_id(); 503 } 504 505 // Bail if no user ID 506 if ( empty( $user_id ) ) { 507 return false; 508 } 509 510 // Bail if user ID is keymaster 511 if ( bbp_is_user_keymaster( $user_id ) ) { 512 return false; 513 } 514 515 // Arm the torpedos 516 $bbp_db = bbp_db(); 517 518 // Get the blog IDs of the user to mark as spam 519 $blogs = get_blogs_of_user( $user_id, true ); 520 521 // If user has no blogs, they are a guest on this site 522 if ( empty( $blogs ) ) { 523 $blogs[ $bbp_db->blogid ] = array(); 524 } 525 526 // Get array of post types to mark as spam 527 $post_types = array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ); 528 $post_types = "'" . implode( "', '", $post_types ) . "'"; 529 530 // Get array of statuses to mark as spam 531 $post_statuses = bbp_get_public_topic_statuses(); 532 $post_statuses = "'" . implode( "', '", $post_statuses ) . "'"; 533 534 // Loop through blogs and remove their posts 535 foreach ( (array) array_keys( $blogs ) as $blog_id ) { 536 537 // Switch to the site ID 538 bbp_switch_to_site( $blog_id ); 539 540 // Get topics and replies 541 $query = $bbp_db->prepare( "SELECT ID FROM {$bbp_db->posts} WHERE post_author = %d AND post_status IN ( {$post_statuses} ) AND post_type IN ( {$post_types} )", $user_id ); 542 $posts = $bbp_db->get_col( $query ); 543 544 // Loop through posts and spam them 545 if ( ! empty( $posts ) ) { 546 foreach ( $posts as $post_id ) { 547 548 // The routines for topics ang replies are different, so use the 549 // correct one based on the post type 550 switch ( get_post_type( $post_id ) ) { 551 552 case bbp_get_topic_post_type() : 553 bbp_spam_topic( $post_id ); 554 break; 555 556 case bbp_get_reply_post_type() : 557 bbp_spam_reply( $post_id ); 558 break; 559 } 560 } 561 } 562 563 // Switch back to current site 564 bbp_restore_current_site(); 565 } 566 567 // Delete user options 568 bbp_delete_user_options( $user_id ); 569 570 // Success 571 return true; 572 } 573 574 /** 575 * Mark a users topics and replies as spam when the user is marked as spam 576 * 577 * @since 2.0.0 bbPress (r3405) 578 * 579 * @param int $user_id Optional. User ID to unspam. Defaults to displayed user. 580 * 581 * @return bool If no user ID passed. 582 */ 583 function bbp_make_ham_user( $user_id = 0 ) { 584 585 // Use displayed user if it's not yourself 586 if ( empty( $user_id ) && bbp_is_single_user() && ! bbp_is_user_home() ) { 587 $user_id = bbp_get_displayed_user_id(); 588 } 589 590 // Bail if no user ID 591 if ( empty( $user_id ) ) { 592 return false; 593 } 594 595 // Bail if user ID is keymaster 596 if ( bbp_is_user_keymaster( $user_id ) ) { 597 return false; 598 } 599 600 // Arm the torpedos 601 $bbp_db = bbp_db(); 602 603 // Get the blog IDs of the user to mark as spam 604 $blogs = get_blogs_of_user( $user_id, true ); 605 606 // If user has no blogs, they are a guest on this site 607 if ( empty( $blogs ) ) { 608 $blogs[ $bbp_db->blogid ] = array(); 609 } 610 611 // Get array of post types to mark as spam 612 $post_types = array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ); 613 $post_types = "'" . implode( "', '", $post_types ) . "'"; 614 615 // Get array of statuses to unmark as spam 616 $post_statuses = array( bbp_get_spam_status_id() ); 617 $post_statuses = "'" . implode( "', '", $post_statuses ) . "'"; 618 619 // Loop through blogs and remove their posts 620 foreach ( (array) array_keys( $blogs ) as $blog_id ) { 621 622 // Switch to the site ID 623 bbp_switch_to_site( $blog_id ); 624 625 // Get topics and replies 626 $query = $bbp_db->prepare( "SELECT ID FROM {$bbp_db->posts} WHERE post_author = %d AND post_status IN ( {$post_statuses} ) AND post_type IN ( {$post_types} )", $user_id ); 627 $posts = $bbp_db->get_col( $query ); 628 629 // Loop through posts and spam them 630 if ( ! empty( $posts ) ) { 631 foreach ( $posts as $post_id ) { 632 633 // The routines for topics ang replies are different, so use the 634 // correct one based on the post type 635 switch ( get_post_type( $post_id ) ) { 636 637 case bbp_get_topic_post_type() : 638 bbp_unspam_topic( $post_id ); 639 break; 640 641 case bbp_get_reply_post_type() : 642 bbp_unspam_reply( $post_id ); 643 break; 644 } 645 } 646 } 647 648 // Switch back to current site 649 bbp_restore_current_site(); 650 } 651 652 // Update topic & reply counts 653 bbp_update_user_topic_count( $user_id, bbp_get_user_topic_count_raw( $user_id ) ); 654 bbp_update_user_reply_count( $user_id, bbp_get_user_reply_count_raw( $user_id ) ); 655 656 // Update last posted (to now) 657 bbp_update_user_last_posted( $user_id ); 658 659 // Success 660 return true; 661 } 662 663 /** 664 * Checks if the user has been marked as deleted. 665 * 666 * @since 2.0.0 bbPress (r3355) 667 * 668 * @param int $user_id int The ID for the user. 669 * @return bool True if deleted, False if not. 670 */ 671 function bbp_is_user_deleted( $user_id = 0 ) { 672 673 // Default to current user 674 if ( empty( $user_id ) && is_user_logged_in() ) { 675 $user_id = bbp_get_current_user_id(); 676 } 677 678 // No user to check 679 if ( empty( $user_id ) ) { 680 return false; 681 } 682 683 // Assume user is not deleted 684 $is_deleted = false; 685 686 // Get user data 687 $user = get_userdata( $user_id ); 688 689 // No user found 690 if ( empty( $user ) ) { 691 $is_deleted = true; 692 693 // Check if deleted 694 } elseif ( ! empty( $user->deleted ) ) { 695 $is_deleted = true; 696 } 697 698 // Filter & return 699 return (bool) apply_filters( 'bbp_core_is_user_deleted', $is_deleted ); 700 } 701 702 /** 703 * Checks if user is active 704 * 705 * @since 2.0.0 bbPress (r3502) 706 * 707 * @param int $user_id The user ID to check 708 * @return bool True if public, false if not 709 */ 710 function bbp_is_user_active( $user_id = 0 ) { 711 712 // No user to check 713 $user_id = bbp_get_user_id( $user_id, false, true ); 714 if ( empty( $user_id ) ) { 715 return false; 716 } 717 718 // Check spam 719 if ( bbp_is_user_spammer( $user_id ) ) { 720 return false; 721 } 722 723 // Check deleted 724 if ( bbp_is_user_deleted( $user_id ) ) { 725 return false; 726 } 727 728 // Assume true if not spam or deleted 729 return true; 730 } 731 732 /** 733 * Checks if user is not active. 734 * 735 * @since 2.0.0 bbPress (r3502) 736 * 737 * @param int $user_id The user ID to check. Defaults to current user ID 738 * @return bool True if inactive, false if active 739 */ 740 function bbp_is_user_inactive( $user_id = 0 ) { 741 return ! bbp_is_user_active( $user_id ); 742 } 743 744 /** 745 * Checks if user is a keymaster 746 * 747 * @since 2.3.0 bbPress (r4783) 748 * 749 * @param int $user_id 750 * @return bool True if keymaster, false if not 751 */ 752 function bbp_is_user_keymaster( $user_id = 0 ) { 753 $_user_id = bbp_get_user_id( $user_id, false, true ); 754 $retval = user_can( $_user_id, 'keep_gate' ); 755 756 // Filter & return 757 return (bool) apply_filters( 'bbp_is_user_keymaster', $retval, $_user_id, $user_id ); 758 } 759 760 /** 761 * Does a user have a profile for the current site 762 * 763 * @since 2.2.0 bbPress (r4362) 764 * 765 * @param int $user_id User ID to check 766 * 767 * @return bool Whether or not the user has a profile on this blog_id. 768 */ 769 function bbp_user_has_profile( $user_id = 0 ) { 770 771 // Assume every user has a profile 772 $retval = true; 773 774 // Validate user ID, default to displayed or current user 775 $user_id = bbp_get_user_id( $user_id, true, true ); 776 777 // Try to get this user's data 778 $user = get_userdata( $user_id ); 779 780 // No user found, return false 781 if ( empty( $user ) ) { 782 $retval = false; 783 784 // User is inactive, and current user is not a keymaster 785 } elseif ( ! bbp_is_user_keymaster() && bbp_is_user_inactive( $user->ID ) ) { 786 $retval = false; 787 } 788 789 // Filter & return 790 return (bool) apply_filters( 'bbp_show_user_profile', $retval, $user_id ); 791 } 792 793 /** Moderators ****************************************************************/ 794 795 /** 796 * Add a moderator to an object 797 * 798 * @since 2.6.0 bbPress (r6056) 799 * 800 * @param int $object_id Traditionally a post ID 801 * @param int $user_id User ID 802 * @param string $object_type Type of meta (post,term,user,comment) 803 * 804 * @return bool 805 */ 806 function bbp_add_moderator( $object_id = 0, $user_id = 0, $object_type = 'post' ) { 807 return bbp_add_user_to_object( $object_id, $user_id, '_bbp_moderator_id', $object_type ); 808 } 809 810 /** 811 * Remove a moderator user ID from an object 812 * 813 * @since 2.6.0 bbPress (r6056) 814 * 815 * @param int $object_id Traditionally a post ID 816 * @param int $user_id User ID 817 * @param string $object_type Type of meta (post,term,user,comment) 818 * 819 * @return bool 820 */ 821 function bbp_remove_moderator( $object_id = 0, $user_id = 0, $object_type = 'post' ) { 822 return bbp_remove_user_from_object( $object_id, $user_id, '_bbp_moderator_id', $object_type ); 823 } 824 825 /** 826 * Get user IDs of moderators for an object 827 * 828 * @since 2.6.0 bbPress (r6056) 829 * 830 * @param int $object_id Traditionally a post ID 831 * @param string $object_type Type of meta (post,term,user,comment) 832 * 833 * @return array 834 */ 835 function bbp_get_moderator_ids( $object_id = 0, $object_type = 'post' ) { 836 return bbp_get_users_for_object( $object_id, '_bbp_moderator_id', $object_type ); 837 } 838 839 /** 840 * Get moderators for a specific object ID. Will return global moderators when 841 * object ID is empty. 842 * 843 * @since 2.6.0 bbPress (r6056) 844 * 845 * @param int $object_id Traditionally a post ID 846 * @param string $object_type Type of meta (post,term,user,comment) 847 * 848 * @return array 849 */ 850 function bbp_get_moderators( $object_id = 0, $object_type = 'post' ) { 851 852 // Get global moderators 853 if ( empty( $object_id ) ) { 854 $users = get_users( array( 855 'role__in' => bbp_get_moderator_role(), 856 ) ); 857 858 // Get object moderators 859 } else { 860 $users = get_users( array( 861 'include' => bbp_get_moderator_ids( $object_id, $object_type ), 862 ) ); 863 } 864 865 // Filter & return 866 return (array) apply_filters( 'bbp_get_moderators', $users, $object_id, $object_type ); 867 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sat Dec 21 01:00:52 2024 | Cross-referenced by PHPXref 0.7.1 |