<?php
/*----------------------------------------------------------------------------------------------------
 * intern/antrag.php
 *----------------------------------------------------------------------------------------------------
 * 18.04.2021	erste Version abgeleitet aus Z/registrieren.php
 * 05.05.2021	auch Teile des Clannnamens ausreichend; Meldungen an Anwärter angepasst
 * 21.04.2022	Clanname optional, dann Check auf Vorname
 * 16.05.2022	Parameter werden getrimmt
 * 19.05.2022	Maske umgestaltet mit Hinweis zum Passwort-Merken; Passwort bereits in MD5 kodiert übertragen, parallel auch in sha256
 * 20.05.2022	autocomplete=new-password
 * 26.05.2022	Redirect statt Close; Zurück oder Schließen je nachdem ob in Frame
 *----------------------------------------------------------------------------------------------------
 */

require 'bullen.inc.php';
require 'form.class.php';

$page->StartSession();
// $page::SetApplication('Thomas');
$db = new bullenAdmDB;

if (CURRENT_FRAME) {
	$close = 'parent.HideLogin();self.close();return false';
	$backbutton = Page::RawButtons([new MenuButton(LOGIN_ICON, null, null, null, ['onclick' => $close])]);
	$cancelbutton = $close;
}
else {
	$back = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH);
	$backbutton = Page::RawButtons([$back => LOGIN_ICON]);
	$cancelbutton = 'location="'.$back.'"';
}

// if (Action::Get() == 'Registrieren')
$_REQUEST = Encode($_REQUEST, ENCODE::TRIM);
$page->CheckParms('s:Vorname,s:Nachname,s:Clanname,s:Mobiltelefon,s:eMail,s:Benutzername,i:lost,s:sha256');
if ($Vorname && $Nachname && $eMail && $Benutzername && $sha256) {
	$db->Query("SELECT mitglieder.MitgliedNr, antraege.BenutzerNr, benutzer.Benutzername, AntragNr
		FROM mitglieder LEFT JOIN benutzer USING (MitgliedNr) LEFT JOIN antraege USING (MitgliedNr)
		WHERE LOCATE('$Nachname',Echtname) AND (LOCATE('$Clanname',mitglieder.Clanname) OR LOCATE('$Vorname',Echtname))");
	if		(!$db->next_record()) 		  					$page->Error('Kein Bulle oder Anwärter dieses Namens');
	elseif	(!$lost && ($db->Record['BenutzerNr'] != null))	$page->Error('Bereits registrierter Benutzer');
	elseif	($db->Record['AntragNr'] != null)				$page->Error('Bereits beantragt');
	elseif  ($db->Record['Benutzername'] == $Benutzername)	$page->Error('Benutzername bereits vergeben');
	else	$MitgliedNr = $db->Record['MitgliedNr'];

	$db->Insert('antraege', Clean(compact('MitgliedNr', 'Vorname', 'Nachname', 'Clanname', 'Mobiltelefon', 'eMail', 'Benutzername', 'sha256') + ['Datum' => date('Y-m-d h:i:s')]));
	NotifyMyDevice('Registrierung von '. ($Clanname ?: $Vorname.' '.$Nachname));
	$page->Info('Info', '<h3>Danke.</h3>'.BR.'Deine Registrierung wurde gespeichert und wird demnächst bearbeitet.'.BR.BR.CLAN_GRUSS);
}
else {
	if ($lost) {
		$h = 'Benutzername vergessen';
// 		$u = P('HELP_NAMEVERGESSEN');
	}
	else {
		$h = 'Passwort beantragen';
// 		$u = P('HELP_REGISTER').NL;
	}
	$page->AddScriptSource(JS_FOLDER.'sha256.min.js');
	$page->AddScript('
function hashes(form) {
	form.sha256.value = sha256(form.Passwort.value);
	form.Passwort.value = "";
}
');
	$page->AddStyles([
		'table'	=> 'border-collapse: collapse',
		'tbody.b2 tr:first-of-type'	=> 'border-top: solid black thin',
		'tbody.b3' => [
				'tr:first-of-type'	=> 'border-top: solid black thin',
				'tr:last-of-type'	=> 'border-bottom: solid black thin',
				'tr'				=> 'border-left: solid black thin; border-right: solid black thin',
		],
		'td'	=> 'padding: 0.2em'

	]);
	$page->Heading($h, $backbutton);
// 	echo $u;
	Form::Open(['onsubmit' => 'hashes(this)', 'autocomplete' => 'new-password']);
	echo '<tbody>',NL;
	Form::Text('Vorname',		100, 20, null,		'*', ['required']);
	Form::Text('Nachname', 		100, 20, null,		'*', ['required']);
	Form::Text('Clanname', 		100, 20, null,		'wenn Bulle');
	echo '</tbody>',NL;
	echo '<tbody class="b2">',NL;
	Form::Text('Mobiltelefon',	100, 38, null,		'*', ['required']);
	Form::Text('E-Mail',		100, 38, 'eMail',	'*', ['required', 'autocomplete' => 'new-password']);
	echo '</tbody>',NL;
	echo '<tbody class="b3">',NL;
	Form::FullRow('Wähle Deine Zugangsdaten selbst. Bitte nicht vergessen!', ['style' => 'font-style:italic']);
	Form::Text('Benutzername',	100, 32, null,		'*', ['required']);
	Form::Row ('Passwort', Control::Password('Passwort', ['required', 'autocomplete' => 'new-password']), '*');
	echo '</tbody>',NL;
	Form::CloseTable();
	Form::HiddenValue('sha256', '');
// 	Form::HiddenValue('hash', '');
	Form::HiddenValue('lost', $lost ? 1 : 0);
 	Form::ActionButton('Registrieren');
	Form::CancelButton($cancelbutton);
	Form::Close();
	Page::Close('<p style="color:red; font-weight:bold">Bitte alle Eingabefelder ausfüllen!</p>');
}
