PluginProbe
Authorizer / 3.6.0
Authorizer v3.6.0
3.15.3 3.15.2 3.15.1 3.15.0 3.14.3 3.14.4 3.14.2 3.14.1 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.10 2.9.11 2.9.12 2.9.13 2.9.2 2.9.3 2.9.6 All 126 releases
← All changes | src/authorizer/class-sync-userdata.php +50 -6 2.9.13.6.0 View file →
@@ -16,9 +16,9 @@
16 16 /**
17 17 * Contains functions for interfacing with WordPress users and syncing between
18 18 * them and users in the Authorizer lists.
19 19 */
20 -class Sync_Userdata extends Static_Instance {
20 +class Sync_Userdata extends Singleton {
21 21
22 22 /**
23 23 * Adds all WordPress users in the current site to the approved list,
24 24 * unless they are already in the blocked list. Also removes them
@@ -56,9 +56,9 @@
56 56 if ( ! Helper::in_multi_array( $user->user_email, $auth_settings_access_users_approved ) ) {
57 57 $approved_user = array(
58 58 'email' => Helper::lowercase( $user->user_email ),
59 59 'role' => count( $user->roles ) > 0 ? $user->roles[0] : '',
60 - 'date_added' => date( 'M Y', strtotime( $user->user_registered ) ),
60 + 'date_added' => wp_date( 'M Y', strtotime( $user->user_registered ) ),
61 61 'local_user' => true,
62 62 );
63 63 array_push( $auth_settings_access_users_approved, $approved_user );
64 64 $updated = true;
@@ -210,9 +210,9 @@
210 210 * @param stdClass $user Updated WP_User object for user being edited (passed by reference).
211 211 */
212 212 public function edit_user_profile_update_role( &$errors, $update, &$user ) {
213 213 // Do nothing if we're not updating role.
214 - if ( ! property_exists( $user, 'role' ) ) {
214 + if ( ! property_exists( $user, 'role' ) || ! property_exists( $user, 'ID' ) ) {
215 215 return;
216 216 }
217 217
218 218 // Safety check; will likely not fire if we reach this function.
@@ -244,9 +244,53 @@
244 244 update_option( 'auth_settings_access_users_approved', $auth_settings_access_users_approved );
245 245 }
246 246 }
247 247
248 + /**
249 + * Update user role in approved list if it's changed via bulk action on the
250 + * WordPress list users page.
251 + *
252 + * @hook set_user_role
253 + *
254 + * @param integer $user_id The user ID.
255 + * @param string $role The new role.
256 + * @param array $old_roles An array of the user's previous roles.
257 + */
258 + public function set_user_role_sync_role( $user_id = 0, $role = '', $old_roles = array() ) {
259 + // Ensure valid user ID and user has permission to edit this user.
260 + if ( empty( $user_id ) || ! current_user_can( 'edit_user', $user_id ) ) {
261 + return;
262 + }
248 263
264 + // Get original user object (fail if not a real WordPress user).
265 + $userdata = get_userdata( $user_id );
266 + if ( ! $userdata ) {
267 + return;
268 + }
269 +
270 + // If user is in approved list, update his/her associated role.
271 + if ( Authorization::get_instance()->is_email_in_list( $userdata->user_email, 'approved' ) ) {
272 + $changed = false;
273 + $options = Options::get_instance();
274 + $auth_settings_access_users_approved = $options->sanitize_user_list( $options->get( 'access_users_approved', Helper::SINGLE_CONTEXT ) );
275 + foreach ( $auth_settings_access_users_approved as $key => $check_user ) {
276 + if ( 0 === strcasecmp( $check_user['email'], $userdata->user_email ) ) {
277 + if ( empty( $role ) ) {
278 + unset( $auth_settings_access_users_approved[ $key ] );
279 + $changed = true;
280 + } elseif ( $auth_settings_access_users_approved[ $key ]['role'] !== $role ) {
281 + $auth_settings_access_users_approved[ $key ]['role'] = $role;
282 + $changed = true;
283 + }
284 + }
285 + }
286 + if ( $changed ) {
287 + update_option( 'auth_settings_access_users_approved', $auth_settings_access_users_approved );
288 + }
289 + }
290 + }
291 +
292 +
249 293 /**
250 294 * Sync any email address changes to WordPress accounts to the corresponding
251 295 * entry in the Authorizer approved list.
252 296 *
@@ -464,9 +508,9 @@
464 508 if ( ! Helper::in_multi_array( $user_email, $auth_settings_access_users_approved ) && ! Helper::in_multi_array( $user_email, $auth_settings_access_users_blocked ) ) {
465 509 $approved_user = array(
466 510 'email' => Helper::lowercase( $user_email ),
467 511 'role' => $user_role,
468 - 'date_added' => date( 'M Y', strtotime( $user->user_registered ) ),
512 + 'date_added' => wp_date( 'M Y', strtotime( $user->user_registered ) ),
469 513 'local_user' => true,
470 514 );
471 515 array_push( $auth_settings_access_users_approved, $approved_user );
472 516 update_option( 'auth_settings_access_users_approved', $auth_settings_access_users_approved );
@@ -603,9 +647,9 @@
603 647 if ( ! Helper::in_multi_array( $user_email, $auth_settings_access_users_approved ) ) {
604 648 $approved_user = array(
605 649 'email' => Helper::lowercase( $user_email ),
606 650 'role' => is_array( $user_roles ) && count( $user_roles ) > 0 ? $user_roles[0] : $default_role,
607 - 'date_added' => date( 'M Y', strtotime( $date_registered ) ),
651 + 'date_added' => wp_date( 'M Y', strtotime( $date_registered ) ),
608 652 'local_user' => true,
609 653 );
610 654 array_push( $auth_settings_access_users_approved, $approved_user );
611 655 $updated = true;
@@ -640,9 +684,9 @@
640 684 if ( ! Helper::in_multi_array( $user_email, $auth_multisite_settings_access_users_approved ) ) {
641 685 $multisite_approved_user = array(
642 686 'email' => Helper::lowercase( $user_email ),
643 687 'role' => count( $user->roles ) > 0 ? $user->roles[0] : 'administrator',
644 - 'date_added' => date( 'M Y', strtotime( $user->user_registered ) ),
688 + 'date_added' => wp_date( 'M Y', strtotime( $user->user_registered ) ),
645 689 'local_user' => true,
646 690 );
647 691 array_push( $auth_multisite_settings_access_users_approved, $multisite_approved_user );
648 692 update_blog_option( get_network()->blog_id, 'auth_multisite_settings_access_users_approved', $auth_multisite_settings_access_users_approved );