Yeah having the same problem…
I get a page not found on saving the settings
whats more after the error , if you just press enter on the same URL the confirmation appears saying that the settings were saved.
This is really weird. It seems after changing the setting the script dies somewhere.
Could this be related to the last buddypress upgrade ?
ok found the problem
it is in the function (file : bp-activity-subscription-functions.php)
function ass_update_group_subscribe_settings()
has a line at the end of the function which goes
bp_core_redirect( wp_get_referer() );
now the form for the settings is posted to the same url
BUT !!! as per docs of wp_get_referer()
Return Values
(string|boolean)
False on failure. Referer URL on success. If page “refered” (form posted) to itself, returns false (because $_SERVER[‘HTTP_REFERER’] == $_REQUEST[‘_wp_http_referer’])
so the wp_get_referer() returns false !
which means it results in a page not found error
solution ?
put this in your functions.php
(dont have one ? find how to get one in your theme …)
// update the users' notification settings
function pain_in_the_ass_update_group_subscribe_settings() {
global $bp;
if ( bp_is_groups_component() && bp_is_current_action( 'notifications' ) ) {
// If the edit form has been submitted, save the edited details
if ( isset( $_POST['ass-save'] ) ) {
//if ( !wp_verify_nonce( $nonce, 'ass_subscribe' ) ) die( 'A Security check failed' );
$user_id = bp_loggedin_user_id();
$group_id = $_POST[ 'ass_group_id' ];
$action = $_POST[ 'ass_group_subscribe' ];
if ( !groups_is_user_member( $user_id, $group_id ) )
return;
ass_group_subscription( $action, $user_id, $group_id ); // save the settings
bp_core_add_message( sprintf( __( 'Your email notifications are set to %s for this group.', 'bp-ass' ), ass_subscribe_translate( $action ) ) );
bp_core_redirect( $_SERVER['HTTP_REFERER'] );
}
}
}
remove_action( 'bp_actions', 'ass_update_group_subscribe_settings' );
add_action( 'bp_actions', 'pain_in_the_ass_update_group_subscribe_settings' );
Voila … the pain is gone …