et dans mes paramètres dans discourse wp j’utilise le fournisseur discourse connect
bonjour @simon @Firepup650 après une longue période j’ai de nouveau besoin d’aide
voici mon code
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
function mepr_capture_new_member_signup_completed($event) {
$user = $event->get_data();
$user_id = $user->ID;
// Get user data based on user ID
$user_data = get_userdata($user_id);
// Log debug information about the user data
log_debug_info("debug_log.txt", "User Data: ", print_r($user_data, true));
// Check if user data exists
if ($user_data) {
// Get the user roles
$roles = $user_data->roles;
// Check if the user does not have the "browns" role or does have it
if (!in_array('browns', $roles) || in_array('browns', $roles)) {
// Remove all existing roles
foreach ($roles as $role) {
$user_data->remove_role($role);
}
// Add the "browns" role
$user_data->add_role('browns');
log_debug_info("debug_log.txt", "Assigned Browns Role: ", print_r($user_data, true));
if ( class_exists( '\\WPDiscourse\\Discourse\\Discourse' ) ) {
// Add user to the Discourse group for "browns"
$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
log_debug_info("debug_log.txt", "s2member level 1 groups: ", print_r($s2member_level_1_groups, true));
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_1_groups);
log_debug_info("debug_log.txt", "Discourse Group Addition Result: ", print_r($result, true));
}
// Additional SSO parameters if needed
$sso_params = array();
$sso_params = apply_filters('wpdc_sso_params', $sso_params, $user_data);
} else {
// Collect all level groups
$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
$s2member_level_2_groups = get_option('s2member_level_2_groups', '');
$s2member_level_3_groups = get_option('s2member_level_3_groups', '');
$s2member_level_4_groups = get_option('s2member_level_4_groups', '');
// Combine all groups into one array
$s2member_level_groups = array_merge(
explode(',', $s2member_level_1_groups),
explode(',', $s2member_level_2_groups),
explode(',', $s2member_level_3_groups),
explode(',', $s2member_level_4_groups)
);
// Remove duplicates
$s2member_level_groups = array_unique($s2member_level_groups);
// Remove user from all collected groups
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// You may handle $result as needed
}
}
} else {
// Handle cases where $user_id or $role is not provided
// This could be logged or handled differently based on your requirements
// For now, let's log a message
error_log("User ID or role not provided in user_registered_callback.");
}
}
add_action('mepr-event-member-signup-completed', 'mepr_capture_new_member_signup_completed');
maintenant le problème est qu'il n'ajoute pas l'utilisateur au groupe Discourse et voici la sortie du code
=== User Data: ===
WP_User Object
(
[data] => stdClass Object
(
[ID] => 457
[user_login] => sibahmed
[user_pass] => $P$BTVeX1n6d40NtHBCiQqzSphMolH/hH0
[user_nicename] => sibahmed
[user_email] => sibahmed82@gmail.com
[user_url] =>
[user_registered] => 2024-07-30 17:35:51
[user_activation_key] =>
[user_status] => 0
[display_name] => sib ahmed
)
[ID] => 457
[caps] => Array
(
[subscriber] => 1
[browns] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => subscriber
[1] => browns
)
[allcaps] => Array
(
[read] => 1
[level_0] => 1
[upload_files] => 1
[access_s2member_level0] => 1
[subscriber] => 1
[browns] => 1
)
[filter] =>
[site_id:WP_User:private] => 1
)
=== Assigned Browns Role: ===
WP_User Object
(
[data] => stdClass Object
(
[ID] => 457
[user_login] => sibahmed
[user_pass] => $P$BTVeX1n6d40NtHBCiQqzSphMolH/hH0
[user_nicename] => sibahmed
[user_email] => sibahmed82@gmail.com
[user_url] =>
[user_registered] => 2024-07-30 17:35:51
[user_activation_key] =>
[user_status] => 0
[display_name] => sib ahmed
[user_level] => 0
)
[ID] => 457
[caps] => Array
(
[browns] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => browns
)
[allcaps] => Array
(
[read] => 1
[browns] => 1
)
[filter] =>
[site_id:WP_User:private] => 1
)
=== s2member level 1 groups: ===
Member
=== Discourse Group Addition Result: ===
WP_Error Object
(
[errors] => Array
(
[wpdc_response_error] => Array
(
[0] => An invalid response was returned from Discourse
)
)
[error_data] => Array
(
[wpdc_response_error] => Array
(
[http_code] => 404
[http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)
)
[additional_data:protected] => Array
(
)
)
Je ne fais pas de développement WordPress pour le moment, donc je ne peux pas tester votre code. Je pense que le problème se situe ici :
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_1_groups);
Si je lis correctement les journaux, cet appel renvoie :
[error_data] => Array
(
[wpdc_response_error] => Array
(
[http_code] => 404
[http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)
Je suppose que le problème est qu’il n’existe pas de groupe nommé "Member" sur votre site Discourse.
Je ne suis pas sûr de ce que vous faites ici, mais je ne pense pas que ce soit lié à l’erreur :
// Paramètres SSO supplémentaires si nécessaire
$sso_params = array();
$sso_params = apply_filters('wpdc_sso_params', $sso_params, $user_data);
Salut @Haseeb_Ahmed, j’ai déplacé ce sujet vers Dev car il s’agit principalement d’aide au codage PHP. J’aurai peut-être le temps de jeter un coup d’œil plus attentif à votre code la semaine prochaine.
salut @simon même si je change le nom du groupe, il renvoie toujours cette réponse
=== groupes de niveau 1 s2member : ===
staff
=== Résultat de l'ajout du groupe Discourse : ===
Objet WP_Error
(
[errors] => Array
(
[wpdc_response_error] => Array
(
[0] => Une réponse invalide a été retournée par Discourse
)
)
[error_data] => Array
(
[wpdc_response_error] => Array
(
[http_code] => 404
[http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)
)
[additional_data:protected] => Array
(
)
)