Changeset 4297
- Timestamp:
- 11/02/2012 06:00:53 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/users/functions.php
r4289 r4297 1376 1376 * @uses bbp_get_user_id() To get the user id 1377 1377 * @uses get_userdata() To get the user data 1378 * @uses apply_filters() Calls 'bbp_get_user_role' with the 1379 * role and user id 1378 * @uses apply_filters() Calls 'bbp_set_user_role' with the role and user id 1380 1379 * @return string 1381 1380 */ 1382 function bbp_set_user_role( $user_id = 0, $new_role = '' , $context = '') {1381 function bbp_set_user_role( $user_id = 0, $new_role = '' ) { 1383 1382 1384 1383 // Validate user id 1385 1384 $user_id = bbp_get_user_id( $user_id, false, false ); 1386 if ( empty( $user_id ) ) 1387 return false; 1388 1389 // Get userdata 1390 $user = get_userdata( $user_id ); 1391 1392 // Get the user's main role 1393 switch ( strtolower( $context ) ) { 1394 1395 // bbPress context 1396 case 'forum' : 1397 case 'forums' : 1398 case 'bbpress' : 1399 $forum_roles = array_intersect( array_values( $user->roles ), array_keys( bbp_get_forums_editable_roles() ) ); 1400 1401 foreach ( $forum_roles as $forum_role ) { 1402 $user->remove_role( $forum_role ); 1385 $user = get_userdata( $user_id ); 1386 1387 // User exists 1388 if ( !empty( $user ) ) { 1389 1390 // Remove previous forum roles if any exist 1391 $roles = bbp_get_user_role( $user_id ); 1392 1393 if ( !empty( $roles ) ) { 1394 foreach ( $roles as $role ) { 1395 $user->remove_role( $role ); 1403 1396 } 1404 1405 $user->add_role( $new_role ); 1406 1407 break; 1408 1409 // WordPress core context 1410 case '' : 1411 case 'blog' : 1412 case 'wordpress' : 1413 default : 1414 $blog_roles = array_intersect( array_values( $user->roles ), array_keys( get_editable_roles() ) ); 1415 1416 foreach ( $blog_roles as $blog_role ) { 1417 $user->remove_role( $blog_role ); 1418 } 1419 1420 $user->add_role( $new_role ); 1421 1422 break; 1423 } 1424 1425 return apply_filters( 'bbp_get_user_role', $new_role, $context, $user_id, $user ); 1397 } 1398 1399 // Add new forums role 1400 $user->add_role( $new_role ); 1401 1402 // User does don exist so return false 1403 } else { 1404 $new_role = false; 1405 } 1406 1407 return apply_filters( 'bbp_get_user_role', $new_role, $user_id, $user ); 1426 1408 } 1427 1409 … … 1434 1416 * @uses bbp_get_user_id() To get the user id 1435 1417 * @uses get_userdata() To get the user data 1436 * @uses apply_filters() Calls 'bbp_get_user_role' with the 1437 * role and user id 1418 * @uses apply_filters() Calls 'bbp_get_user_role' with the role and user id 1438 1419 * @return string 1439 1420 */ 1440 function bbp_get_user_role( $user_id = 0 , $context = '') {1421 function bbp_get_user_role( $user_id = 0 ) { 1441 1422 1442 1423 // Validate user id 1443 1424 $user_id = bbp_get_user_id( $user_id, false, false ); 1444 if ( empty( $user_id ) ) 1445 return false; 1446 1447 // Get userdata 1448 $user = get_userdata( $user_id ); 1449 1450 // User has no roles so set as empty string 1451 if ( empty( $user->roles ) ) { 1452 1453 // Assume the anonymous role if looking for a bbPress role 1454 if ( in_array( $context, array( 'forum', 'forums', 'bbpress' ) ) ) { 1455 $role = bbp_get_spectator_role(); 1456 1457 // Otherwise trust that there is no role 1458 } else { 1459 $role = ''; 1425 $user = get_userdata( $user_id ); 1426 $role = false; 1427 1428 // User has roles so lets 1429 if ( ! empty( $user->roles ) ) { 1430 $roles = array_intersect( array_values( $user->roles ), array_keys( bbp_get_editable_roles() ) ); 1431 1432 // If there's a role in the array, use the first one 1433 if ( !empty( $roles ) ) { 1434 $role = array_shift( array_values( $role ) ); 1460 1435 } 1461 1462 // User has roles so lets 1463 } else { 1464 1465 // Get the user's main role 1466 switch ( strtolower( $context ) ) { 1467 1468 // bbPress context 1469 case 'forum' : 1470 case 'forums' : 1471 case 'bbpress' : 1472 $role = array_intersect( array_values( $user->roles ), array_keys( bbp_get_forums_editable_roles() ) ); 1473 1474 // If there's a role in the array, use the first one 1475 if ( !empty( $role ) ) { 1476 $role = array_shift( array_values( $role ) ); 1477 1478 // Otherwise, give them the anonymous role 1479 } else { 1480 $role = bbp_get_spectator_role(); 1481 } 1482 1483 break; 1484 1485 // WordPress core context 1486 case '' : 1487 case 'blog' : 1488 case 'wordpress' : 1489 default : 1490 $role = array_intersect( array_values( $user->roles ), array_keys( get_editable_roles() ) ); 1491 1492 // If there's a role in the array, use the first one 1493 if ( !empty( $role ) ) { 1494 $role = array_shift( array_values( $role ) ); 1495 } 1496 1497 break; 1498 } 1499 } 1500 1501 return apply_filters( 'bbp_get_user_role', $role, $context, $user_id, $user ); 1436 } 1437 1438 return apply_filters( 'bbp_get_user_role', $role, $user_id, $user ); 1502 1439 } 1503 1440
Note: See TracChangeset
for help on using the changeset viewer.