Edit File by line
/home/zeestwma/richards.../wp-inclu...
File: user.php
}
[1000] Fix | Delete
[1001] Fix | Delete
/**
[1002] Fix | Delete
* Gets the sites a user belongs to.
[1003] Fix | Delete
*
[1004] Fix | Delete
* @since 3.0.0
[1005] Fix | Delete
* @since 4.7.0 Converted to use `get_sites()`.
[1006] Fix | Delete
*
[1007] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[1008] Fix | Delete
*
[1009] Fix | Delete
* @param int $user_id User ID
[1010] Fix | Delete
* @param bool $all Whether to retrieve all sites, or only sites that are not
[1011] Fix | Delete
* marked as deleted, archived, or spam.
[1012] Fix | Delete
* @return object[] A list of the user's sites. An empty array if the user doesn't exist
[1013] Fix | Delete
* or belongs to no sites.
[1014] Fix | Delete
*/
[1015] Fix | Delete
function get_blogs_of_user( $user_id, $all = false ) {
[1016] Fix | Delete
global $wpdb;
[1017] Fix | Delete
[1018] Fix | Delete
$user_id = (int) $user_id;
[1019] Fix | Delete
[1020] Fix | Delete
// Logged out users can't have sites.
[1021] Fix | Delete
if ( empty( $user_id ) ) {
[1022] Fix | Delete
return array();
[1023] Fix | Delete
}
[1024] Fix | Delete
[1025] Fix | Delete
/**
[1026] Fix | Delete
* Filters the list of a user's sites before it is populated.
[1027] Fix | Delete
*
[1028] Fix | Delete
* Returning a non-null value from the filter will effectively short circuit
[1029] Fix | Delete
* get_blogs_of_user(), returning that value instead.
[1030] Fix | Delete
*
[1031] Fix | Delete
* @since 4.6.0
[1032] Fix | Delete
*
[1033] Fix | Delete
* @param null|object[] $sites An array of site objects of which the user is a member.
[1034] Fix | Delete
* @param int $user_id User ID.
[1035] Fix | Delete
* @param bool $all Whether the returned array should contain all sites, including
[1036] Fix | Delete
* those marked 'deleted', 'archived', or 'spam'. Default false.
[1037] Fix | Delete
*/
[1038] Fix | Delete
$sites = apply_filters( 'pre_get_blogs_of_user', null, $user_id, $all );
[1039] Fix | Delete
[1040] Fix | Delete
if ( null !== $sites ) {
[1041] Fix | Delete
return $sites;
[1042] Fix | Delete
}
[1043] Fix | Delete
[1044] Fix | Delete
$keys = get_user_meta( $user_id );
[1045] Fix | Delete
if ( empty( $keys ) ) {
[1046] Fix | Delete
return array();
[1047] Fix | Delete
}
[1048] Fix | Delete
[1049] Fix | Delete
if ( ! is_multisite() ) {
[1050] Fix | Delete
$site_id = get_current_blog_id();
[1051] Fix | Delete
$sites = array( $site_id => new stdClass() );
[1052] Fix | Delete
$sites[ $site_id ]->userblog_id = $site_id;
[1053] Fix | Delete
$sites[ $site_id ]->blogname = get_option( 'blogname' );
[1054] Fix | Delete
$sites[ $site_id ]->domain = '';
[1055] Fix | Delete
$sites[ $site_id ]->path = '';
[1056] Fix | Delete
$sites[ $site_id ]->site_id = 1;
[1057] Fix | Delete
$sites[ $site_id ]->siteurl = get_option( 'siteurl' );
[1058] Fix | Delete
$sites[ $site_id ]->archived = 0;
[1059] Fix | Delete
$sites[ $site_id ]->spam = 0;
[1060] Fix | Delete
$sites[ $site_id ]->deleted = 0;
[1061] Fix | Delete
return $sites;
[1062] Fix | Delete
}
[1063] Fix | Delete
[1064] Fix | Delete
$site_ids = array();
[1065] Fix | Delete
[1066] Fix | Delete
if ( isset( $keys[ $wpdb->base_prefix . 'capabilities' ] ) && defined( 'MULTISITE' ) ) {
[1067] Fix | Delete
$site_ids[] = 1;
[1068] Fix | Delete
unset( $keys[ $wpdb->base_prefix . 'capabilities' ] );
[1069] Fix | Delete
}
[1070] Fix | Delete
[1071] Fix | Delete
$keys = array_keys( $keys );
[1072] Fix | Delete
[1073] Fix | Delete
foreach ( $keys as $key ) {
[1074] Fix | Delete
if ( ! str_ends_with( $key, 'capabilities' ) ) {
[1075] Fix | Delete
continue;
[1076] Fix | Delete
}
[1077] Fix | Delete
if ( $wpdb->base_prefix && ! str_starts_with( $key, $wpdb->base_prefix ) ) {
[1078] Fix | Delete
continue;
[1079] Fix | Delete
}
[1080] Fix | Delete
$site_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key );
[1081] Fix | Delete
if ( ! is_numeric( $site_id ) ) {
[1082] Fix | Delete
continue;
[1083] Fix | Delete
}
[1084] Fix | Delete
[1085] Fix | Delete
$site_ids[] = (int) $site_id;
[1086] Fix | Delete
}
[1087] Fix | Delete
[1088] Fix | Delete
$sites = array();
[1089] Fix | Delete
[1090] Fix | Delete
if ( ! empty( $site_ids ) ) {
[1091] Fix | Delete
$args = array(
[1092] Fix | Delete
'number' => '',
[1093] Fix | Delete
'site__in' => $site_ids,
[1094] Fix | Delete
);
[1095] Fix | Delete
if ( ! $all ) {
[1096] Fix | Delete
$args['archived'] = 0;
[1097] Fix | Delete
$args['spam'] = 0;
[1098] Fix | Delete
$args['deleted'] = 0;
[1099] Fix | Delete
}
[1100] Fix | Delete
[1101] Fix | Delete
$_sites = get_sites( $args );
[1102] Fix | Delete
[1103] Fix | Delete
foreach ( $_sites as $site ) {
[1104] Fix | Delete
$sites[ $site->id ] = (object) array(
[1105] Fix | Delete
'userblog_id' => $site->id,
[1106] Fix | Delete
'blogname' => $site->blogname,
[1107] Fix | Delete
'domain' => $site->domain,
[1108] Fix | Delete
'path' => $site->path,
[1109] Fix | Delete
'site_id' => $site->network_id,
[1110] Fix | Delete
'siteurl' => $site->siteurl,
[1111] Fix | Delete
'archived' => $site->archived,
[1112] Fix | Delete
'mature' => $site->mature,
[1113] Fix | Delete
'spam' => $site->spam,
[1114] Fix | Delete
'deleted' => $site->deleted,
[1115] Fix | Delete
);
[1116] Fix | Delete
}
[1117] Fix | Delete
}
[1118] Fix | Delete
[1119] Fix | Delete
/**
[1120] Fix | Delete
* Filters the list of sites a user belongs to.
[1121] Fix | Delete
*
[1122] Fix | Delete
* @since MU (3.0.0)
[1123] Fix | Delete
*
[1124] Fix | Delete
* @param object[] $sites An array of site objects belonging to the user.
[1125] Fix | Delete
* @param int $user_id User ID.
[1126] Fix | Delete
* @param bool $all Whether the returned sites array should contain all sites, including
[1127] Fix | Delete
* those marked 'deleted', 'archived', or 'spam'. Default false.
[1128] Fix | Delete
*/
[1129] Fix | Delete
return apply_filters( 'get_blogs_of_user', $sites, $user_id, $all );
[1130] Fix | Delete
}
[1131] Fix | Delete
[1132] Fix | Delete
/**
[1133] Fix | Delete
* Finds out whether a user is a member of a given blog.
[1134] Fix | Delete
*
[1135] Fix | Delete
* @since MU (3.0.0)
[1136] Fix | Delete
*
[1137] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[1138] Fix | Delete
*
[1139] Fix | Delete
* @param int $user_id Optional. The unique ID of the user. Defaults to the current user.
[1140] Fix | Delete
* @param int $blog_id Optional. ID of the blog to check. Defaults to the current site.
[1141] Fix | Delete
* @return bool
[1142] Fix | Delete
*/
[1143] Fix | Delete
function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
[1144] Fix | Delete
global $wpdb;
[1145] Fix | Delete
[1146] Fix | Delete
$user_id = (int) $user_id;
[1147] Fix | Delete
$blog_id = (int) $blog_id;
[1148] Fix | Delete
[1149] Fix | Delete
if ( empty( $user_id ) ) {
[1150] Fix | Delete
$user_id = get_current_user_id();
[1151] Fix | Delete
}
[1152] Fix | Delete
[1153] Fix | Delete
/*
[1154] Fix | Delete
* Technically not needed, but does save calls to get_site() and get_user_meta()
[1155] Fix | Delete
* in the event that the function is called when a user isn't logged in.
[1156] Fix | Delete
*/
[1157] Fix | Delete
if ( empty( $user_id ) ) {
[1158] Fix | Delete
return false;
[1159] Fix | Delete
} else {
[1160] Fix | Delete
$user = get_userdata( $user_id );
[1161] Fix | Delete
if ( ! $user instanceof WP_User ) {
[1162] Fix | Delete
return false;
[1163] Fix | Delete
}
[1164] Fix | Delete
}
[1165] Fix | Delete
[1166] Fix | Delete
if ( ! is_multisite() ) {
[1167] Fix | Delete
return true;
[1168] Fix | Delete
}
[1169] Fix | Delete
[1170] Fix | Delete
if ( empty( $blog_id ) ) {
[1171] Fix | Delete
$blog_id = get_current_blog_id();
[1172] Fix | Delete
}
[1173] Fix | Delete
[1174] Fix | Delete
$blog = get_site( $blog_id );
[1175] Fix | Delete
[1176] Fix | Delete
if ( ! $blog || ! isset( $blog->domain ) || $blog->archived || $blog->spam || $blog->deleted ) {
[1177] Fix | Delete
return false;
[1178] Fix | Delete
}
[1179] Fix | Delete
[1180] Fix | Delete
$keys = get_user_meta( $user_id );
[1181] Fix | Delete
if ( empty( $keys ) ) {
[1182] Fix | Delete
return false;
[1183] Fix | Delete
}
[1184] Fix | Delete
[1185] Fix | Delete
// No underscore before capabilities in $base_capabilities_key.
[1186] Fix | Delete
$base_capabilities_key = $wpdb->base_prefix . 'capabilities';
[1187] Fix | Delete
$site_capabilities_key = $wpdb->base_prefix . $blog_id . '_capabilities';
[1188] Fix | Delete
[1189] Fix | Delete
if ( isset( $keys[ $base_capabilities_key ] ) && 1 === $blog_id ) {
[1190] Fix | Delete
return true;
[1191] Fix | Delete
}
[1192] Fix | Delete
[1193] Fix | Delete
if ( isset( $keys[ $site_capabilities_key ] ) ) {
[1194] Fix | Delete
return true;
[1195] Fix | Delete
}
[1196] Fix | Delete
[1197] Fix | Delete
return false;
[1198] Fix | Delete
}
[1199] Fix | Delete
[1200] Fix | Delete
/**
[1201] Fix | Delete
* Adds meta data to a user.
[1202] Fix | Delete
*
[1203] Fix | Delete
* @since 3.0.0
[1204] Fix | Delete
*
[1205] Fix | Delete
* @param int $user_id User ID.
[1206] Fix | Delete
* @param string $meta_key Metadata name.
[1207] Fix | Delete
* @param mixed $meta_value Metadata value. Arrays and objects are stored as serialized data and
[1208] Fix | Delete
* will be returned as the same type when retrieved. Other data types will
[1209] Fix | Delete
* be stored as strings in the database:
[1210] Fix | Delete
* - false is stored and retrieved as an empty string ('')
[1211] Fix | Delete
* - true is stored and retrieved as '1'
[1212] Fix | Delete
* - numbers (both integer and float) are stored and retrieved as strings
[1213] Fix | Delete
* Must be serializable if non-scalar.
[1214] Fix | Delete
* @param bool $unique Optional. Whether the same key should not be added.
[1215] Fix | Delete
* Default false.
[1216] Fix | Delete
* @return int|false Meta ID on success, false on failure.
[1217] Fix | Delete
*/
[1218] Fix | Delete
function add_user_meta( $user_id, $meta_key, $meta_value, $unique = false ) {
[1219] Fix | Delete
return add_metadata( 'user', $user_id, $meta_key, $meta_value, $unique );
[1220] Fix | Delete
}
[1221] Fix | Delete
[1222] Fix | Delete
/**
[1223] Fix | Delete
* Removes metadata matching criteria from a user.
[1224] Fix | Delete
*
[1225] Fix | Delete
* You can match based on the key, or key and value. Removing based on key and
[1226] Fix | Delete
* value, will keep from removing duplicate metadata with the same key. It also
[1227] Fix | Delete
* allows removing all metadata matching key, if needed.
[1228] Fix | Delete
*
[1229] Fix | Delete
* @since 3.0.0
[1230] Fix | Delete
*
[1231] Fix | Delete
* @link https://developer.wordpress.org/reference/functions/delete_user_meta/
[1232] Fix | Delete
*
[1233] Fix | Delete
* @param int $user_id User ID
[1234] Fix | Delete
* @param string $meta_key Metadata name.
[1235] Fix | Delete
* @param mixed $meta_value Optional. Metadata value. If provided,
[1236] Fix | Delete
* rows will only be removed that match the value.
[1237] Fix | Delete
* Must be serializable if non-scalar. Default empty.
[1238] Fix | Delete
* @return bool True on success, false on failure.
[1239] Fix | Delete
*/
[1240] Fix | Delete
function delete_user_meta( $user_id, $meta_key, $meta_value = '' ) {
[1241] Fix | Delete
return delete_metadata( 'user', $user_id, $meta_key, $meta_value );
[1242] Fix | Delete
}
[1243] Fix | Delete
[1244] Fix | Delete
/**
[1245] Fix | Delete
* Retrieves user meta field for a user.
[1246] Fix | Delete
*
[1247] Fix | Delete
* @since 3.0.0
[1248] Fix | Delete
*
[1249] Fix | Delete
* @link https://developer.wordpress.org/reference/functions/get_user_meta/
[1250] Fix | Delete
*
[1251] Fix | Delete
* @param int $user_id User ID.
[1252] Fix | Delete
* @param string $key Optional. The meta key to retrieve. By default,
[1253] Fix | Delete
* returns data for all keys.
[1254] Fix | Delete
* @param bool $single Optional. Whether to return a single value.
[1255] Fix | Delete
* This parameter has no effect if `$key` is not specified.
[1256] Fix | Delete
* Default false.
[1257] Fix | Delete
* @return mixed An array of values if `$single` is false.
[1258] Fix | Delete
* The value of meta data field if `$single` is true.
[1259] Fix | Delete
* False for an invalid `$user_id` (non-numeric, zero, or negative value).
[1260] Fix | Delete
* An empty array if a valid but non-existing user ID is passed and `$single` is false.
[1261] Fix | Delete
* An empty string if a valid but non-existing user ID is passed and `$single` is true.
[1262] Fix | Delete
* Note: Non-serialized values are returned as strings:
[1263] Fix | Delete
* - false values are returned as empty strings ('')
[1264] Fix | Delete
* - true values are returned as '1'
[1265] Fix | Delete
* - numbers (both integer and float) are returned as strings
[1266] Fix | Delete
* Arrays and objects retain their original type.
[1267] Fix | Delete
*/
[1268] Fix | Delete
function get_user_meta( $user_id, $key = '', $single = false ) {
[1269] Fix | Delete
return get_metadata( 'user', $user_id, $key, $single );
[1270] Fix | Delete
}
[1271] Fix | Delete
[1272] Fix | Delete
/**
[1273] Fix | Delete
* Updates user meta field based on user ID.
[1274] Fix | Delete
*
[1275] Fix | Delete
* Use the $prev_value parameter to differentiate between meta fields with the
[1276] Fix | Delete
* same key and user ID.
[1277] Fix | Delete
*
[1278] Fix | Delete
* If the meta field for the user does not exist, it will be added.
[1279] Fix | Delete
*
[1280] Fix | Delete
* @since 3.0.0
[1281] Fix | Delete
*
[1282] Fix | Delete
* @link https://developer.wordpress.org/reference/functions/update_user_meta/
[1283] Fix | Delete
*
[1284] Fix | Delete
* @param int $user_id User ID.
[1285] Fix | Delete
* @param string $meta_key Metadata key.
[1286] Fix | Delete
* @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
[1287] Fix | Delete
* @param mixed $prev_value Optional. Previous value to check before updating.
[1288] Fix | Delete
* If specified, only update existing metadata entries with
[1289] Fix | Delete
* this value. Otherwise, update all entries. Default empty.
[1290] Fix | Delete
* @return int|bool Meta ID if the key didn't exist, true on successful update,
[1291] Fix | Delete
* false on failure or if the value passed to the function
[1292] Fix | Delete
* is the same as the one that is already in the database.
[1293] Fix | Delete
*/
[1294] Fix | Delete
function update_user_meta( $user_id, $meta_key, $meta_value, $prev_value = '' ) {
[1295] Fix | Delete
return update_metadata( 'user', $user_id, $meta_key, $meta_value, $prev_value );
[1296] Fix | Delete
}
[1297] Fix | Delete
[1298] Fix | Delete
/**
[1299] Fix | Delete
* Counts number of users who have each of the user roles.
[1300] Fix | Delete
*
[1301] Fix | Delete
* Assumes there are neither duplicated nor orphaned capabilities meta_values.
[1302] Fix | Delete
* Assumes role names are unique phrases. Same assumption made by WP_User_Query::prepare_query()
[1303] Fix | Delete
* Using $strategy = 'time' this is CPU-intensive and should handle around 10^7 users.
[1304] Fix | Delete
* Using $strategy = 'memory' this is memory-intensive and should handle around 10^5 users, but see WP Bug #12257.
[1305] Fix | Delete
*
[1306] Fix | Delete
* @since 3.0.0
[1307] Fix | Delete
* @since 4.4.0 The number of users with no role is now included in the `none` element.
[1308] Fix | Delete
* @since 4.9.0 The `$site_id` parameter was added to support multisite.
[1309] Fix | Delete
*
[1310] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[1311] Fix | Delete
*
[1312] Fix | Delete
* @param string $strategy Optional. The computational strategy to use when counting the users.
[1313] Fix | Delete
* Accepts either 'time' or 'memory'. Default 'time'.
[1314] Fix | Delete
* @param int|null $site_id Optional. The site ID to count users for. Defaults to the current site.
[1315] Fix | Delete
* @return array {
[1316] Fix | Delete
* User counts.
[1317] Fix | Delete
*
[1318] Fix | Delete
* @type int $total_users Total number of users on the site.
[1319] Fix | Delete
* @type int[] $avail_roles Array of user counts keyed by user role.
[1320] Fix | Delete
* }
[1321] Fix | Delete
*/
[1322] Fix | Delete
function count_users( $strategy = 'time', $site_id = null ) {
[1323] Fix | Delete
global $wpdb;
[1324] Fix | Delete
[1325] Fix | Delete
// Initialize.
[1326] Fix | Delete
if ( ! $site_id ) {
[1327] Fix | Delete
$site_id = get_current_blog_id();
[1328] Fix | Delete
}
[1329] Fix | Delete
[1330] Fix | Delete
/**
[1331] Fix | Delete
* Filters the user count before queries are run.
[1332] Fix | Delete
*
[1333] Fix | Delete
* Return a non-null value to cause count_users() to return early.
[1334] Fix | Delete
*
[1335] Fix | Delete
* @since 5.1.0
[1336] Fix | Delete
*
[1337] Fix | Delete
* @param null|array $result The value to return instead. Default null to continue with the query.
[1338] Fix | Delete
* @param string $strategy Optional. The computational strategy to use when counting the users.
[1339] Fix | Delete
* Accepts either 'time' or 'memory'. Default 'time'.
[1340] Fix | Delete
* @param int $site_id The site ID to count users for.
[1341] Fix | Delete
*/
[1342] Fix | Delete
$pre = apply_filters( 'pre_count_users', null, $strategy, $site_id );
[1343] Fix | Delete
[1344] Fix | Delete
if ( null !== $pre ) {
[1345] Fix | Delete
return $pre;
[1346] Fix | Delete
}
[1347] Fix | Delete
[1348] Fix | Delete
$blog_prefix = $wpdb->get_blog_prefix( $site_id );
[1349] Fix | Delete
$result = array();
[1350] Fix | Delete
[1351] Fix | Delete
if ( 'time' === $strategy ) {
[1352] Fix | Delete
if ( is_multisite() && get_current_blog_id() !== $site_id ) {
[1353] Fix | Delete
switch_to_blog( $site_id );
[1354] Fix | Delete
$avail_roles = wp_roles()->get_names();
[1355] Fix | Delete
restore_current_blog();
[1356] Fix | Delete
} else {
[1357] Fix | Delete
$avail_roles = wp_roles()->get_names();
[1358] Fix | Delete
}
[1359] Fix | Delete
[1360] Fix | Delete
// Build a CPU-intensive query that will return concise information.
[1361] Fix | Delete
$select_count = array();
[1362] Fix | Delete
foreach ( $avail_roles as $this_role => $name ) {
[1363] Fix | Delete
$select_count[] = $wpdb->prepare( 'COUNT(NULLIF(`meta_value` LIKE %s, false))', '%' . $wpdb->esc_like( '"' . $this_role . '"' ) . '%' );
[1364] Fix | Delete
}
[1365] Fix | Delete
$select_count[] = "COUNT(NULLIF(`meta_value` = 'a:0:{}', false))";
[1366] Fix | Delete
$select_count = implode( ', ', $select_count );
[1367] Fix | Delete
[1368] Fix | Delete
// Add the meta_value index to the selection list, then run the query.
[1369] Fix | Delete
$row = $wpdb->get_row(
[1370] Fix | Delete
"
[1371] Fix | Delete
SELECT {$select_count}, COUNT(*)
[1372] Fix | Delete
FROM {$wpdb->usermeta}
[1373] Fix | Delete
INNER JOIN {$wpdb->users} ON user_id = ID
[1374] Fix | Delete
WHERE meta_key = '{$blog_prefix}capabilities'
[1375] Fix | Delete
",
[1376] Fix | Delete
ARRAY_N
[1377] Fix | Delete
);
[1378] Fix | Delete
[1379] Fix | Delete
// Run the previous loop again to associate results with role names.
[1380] Fix | Delete
$col = 0;
[1381] Fix | Delete
$role_counts = array();
[1382] Fix | Delete
foreach ( $avail_roles as $this_role => $name ) {
[1383] Fix | Delete
$count = (int) $row[ $col++ ];
[1384] Fix | Delete
if ( $count > 0 ) {
[1385] Fix | Delete
$role_counts[ $this_role ] = $count;
[1386] Fix | Delete
}
[1387] Fix | Delete
}
[1388] Fix | Delete
[1389] Fix | Delete
$role_counts['none'] = (int) $row[ $col++ ];
[1390] Fix | Delete
[1391] Fix | Delete
// Get the meta_value index from the end of the result set.
[1392] Fix | Delete
$total_users = (int) $row[ $col ];
[1393] Fix | Delete
[1394] Fix | Delete
$result['total_users'] = $total_users;
[1395] Fix | Delete
$result['avail_roles'] =& $role_counts;
[1396] Fix | Delete
} else {
[1397] Fix | Delete
$avail_roles = array(
[1398] Fix | Delete
'none' => 0,
[1399] Fix | Delete
);
[1400] Fix | Delete
[1401] Fix | Delete
$users_of_blog = $wpdb->get_col(
[1402] Fix | Delete
"
[1403] Fix | Delete
SELECT meta_value
[1404] Fix | Delete
FROM {$wpdb->usermeta}
[1405] Fix | Delete
INNER JOIN {$wpdb->users} ON user_id = ID
[1406] Fix | Delete
WHERE meta_key = '{$blog_prefix}capabilities'
[1407] Fix | Delete
"
[1408] Fix | Delete
);
[1409] Fix | Delete
[1410] Fix | Delete
foreach ( $users_of_blog as $caps_meta ) {
[1411] Fix | Delete
$b_roles = maybe_unserialize( $caps_meta );
[1412] Fix | Delete
if ( ! is_array( $b_roles ) ) {
[1413] Fix | Delete
continue;
[1414] Fix | Delete
}
[1415] Fix | Delete
if ( empty( $b_roles ) ) {
[1416] Fix | Delete
++$avail_roles['none'];
[1417] Fix | Delete
}
[1418] Fix | Delete
foreach ( $b_roles as $b_role => $val ) {
[1419] Fix | Delete
if ( isset( $avail_roles[ $b_role ] ) ) {
[1420] Fix | Delete
++$avail_roles[ $b_role ];
[1421] Fix | Delete
} else {
[1422] Fix | Delete
$avail_roles[ $b_role ] = 1;
[1423] Fix | Delete
}
[1424] Fix | Delete
}
[1425] Fix | Delete
}
[1426] Fix | Delete
[1427] Fix | Delete
$result['total_users'] = count( $users_of_blog );
[1428] Fix | Delete
$result['avail_roles'] =& $avail_roles;
[1429] Fix | Delete
}
[1430] Fix | Delete
[1431] Fix | Delete
return $result;
[1432] Fix | Delete
}
[1433] Fix | Delete
[1434] Fix | Delete
/**
[1435] Fix | Delete
* Returns the number of active users in your installation.
[1436] Fix | Delete
*
[1437] Fix | Delete
* Note that on a large site the count may be cached and only updated twice daily.
[1438] Fix | Delete
*
[1439] Fix | Delete
* @since MU (3.0.0)
[1440] Fix | Delete
* @since 4.8.0 The `$network_id` parameter has been added.
[1441] Fix | Delete
* @since 6.0.0 Moved to wp-includes/user.php.
[1442] Fix | Delete
*
[1443] Fix | Delete
* @param int|null $network_id ID of the network. Defaults to the current network.
[1444] Fix | Delete
* @return int Number of active users on the network.
[1445] Fix | Delete
*/
[1446] Fix | Delete
function get_user_count( $network_id = null ) {
[1447] Fix | Delete
if ( ! is_multisite() && null !== $network_id ) {
[1448] Fix | Delete
_doing_it_wrong(
[1449] Fix | Delete
__FUNCTION__,
[1450] Fix | Delete
sprintf(
[1451] Fix | Delete
/* translators: %s: $network_id */
[1452] Fix | Delete
__( 'Unable to pass %s if not using multisite.' ),
[1453] Fix | Delete
'<code>$network_id</code>'
[1454] Fix | Delete
),
[1455] Fix | Delete
'6.0.0'
[1456] Fix | Delete
);
[1457] Fix | Delete
}
[1458] Fix | Delete
[1459] Fix | Delete
return (int) get_network_option( $network_id, 'user_count', -1 );
[1460] Fix | Delete
}
[1461] Fix | Delete
[1462] Fix | Delete
/**
[1463] Fix | Delete
* Updates the total count of users on the site if live user counting is enabled.
[1464] Fix | Delete
*
[1465] Fix | Delete
* @since 6.0.0
[1466] Fix | Delete
*
[1467] Fix | Delete
* @param int|null $network_id ID of the network. Defaults to the current network.
[1468] Fix | Delete
* @return bool Whether the update was successful.
[1469] Fix | Delete
*/
[1470] Fix | Delete
function wp_maybe_update_user_counts( $network_id = null ) {
[1471] Fix | Delete
if ( ! is_multisite() && null !== $network_id ) {
[1472] Fix | Delete
_doing_it_wrong(
[1473] Fix | Delete
__FUNCTION__,
[1474] Fix | Delete
sprintf(
[1475] Fix | Delete
/* translators: %s: $network_id */
[1476] Fix | Delete
__( 'Unable to pass %s if not using multisite.' ),
[1477] Fix | Delete
'<code>$network_id</code>'
[1478] Fix | Delete
),
[1479] Fix | Delete
'6.0.0'
[1480] Fix | Delete
);
[1481] Fix | Delete
}
[1482] Fix | Delete
[1483] Fix | Delete
$is_small_network = ! wp_is_large_user_count( $network_id );
[1484] Fix | Delete
/** This filter is documented in wp-includes/ms-functions.php */
[1485] Fix | Delete
if ( ! apply_filters( 'enable_live_network_counts', $is_small_network, 'users' ) ) {
[1486] Fix | Delete
return false;
[1487] Fix | Delete
}
[1488] Fix | Delete
[1489] Fix | Delete
return wp_update_user_counts( $network_id );
[1490] Fix | Delete
}
[1491] Fix | Delete
[1492] Fix | Delete
/**
[1493] Fix | Delete
* Updates the total count of users on the site.
[1494] Fix | Delete
*
[1495] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[1496] Fix | Delete
* @since 6.0.0
[1497] Fix | Delete
*
[1498] Fix | Delete
* @param int|null $network_id ID of the network. Defaults to the current network.
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function