<!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][12178] trunk/src: Add privacy policy acceptance checkbox to registration process.</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 { white-space: pre-line; 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" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://buddypress.trac.wordpress.org/changeset/12178">12178</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://buddypress.trac.wordpress.org/changeset/12178","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>boonebgorges</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-06-24 18:20:34 +0000 (Sun, 24 Jun 2018)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Add privacy policy acceptance checkbox to registration process.

When a published Privacy Policy exists on the site, a checkbox appears
just above the submit button on the registration process, which must be
checked in order to proceed with registration.

For maximum compatibility with existing sites, this change is currently
limited to Nouveau.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpmembersbpmemberstemplatephp">trunk/src/bp-members/bp-members-template.php</a></li>
<li><a href="#trunksrcbpmembersscreensregisterphp">trunk/src/bp-members/screens/register.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveaubuddypressmembersregisterphp">trunk/src/bp-templates/bp-nouveau/buddypress/members/register.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveauincludestemplatetagsphp">trunk/src/bp-templates/bp-nouveau/includes/template-tags.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpmembersbpmemberstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/bp-members-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/bp-members-template.php      2018-06-19 02:22:35 UTC (rev 12177)
+++ trunk/src/bp-members/bp-members-template.php        2018-06-24 18:20:34 UTC (rev 12178)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2410,6 +2410,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Determines whether privacy policy acceptance is required for registration.
+ *
+ * @since 4.0.0
+ *
+ * @return bool
+ */
+function bp_signup_requires_privacy_policy_acceptance() {
+       // Default to true when a published Privacy Policy page exists.
+       $privacy_policy_url = get_privacy_policy_url();
+       $required           = ! empty( $privacy_policy_url );
+
+       /**
+        * Filters whether privacy policy acceptance is required for registration.
+        *
+        * @since 4.0.0
+        *
+        * @param bool $required Whether privacy policy acceptance is required.
+        */
+       return (bool) apply_filters( 'bp_signup_requires_privacy_policy_acceptance', $required );
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Output the current signup step.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 1.1.0
</span></span></pre></div>
<a id="trunksrcbpmembersscreensregisterphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/screens/register.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/screens/register.php 2018-06-19 02:22:35 UTC (rev 12177)
+++ trunk/src/bp-members/screens/register.php   2018-06-24 18:20:34 UTC (rev 12178)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -73,6 +73,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ( !empty( $_POST['signup_password'] ) && !empty( $_POST['signup_password_confirm'] ) ) && $_POST['signup_password'] != $_POST['signup_password_confirm'] )
</span><span class="cx" style="display: block; padding: 0 10px">                        $bp->signup->errors['signup_password'] = __( 'The passwords you entered do not match.', 'buddypress' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( bp_signup_requires_privacy_policy_acceptance() && ! empty( $_POST['signup-privacy-policy-check'] ) && empty( $_POST['signup-privacy-policy-accept'] ) ) {
+                       $bp->signup->errors['signup_privacy_policy'] = __( 'You must indicate that you have read and agreed to the Privacy Policy.', 'buddypress' );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $bp->signup->username = $_POST['signup_username'];
</span><span class="cx" style="display: block; padding: 0 10px">                $bp->signup->email = $_POST['signup_email'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveaubuddypressmembersregisterphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-nouveau/buddypress/members/register.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/buddypress/members/register.php 2018-06-19 02:22:35 UTC (rev 12177)
+++ trunk/src/bp-templates/bp-nouveau/buddypress/members/register.php   2018-06-24 18:20:34 UTC (rev 12178)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,6 +104,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                </div><!-- //.layout-wrap -->
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                <?php if ( bp_signup_requires_privacy_policy_acceptance() ) : ?>
+                                       <?php bp_nouveau_signup_privacy_policy_acceptance_section(); ?>
+                               <?php endif; ?>
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 <?php bp_nouveau_submit_button( 'register' ); ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endif; // request-details signup step ?>
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveauincludestemplatetagsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-nouveau/includes/template-tags.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/includes/template-tags.php      2018-06-19 02:22:35 UTC (rev 12177)
+++ trunk/src/bp-templates/bp-nouveau/includes/template-tags.php        2018-06-24 18:20:34 UTC (rev 12178)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2399,6 +2399,35 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Outputs the Privacy Policy acceptance area on the registration page.
+ *
+ * @since 4.0.0
+ */
+function bp_nouveau_signup_privacy_policy_acceptance_section() {
+       $error = null;
+       if ( isset( buddypress()->signup->errors['signup_privacy_policy'] ) ) {
+               $error = buddypress()->signup->errors['signup_privacy_policy'];
+       }
+
+       ?>
+
+       <div class="privacy-policy-accept">
+               <?php if ( $error ) : ?>
+                       <?php nouveau_error_template( $error ); ?>
+               <?php endif; ?>
+
+               <label for="signup-privacy-policy-accept">
+                       <input type="hidden" name="signup-privacy-policy-check" value="1" />
+
+                       <?php /* translators: link to Privacy Policy */ ?>
+                       <input type="checkbox" name="signup-privacy-policy-accept" id="signup-privacy-policy-accept" required /> <?php printf( esc_html__( 'I have read and agree to this site\'s %s.', 'buddypress' ), sprintf( '<a href="%s">%s</a>', esc_url( get_privacy_policy_url() ), esc_html__( 'Privacy Policy', 'buddypress' ) ) ); ?>
+               </label>
+       </div>
+
+       <?php
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Output a submit button and the nonce for the requested action.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.0.0
</span></span></pre>
</div>
</div>

</body>
</html>