Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion inc/Modules/Core/DB.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public function register_hooks(): void {
add_action( 'oneaccess_add_deduplicated_users', [ $this, 'add_deduplicated_users' ], 10, 1 );

// create or update tables on plugin load.
add_action( 'plugins_loaded', [ self::class, 'maybe_create_tables' ] );
self::maybe_create_tables();
Comment thread
up1512001 marked this conversation as resolved.
}

/**
Expand Down
10 changes: 8 additions & 2 deletions inc/Modules/Core/Hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,14 @@ public function register_hooks(): void {
// Trigger bulk user deduplication when governing site is configured.
add_action( 'oneaccess_governing_site_configured', [ $this, 'user_deduplication' ] );

// Send individual users to governing site when they are created.
add_action( 'user_register', [ $this->actions_controller, 'send_single_user_for_deduplication' ] );
/**
* Send individual users to governing site when they are created.
*
* Using profile_update instead of user_register as usermeta might not be set during user_register.
*
* @see https://developer.wordpress.org/reference/hooks/user_register/#more-information
*/
add_action( 'profile_update', [ $this->actions_controller, 'send_single_user_for_deduplication' ], 99 );
}

/**
Expand Down
4 changes: 2 additions & 2 deletions inc/Modules/Core/User_Roles.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public function register_hooks(): void {
add_filter( 'user_has_cap', [ $this, 'modify_user_caps' ], 10, 1 );

// create roles when plugin is loaded.
add_action( 'plugins_loaded', [ self::class, 'create_brand_admin_role' ] );
add_action( 'plugins_loaded', [ self::class, 'create_network_admin_role' ] );
self::create_brand_admin_role();
self::create_network_admin_role();
Comment thread
up1512001 marked this conversation as resolved.
}

/**
Expand Down
33 changes: 11 additions & 22 deletions inc/Modules/Rest/Governing_Site_Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ public function delete_user_from_sites( \WP_REST_Request $request ): \WP_REST_Re
return new \WP_REST_Response(
[
'success' => count( $error_log ) === 0,
'message' => __( 'User deleted from sites successfully.', 'oneaccess' ),
'message' => count( $error_log ) === 0 ? __( 'User deleted from sites successfully.', 'oneaccess' ) : __( 'User could not be deleted from some sites.', 'oneaccess' ),
'data' => [
'email' => $email,
'username' => $username,
Expand Down Expand Up @@ -729,7 +729,7 @@ public function add_user_to_sites( \WP_REST_Request $request ): \WP_REST_Respons
$error_log = [];

foreach ( $sites as $site_url ) {
$url = untrailingslashit( $site_url['url'] ?? '' );
$url = ! empty( $site_url['url'] ) ? untrailingslashit( $site_url['url'] ) : '';
if ( ! isset( $oneaccess_sites_info[ $url ] ) ) {
$error_log[] = [
'site_name' => $url ?? '',
Expand Down Expand Up @@ -840,7 +840,7 @@ public function add_user_to_sites( \WP_REST_Request $request ): \WP_REST_Respons
return new \WP_REST_Response(
[
'success' => count( $error_log ) === 0,
'message' => __( 'User added to sites successfully.', 'oneaccess' ),
'message' => count( $error_log ) === 0 ? __( 'User added to sites successfully.', 'oneaccess' ) : __( 'User could not be added to some sites.', 'oneaccess' ),
'data' => [
'email' => $email,
'username' => $username,
Expand Down Expand Up @@ -940,21 +940,13 @@ public function update_user_roles_for_sites( \WP_REST_Request $request ): \WP_RE

foreach ( $roles as $key => $value ) {
$site_key = untrailingslashit( $key );
$site = $oneaccess_sites_info[ $site_key ] ?? [];
$site_url = $site['url'] ?? '';
$site = (array) ( $oneaccess_sites_info[ $site_key ] ?? [] );
$site_url = ! empty( $site['url'] ) ? trailingslashit( $site['url'] ) : '';
$api_key = $site['api_key'] ?? '';
$new_role = $value;

// Skip duplicate or invalid sites.
if ( empty( $site_url ) || in_array( $site_url, $processed_sites, true ) ) {
$error_log[] = [
'site_name' => $site_url,
'message' => sprintf(
/* translators: %s is the site URL */
__( 'Skipping duplicate or invalid site %s.', 'oneaccess' ),
esc_html( $site_url )
),
];
continue;
}
$processed_sites[] = $site_url;
Expand Down Expand Up @@ -1013,7 +1005,7 @@ public function update_user_roles_for_sites( \WP_REST_Request $request ): \WP_RE
}

$response_data[] = [
'site' => $oneaccess_sites_info[ $key ]['name'] ?: $site_url,
'site' => $site_url,
'status' => 'success',
'message' => __( 'User role updated successfully.', 'oneaccess' ),
];
Expand All @@ -1025,7 +1017,7 @@ public function update_user_roles_for_sites( \WP_REST_Request $request ): \WP_RE
return new \WP_REST_Response(
[
'success' => count( $error_log ) === 0,
'message' => __( 'User roles updated successfully.', 'oneaccess' ),
'message' => count( $error_log ) === 0 ? __( 'User roles updated successfully.', 'oneaccess' ) : __( 'User roles could not be updated on some sites.', 'oneaccess' ),
'data' => [
'email' => $email,
'username' => $username,
Expand Down Expand Up @@ -1404,7 +1396,7 @@ public function create_users_for_sites( \WP_REST_Request $request ): \WP_REST_Re
$error_log = [];

foreach ( $sites as $site ) {
$site_url = $site['url'] ?? '';
$site_url = ! empty( $site['url'] ) ? untrailingslashit( $site['url'] ) : '';

// Skip duplicate or invalid sites.
if ( empty( $site_url ) || in_array( $site_url, $processed_sites, true ) ) {
Expand Down Expand Up @@ -1453,22 +1445,19 @@ public function create_users_for_sites( \WP_REST_Request $request ): \WP_REST_Re
__( 'Error creating user on site %s.', 'oneaccess' ),
$site_name
),
'response' => $response,
];
continue;
}

$response_body = json_decode( wp_remote_retrieve_body( $response ), true );
if ( ! $response_body['success'] ) {
if ( empty( $response_body['success'] ) ) {
$error_log[] = [
'site_name' => $site_name,
'message' => $response_body['message'] ?? sprintf(
'site_name' => $site_name,
'message' => $response_body['message'] ?? sprintf(
/* translators: %s is the site name */
__( 'Failed to create user on site %s.', 'oneaccess' ),
$site_name
),
'response' => $response,
'response_body' => $response_body,
];
continue;
}
Expand Down
75 changes: 39 additions & 36 deletions uninstall.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,46 +70,46 @@ function delete_network_plugin_data(): void {
function delete_plugin_data(): void {

// list of actions to be cleared on uninstall.
$actions_to_clear = [
'oneaccess_governing_site_configured',
'oneaccess_add_deduplicated_users',
];

// Clear scheduled actions.
if ( function_exists( 'as_unschedule_all_actions' ) ) {
foreach ( $actions_to_clear as $action ) {
as_unschedule_all_actions( $action );
}
}
$actions_to_clear = [
'oneaccess_governing_site_configured',
'oneaccess_add_deduplicated_users',
];

// Options to clean up.
$options = [
'oneaccess_child_site_api_key',
'oneaccess_consumer_api_key',
'oneaccess_db_version',
'oneaccess_governing_site_url',
'oneaccess_new_users',
'oneaccess_parent_site_url',
'oneaccess_profile_update_requests',
'oneaccess_shared_sites',
'oneaccess_site_type',
];

foreach ( $options as $option ) {
delete_option( $option );
// Clear scheduled actions.
if ( function_exists( 'as_unschedule_all_actions' ) ) {
foreach ( $actions_to_clear as $action ) {
as_unschedule_all_actions( $action );
}
}

// Drop custom tables created by the OneAccess.
$tables_to_drop = [
'oneaccess_deduplicated_users',
'oneaccess_profile_requests',
];
// Options to clean up.
$options = [
'oneaccess_child_site_api_key',
'oneaccess_consumer_api_key',
'oneaccess_db_version',
'oneaccess_governing_site_url',
'oneaccess_new_users',
'oneaccess_parent_site_url',
'oneaccess_profile_update_requests',
'oneaccess_shared_sites',
'oneaccess_site_type',
];

global $wpdb;
foreach ( $tables_to_drop as $table ) {
$full_table_name = $wpdb->prefix . $table;
$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS %s', $full_table_name ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- this is to drop table on uninstall
}
foreach ( $options as $option ) {
delete_option( $option );
}

// Drop custom tables created by the OneAccess.
$tables_to_drop = [
'oneaccess_deduplicated_users',
'oneaccess_profile_requests',
];

global $wpdb;
foreach ( $tables_to_drop as $table ) {
$full_table_name = $wpdb->prefix . $table;
$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $full_table_name ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- this is to drop table on uninstall
Comment thread
up1512001 marked this conversation as resolved.
}
}

/**
Expand Down Expand Up @@ -144,6 +144,9 @@ function remove_user_roles_caps(): void {
}
$user->remove_role( $role );
}

// Finally remove the role itself.
remove_role( $role );
}
}

Expand Down
Loading