From 055ee962c94675b7f1d02fe0fa50d6f2138bac97 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Tue, 30 Jun 2015 23:37:31 +0200
Subject: [PATCH 1/2] Ability to enter a password when the first user is
 created

---
 include/user.php            |  8 +++++++
 mod/register.php            | 44 ++++++++++++++++++++++---------------
 view/templates/register.tpl |  5 +++++
 3 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/include/user.php b/include/user.php
index f8b1578ceb..580af56f98 100644
--- a/include/user.php
+++ b/include/user.php
@@ -27,12 +27,20 @@ function create_user($arr) {
 	$openid_url = ((x($arr,'openid_url')) ? notags(trim($arr['openid_url'])) : '');
 	$photo      = ((x($arr,'photo'))      ? notags(trim($arr['photo']))      : '');
 	$password   = ((x($arr,'password'))   ? trim($arr['password'])           : '');
+	$password1  = ((x($arr,'password1'))  ? trim($arr['password1'])          : '');
+	$confirm    = ((x($arr,'confirm'))    ? trim($arr['confirm'])            : '');
 	$blocked    = ((x($arr,'blocked'))    ? intval($arr['blocked'])  : 0);
 	$verified   = ((x($arr,'verified'))   ? intval($arr['verified']) : 0);
 
 	$publish    = ((x($arr,'profile_publish_reg') && intval($arr['profile_publish_reg'])) ? 1 : 0);
 	$netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
 
+	if ($password1 != $confirm) {
+		$result['message'] .= t('Passwords do not match. Password unchanged.') . EOL;
+		return $result;
+	} elseif ($password1 != "")
+		$password = $password1;
+
 	$tmp_str = $openid_url;
 
 	if($using_invites) {
diff --git a/mod/register.php b/mod/register.php
index 4c0860e6e3..f8e970855e 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -79,25 +79,27 @@ function register_post(&$a) {
 			set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
 		}
 
-		$res = send_register_open_eml(
-			$user['email'],
-			$a->config['sitename'],
-			$a->get_baseurl(),
-			$user['username'],
-			$result['password']);
+		// Only send a password mail when the password wasn't manually provided
+		if (!x($_POST,'password1') OR !x($_POST,'confirm')) {
+			$res = send_register_open_eml(
+				$user['email'],
+				$a->config['sitename'],
+				$a->get_baseurl(),
+				$user['username'],
+				$result['password']);
 
-		if($res) {
-			info( t('Registration successful. Please check your email for further instructions.') . EOL ) ;
-			goaway(z_root());
-		}
-		else {
-			notice(
-				sprintf(
-					t('Failed to send email message. Here your accout details:<br> login: %s<br> password: %s<br><br>You can change your password after login.'),
-					 $user['email'],
-					 $result['password']
-					 ). EOL
-			);
+			if($res) {
+				info( t('Registration successful. Please check your email for further instructions.') . EOL ) ;
+				goaway(z_root());
+			} else {
+				notice(
+					sprintf(
+						t('Failed to send email message. Here your accout details:<br> login: %s<br> password: %s<br><br>You can change your password after login.'),
+						 $user['email'],
+						 $result['password']
+						 ). EOL
+				);
+			}
 		}
 	}
 	elseif($a->config['register_policy'] == REGISTER_APPROVE) {
@@ -235,6 +237,9 @@ function register_content(&$a) {
 		));
 	}
 
+	$r = q("SELECT count(*) AS `contacts` FROM `contact`");
+	$passwords = !$r[0]["contacts"];
+
 	$license = '';
 
 	$o = get_markup_template("register.tpl");
@@ -262,6 +267,9 @@ function register_content(&$a) {
 		'$openid'    => $openid_url,
 		'$namelabel' => t('Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '),
 		'$addrlabel' => t('Your Email Address: '),
+		'$passwords' => $passwords,
+		'$password1' => array('password1', t('New Password:'), '', ''),
+		'$password2' => array('confirm', t('Confirm:'), '', ''),
 		'$nickdesc'  => str_replace('$sitename',$a->get_hostname(),t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.')),
 		'$nicklabel' => t('Choose a nickname: '),
 		'$photo'     => $photo,
diff --git a/view/templates/register.tpl b/view/templates/register.tpl
index 8a941145ab..dfc3573616 100644
--- a/view/templates/register.tpl
+++ b/view/templates/register.tpl
@@ -44,6 +44,11 @@
 	</div>
 	<div id="register-email-end" ></div>
 
+{{if $passwords}}
+	{{include file="field_password.tpl" field=$password1}}
+	{{include file="field_password.tpl" field=$password2}}
+{{/if}}
+
 	<p id="register-nickname-desc" >{{$nickdesc}}</p>
 
 	<div id="register-nickname-wrapper" >

From 836058c47745f502890a209dfd6efcb3596ace84 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Wed, 1 Jul 2015 00:41:04 +0200
Subject: [PATCH 2/2] Added help text

---
 mod/register.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mod/register.php b/mod/register.php
index f8e970855e..1963bd7a60 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -268,7 +268,7 @@ function register_content(&$a) {
 		'$namelabel' => t('Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '),
 		'$addrlabel' => t('Your Email Address: '),
 		'$passwords' => $passwords,
-		'$password1' => array('password1', t('New Password:'), '', ''),
+		'$password1' => array('password1', t('New Password:'), '', t('Leave empty for an auto generated password.')),
 		'$password2' => array('confirm', t('Confirm:'), '', ''),
 		'$nickdesc'  => str_replace('$sitename',$a->get_hostname(),t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.')),
 		'$nicklabel' => t('Choose a nickname: '),