WordPress.org

Ready to get started?Download WordPress

Forums

  1. chriswhittle
    Member
    Posted 2 years ago #

    We've been having an issue since we installed this plugin were we are getting 2-5 duplicate emails on notifications. Any ideas? I've looked at other plugins (possible conflicts) but none seem to be causing it. I've also check to make sure I'm not "supersubscribed" and I'm not....

    http://wordpress.org/extend/plugins/buddypress-group-email-subscription/

  2. chriswhittle
    Member
    Posted 2 years ago #

    if anyone needs help with this... it looks like it was due to it using the activity hooks... I've changed it to using the bb_new_post filter....

    Replace everything between

    //
    // !SEND EMAIL UPDATES FOR FORUM TOPICS AND POSTS
    //

    and

    // The email notification function for all other activity
    function ass_group_notification_activity( $content ) {

    with

    add_filter('bb_new_post', 'ass_group_notification_forum_changes');
    function ass_group_notification_forum_changes($post_id) {
    	global $bp;
    
    	/* Check to see if user has been registered long enough */
    	if (!ass_registered_long_enough($bp -> loggedin_user -> id))
    		return;
    
    	$post = bb_get_post($post_id);
    	$forum_id = $post -> forum_id;
    
    	$topic = get_topic($post -> topic_id);
    
    	$group = groups_get_group(array('group_id' => $bp -> groups -> current_group -> id));
    	$current_user_info = get_userdata($post -> poster_id);
    	$primary_link = get_site_url() . "/groups/" . $group -> slug . "/forum/topic/" . $topic -> topic_slug . "/";
    	$is_topic = false;
    	if ($topic -> topic_posts == 1) {
    		$is_topic = true;
    		$action = "started";
    	} else {
    		$action = "replied to";
    		$primary_link .= "?#post-" . $post_id;
    	}
    	$action = $current_user_info -> first_name . " " . $current_user_info -> last_name . " " . $action . " the forum topic " . $topic -> topic_title . " in the group " . $group -> name;
    	$subject = '[' . get_blog_option(BP_ROOT_BLOG, 'blogname') . '] ' . $action;
    	$the_content = html_entity_decode(strip_tags(stripslashes($post -> post_text)), ENT_QUOTES);
    
    	$message = sprintf(__('%s
    
    "%s"
    
    To view or reply to this topic, log in and go to:
    %s
    
    ---------------------
    ', 'bp-ass'), $action . ':', $the_content, $primary_link);
    
    	/* Content footer */
    	$settings_link = $bp -> root_domain . '/' . $bp -> groups -> slug . '/' . $bp -> groups -> current_group -> slug . '/notifications/';
    	$message .= sprintf(__('To disable these notifications please log in and go to: %s', 'bp-ass'), $settings_link);
    
    	$group_id = $group -> id;
    	$subscribed_users = groups_get_groupmeta($group_id, 'ass_subscribed_users');
    	if (!$is_topic) {
    		// pre-load these arrays to reduce db calls in the loop
    		$ass_replies_to_my_topic = ass_user_settings_array('ass_replies_to_my_topic');
    		$ass_replies_after_me_topic = ass_user_settings_array('ass_replies_after_me_topic');
    		$user_topic_status = groups_get_groupmeta($bp -> groups -> current_group -> id, 'ass_user_topic_status_' . $topic -> topic_id);
    		$previous_posters = ass_get_previous_posters($post -> topic_id);
    
    		// consolidate the arrays to speed up processing
    		foreach (array_keys( $previous_posters) as $previous_poster) {
    			if (empty($subscribed_users[$previous_poster]))
    				$subscribed_users[$previous_poster] = 'prev-post';
    		}
    	}
    	foreach ((array)$subscribed_users as $user_id => $group_status) {
    		// Does the author want updates of his own posts?
    		if ($user_id == $bp -> loggedin_user -> id) {
    			if (!ass_self_post_notification()) {
    				continue;
    			}
    		}
    
    		$send_it = false;
    		if ($is_topic) {
    			if ($group_status == 'sub' || $group_status == 'supersub') {
    				$send_it = true;
    			}
    		} else {//Is Just a post
    			$topic_status = isset($user_topic_status[$user_id]) ? $user_topic_status[$user_id] : '';
    
    			if ($topic_status == 'mute')// the topic mute button will override the subscription options below
    				continue;
    
    			if ($group_status == 'sum' && $topic_status != 'sub')// maybe not neccedary, but good to be cautious
    				continue;
    
    			if ($group_status == 'supersub')
    				$send_it = true;
    			elseif ($topic_status == 'sub')
    				$send_it = true;
    			elseif ($topic -> topic_poster == $user_id && isset($ass_replies_to_my_topic[$user_id]) && $ass_replies_to_my_topic[$user_id] != 'no')
    				$send_it = true;
    			elseif ($previous_posters[$user_id] && isset($ass_replies_after_me_topic[$user_id]) && $ass_replies_after_me_topic[$user_id] != 'no')
    				$send_it = true;
    		}
    		if ($send_it) {
    			$notice = "\n" . __('Your email setting for this group is: ', 'bp-ass') . ass_subscribe_translate($group_status);
    			$user = bp_core_get_core_userdata($user_id);
    			// Get the details for the user
    
    			if ($user -> user_email)
    				wp_mail($user -> user_email, $subject, $message . $notice);
    			// Send the email
    		}
    
    		if ($group_status == 'dig' || ($is_topic && $group_status == 'sum')) {
    			ass_digest_record_activity($post_id, $user_id, $group_id, $group_status);
    		}
    
    	}
    
    }

    yes this replaces the new topic and new post actions ....

  3. r-a-y
    Member
    Plugin Author

    Posted 2 years ago #

    Hey Chris,

    Thanks for looking into it! I experienced the same problem as well.

    I've created an issue on the Group Email issue tracker:
    https://github.com/boonebgorges/buddypress-group-email-subscription/issues/6

    It appears to be a BP bug.

  4. berndw
    Member
    Posted 1 year ago #

    Great for you!
    In my case, since I installed the plug in, no one single email has been sent. Anyone knows what I can do? The website is hosted at Godaddy.

    Thanks in advance.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic