Support » Plugin: Email Users » Patch to make "user groups" and "email users" plugins play nice together

  • I wrote a patch to make the “user groups” and your “email users” plugins play nice together.

    http://wordpress.org/plugins/user-groups/

    I have added the “Group Taxonomy” option and if you set it to “user-group” you enable the connection between the plugins. By providing another value it could also be bound to other user group plugins that are based on a taxonomy.

    I would be more than happy if would give me feedback and if the patch (if approved and all) would end up in some next version. I am currently writing a blog about this plugin and how great it is.

    The patch (diff):

    diff -C 5 email-users/email_users_group_mail_form.php email-users-new/email_users_group_mail_form.php
    *** email-users/email_users_group_mail_form.php	2013-04-11 15:08:34.000000000 +0200
    --- email-users-new/email_users_group_mail_form.php	2013-06-23 12:04:25.679559080 +0200
    ***************
    *** 100,109 ****
    --- 100,111 ----
      			<td>
      				<select id="send_roles" name="send_roles[]" multiple="multiple" size="8" style="width: 654px; height: 250px;">
      				<?php
                          if ($group_mode == 'meta')
      					    $roles = mailusers_get_group_meta_filters($user_ID, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
    +                     elseif ($group_mode == 'term')
    + 					    $roles = mailusers_get_groups($user_ID, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
                          else
      					    $roles = mailusers_get_roles($user_ID, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
      					foreach ($roles as $key => $value) {
      				?>
      					<option value="<?php echo $key; ?>"	<?php
    diff -C 5 email-users/email_users_options_form.php email-users-new/email_users_options_form.php
    *** email-users/email_users_options_form.php	2013-04-11 15:08:34.000000000 +0200
    --- email-users-new/email_users_options_form.php	2013-06-23 11:57:20.545450942 +0200
    ***************
    *** 125,134 ****
    --- 125,142 ----
      			<?php _e('Exclude sender from email recipient list.', MAILUSERS_I18N_DOMAIN); ?><br/>
      		</td>
      	</tr>
      	<tr>
      		<th scope="row" valign="top">
    +             <label for="group_taxonomy"><?php _e('Group Taxonomy', MAILUSERS_I18N_DOMAIN); ?></th>
    + 		<td>
    + 			<input type="text" name="mailusers_group_taxonomy" style="width: 235px;"
    + 				value="<?php echo format_to_edit(mailusers_get_group_taxonomy()); ?>"
    + 				size="80" id="group_taxonomy"/><br/> <?php _e('A taxonomy used to get terms from that represent user groups.', MAILUSERS_I18N_DOMAIN); ?></td>
    + 	</tr>
    + 	<tr>
    + 		<th scope="row" valign="top">
                  <label for="from_sender_name_override"><?php _e('From Sender<br/>Name Override', MAILUSERS_I18N_DOMAIN); ?></th>
      		<td>
      			<input type="text" name="mailusers_from_sender_name_override" style="width: 235px;"
      				value="<?php echo format_to_edit(mailusers_get_from_sender_name_override()); ?>"
      				size="80" id="from_sender_name_override"/><br/> <?php _e('A name that can be used in place of the logged in user\'s name when sending email or notifications.', MAILUSERS_I18N_DOMAIN); ?></td>
    diff -C 5 email-users/email-users.php email-users-new/email-users.php
    *** email-users/email-users.php	2013-04-11 15:08:34.000000000 +0200
    --- email-users-new/email-users.php	2013-06-23 12:12:25.461938202 +0200
    ***************
    *** 94,104 ****
      		// Mail User - Default setting for User Control
      		'mailusers_default_user_control' => 'true',
      		// Mail User - Default setting for Short Code Processing
      		'mailusers_shortcode_processing' => 'false',
      		// Mail User - Default setting for Short Code Processing
    ! 		'mailusers_from_sender_exclude' => 'true'
      	) ;
    
          if (array_key_exists($option, $default_plugin_settings))
              return $default_plugin_settings[$option] ;
          else
    --- 94,106 ----
      		// Mail User - Default setting for User Control
      		'mailusers_default_user_control' => 'true',
      		// Mail User - Default setting for Short Code Processing
      		'mailusers_shortcode_processing' => 'false',
      		// Mail User - Default setting for Short Code Processing
    ! 		'mailusers_from_sender_exclude' => 'true',
    ! 		// Mail User - Taxonomy for User Group
    ! 		'mailusers_group_taxonomy' => ''
      	) ;
    
          if (array_key_exists($option, $default_plugin_settings))
              return $default_plugin_settings[$option] ;
          else
    ***************
    *** 435,445 ****
       * Wrapper for the email users send to group menu
       */
      function mailusers_send_to_group_page()
      {
          global $mailusers_send_to_group_mode ;
    !     $mailusers_send_to_group_mode = 'role' ;
          require_once('email_users_send_group_mail.php') ;
      }
    
      /**
       * Wrapper for the email users send to group custom meta menu
    --- 437,451 ----
       * Wrapper for the email users send to group menu
       */
      function mailusers_send_to_group_page()
      {
          global $mailusers_send_to_group_mode ;
    ! 	if (mailusers_get_group_taxonomy()) {
    ! 		$mailusers_send_to_group_mode = 'term';
    ! 	} else {
    ! 		$mailusers_send_to_group_mode = 'role' ;
    ! 	}
          require_once('email_users_send_group_mail.php') ;
      }
    
      /**
       * Wrapper for the email users send to group custom meta menu
    ***************
    *** 616,625 ****
    --- 622,632 ----
          register_setting('email_users', 'mailusers_max_bcc_recipients') ;
          register_setting('email_users', 'mailusers_user_settings_table_rows') ;
          register_setting('email_users', 'mailusers_shortcode_processing') ;
          register_setting('email_users', 'mailusers_from_sender_exclude') ;
          register_setting('email_users', 'mailusers_from_sender_name_override') ;
    +     register_setting('email_users', 'mailusers_group_taxonomy') ;
          register_setting('email_users',
              'mailusers_from_sender_address_override', 'mailusers_from_sender_address_override_validate') ;
          register_setting('email_users',
              'mailusers_send_bounces_to_address_override', 'mailusers_send_bounces_to_address_override_validate') ;
          register_setting('email_users', 'mailusers_version') ;
    ***************
    *** 729,738 ****
    --- 736,752 ----
      function mailusers_get_from_sender_name_override() {
      	return get_option( 'mailusers_from_sender_name_override' );
      }
    
      /**
    +  * Wrapper for the group taxonomy option
    +  */
    + function mailusers_get_group_taxonomy() {
    + 	return get_option( 'mailusers_group_taxonomy' );
    + }
    +
    + /**
       * Wrapper for the from sender name override option
       */
      function mailusers_update_from_sender_name_override( $from_sender_name_override ) {
      	return update_option( 'mailusers_from_sender_name_override', $from_sender_name_override );
      }
    ***************
    *** 1001,1010 ****
    --- 1015,1042 ----
    
      	return $roles;
      }
    
      /**
    +  * Get the users based on groups
    +  * $meta_filter can be '', MAILUSERS_ACCEPT_NOTIFICATION_USER_META, or MAILUSERS_ACCEPT_MASS_EMAIL_USER_META
    +  */
    + function mailusers_get_groups($exclude_id='', $meta_filter = '') {
    + 	$roles = array();
    +
    + 	$terms = get_terms('user-group', array('hide_empty' => false));
    + 	foreach ( $terms as $term ) {
    + 		$users_in_role = mailusers_get_recipients_from_terms(array($term->term_id), $exclude_id, $meta_filter);
    + 		if (!empty($users_in_role)) {
    + 			$roles[$term->term_id]=$term->name;
    + 		}
    + 	}
    + 	return $roles;
    + }
    +
    +
    + /**
       * Get the users based on group custom meta filters
       * $meta_filter can be '', MAILUSERS_ACCEPT_NOTIFICATION_USER_META, or MAILUSERS_ACCEPT_MASS_EMAIL_USER_META
       */
      function mailusers_get_group_meta_filters( $exclude_id='', $meta_filter = '') {
      	$filters = array();
    ***************
    *** 1051,1060 ****
    --- 1083,1104 ----
    
          return $users ;
      }
    
      /**
    +  * Get the users given a term or an array of terms
    +  * $meta_filter can be '', MAILUSERS_ACCEPT_NOTIFICATION_USER_META, or MAILUSERS_ACCEPT_MASS_EMAIL_USER_META
    +  */
    + function mailusers_get_recipients_from_terms($terms, $exclude_id='', $meta_filter = '') {
    +
    + 	$ids = get_objects_in_term($terms, 'user-group');
    +
    + 	return mailusers_get_recipients_from_ids($ids, $exclude_id, $meta_filter);
    + }
    +
    +
    + /**
       * Get the users given the existance of a custom meta filter
       * $meta_filter can be '', MAILUSERS_ACCEPT_NOTIFICATION_USER_META, or MAILUSERS_ACCEPT_MASS_EMAIL_USER_META
       */
      function mailusers_get_recipients_from_custom_meta_filter( $ids, $exclude_id='', $meta_filter='', $meta_value='', $meta_compare='=') {
    
    diff -C 5 email-users/email_users_send_group_mail.php email-users-new/email_users_send_group_mail.php
    *** email-users/email_users_send_group_mail.php	2013-04-11 15:08:34.000000000 +0200
    --- email-users-new/email_users_send_group_mail.php	2013-06-23 12:11:20.665616866 +0200
    ***************
    *** 126,135 ****
    --- 126,137 ----
      	<?php
      		// Fetch users
      		// --
              if ($group_mode == 'meta')
      		    $recipients = mailusers_get_recipients_from_custom_meta_filters($send_filters, $exclude_id, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
    +         elseif ($group_mode == 'term')
    + 		    $recipients = mailusers_get_recipients_from_terms($send_roles, $exclude_id, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
              else
      		    $recipients = mailusers_get_recipients_from_roles($send_roles, $exclude_id, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
    
      		if (empty($recipients)) {
      	?>
    Common subdirectories: email-users/images and email-users-new/images
    Common subdirectories: email-users/languages and email-users-new/languages

    Thank you for your excellent work and kind regards,

    Maurits van der Schee

Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Author Mike Walsh

    (@mpwalsh8)

    I had incorporated most of this patch into Email-Users then decided that I didn’t want it to override the standard WordPress roles as potential recipients. I have instead used it as the basis of an integration of the User Groups plugin so any groups defined in User Groups appear as potential recipients in the selection menus for Send to Groups and Post/Page notifications.

    You can checkout a v4.5.0 beta release on my web site.

    Sounds even better. I will check it out! Thank you very much..

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Patch to make "user groups" and "email users" plugins play nice together’ is closed to new replies.