<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][8922] trunk/src/bp-core/bp-core-filters.php: Do not interfere with WordPress sign-up process when the user is created from the blog or the network administration.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://buddypress.trac.wordpress.org/changeset/8922">8922</a></dd>
<dt>Author</dt> <dd>imath</dd>
<dt>Date</dt> <dd>2014-08-14 20:06:28 +0000 (Thu, 14 Aug 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Do not interfere with WordPress sign-up process when the user is created from the blog or the network administration.

On multisite config, make sure the activation email and the welcome email generated by WordPress are not modified by BuddyPress if the user was created from the User Administration panel. In this case, user needs to receive the built in activation link and/or the login and password generated by WordPress.

Props godavid33, r-a-y

Fixes <a href="http://buddypress.trac.wordpress.org/ticket/5789">#5789</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpcorebpcorefiltersphp">trunk/src/bp-core/bp-core-filters.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpcorebpcorefiltersphp"></a>
<div class="modfile"><h4>Modified: trunk/src/bp-core/bp-core-filters.php (8921 => 8922)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/src/bp-core/bp-core-filters.php    2014-08-14 19:14:07 UTC (rev 8921)
+++ trunk/src/bp-core/bp-core-filters.php       2014-08-14 20:06:28 UTC (rev 8922)
</span><span class="lines">@@ -250,12 +250,18 @@
</span><span class="cx"> function bp_core_filter_user_welcome_email( $welcome_email ) {
</span><span class="cx"> 
</span><span class="cx">  // Don't touch the email when a user is registered by the site admin
</span><del>-       if ( is_admin() )
</del><ins>+        if ( ( is_admin() || is_network_admin() ) && buddypress()->members->admin->signups_page != get_current_screen()->id ) {
</ins><span class="cx">           return $welcome_email;
</span><ins>+       }
</ins><span class="cx"> 
</span><ins>+       if ( strpos( bp_get_requested_url(), 'wp-activate.php' ) !== false ) {
+               return $welcome_email;
+       }
+
</ins><span class="cx">   // Don't touch the email if we don't have a custom registration template
</span><del>-       if ( ! bp_has_custom_signup_page() )
</del><ins>+        if ( ! bp_has_custom_signup_page() ) {
</ins><span class="cx">           return $welcome_email;
</span><ins>+       }
</ins><span class="cx"> 
</span><span class="cx">  // [User Set] Replaces 'PASSWORD' in welcome email; Represents value set by user
</span><span class="cx">  return str_replace( 'PASSWORD', __( '[User Set]', 'buddypress' ), $welcome_email );
</span><span class="lines">@@ -279,9 +285,10 @@
</span><span class="cx">  */
</span><span class="cx"> function bp_core_filter_blog_welcome_email( $welcome_email, $blog_id, $user_id, $password ) {
</span><span class="cx"> 
</span><del>-       // Don't touch the email when a user is registered by the site admin.
-       if ( is_admin() )
</del><ins>+        // Don't touch the email when a user is registered by the site admin
+       if ( ( is_admin() || is_network_admin() ) && buddypress()->members->admin->signups_page != get_current_screen()->id ) {
</ins><span class="cx">           return $welcome_email;
</span><ins>+       }
</ins><span class="cx"> 
</span><span class="cx">  // Don't touch the email if we don't have a custom registration template
</span><span class="cx">  if ( ! bp_has_custom_signup_page() )
</span><span class="lines">@@ -351,6 +358,32 @@
</span><span class="cx">  */
</span><span class="cx"> function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) {
</span><span class="cx"> 
</span><ins>+       if ( is_admin() ) {
+               // If the user is created from the WordPress Add User screen, don't send BuddyPress signup notifications
+               if( in_array( get_current_screen()->id, array( 'user', 'user-network' ) ) ) {
+                       // If the Super Admin want to skip confirmation email
+                       if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
+                               return false;
+
+                       // WordPress will manage the signup process
+                       } else {
+                               return $user;
+                       }
+
+               /** 
+                * There can be a case where the user was created without the skip confirmation
+                * And the super admin goes in pending accounts to resend it. In this case, as the
+                * meta['password'] is not set, the activation url must be WordPress one
+                */
+               } else if ( buddypress()->members->admin->signups_page == get_current_screen()->id ) {
+                       $is_hashpass_in_meta = maybe_unserialize( $meta );
+
+                       if ( empty( $is_hashpass_in_meta['password'] ) ) {
+                               return $user;
+                       }
+               }
+       }
+
</ins><span class="cx">   // Set up activation link
</span><span class="cx">  $activate_url = bp_get_activation_page() . "?key=$key";
</span><span class="cx">  $activate_url = esc_url( $activate_url );
</span></span></pre>
</div>
</div>

</body>
</html>