$recaptcha = new \ReCaptcha\ReCaptcha(RECAPTCHA_SECRET); $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); if (!$resp->isSuccess()) { throw new UserException('reCAPTCHA error'); } if (!$_POST['email']) { throw new UserException('Email address not entered.'); } if ($_POST['email'] !== $_POST['repeat_email']) { throw new UserException('The entered email addresses do not match.'); } if ($dal->selectPersonByEmail($_POST['email']) !== null) { throw new UserException('The entered email address is already in use. Please login before requesting an unique id range.'); } $person = array('person_first_name' => $_POST['first_name'], 'person_last_name' => $_POST['last_name'], 'person_organization' => $_POST['organization'], 'person_email' => $_POST['email'], 'person_subscribe' => isset($_POST['subscribe']) ? 'y' : 'n', 'person_email_verified' => 'n', 'person_email_shared_secret' => null, 'person_password_hash' => null); $dal->insertPerson($person); } else { if ($user['person_unapproved_uniqueid_count'] > 0) { throw new UserException('A previous unique id range request is still pending approval.'); } $person = $user; } $unique_id = array('person_id' => $person['person_id'], 'uniqueid_url' => $_POST['url'], 'uniqueid_user_comment' => $_POST['comment']); $dal->insertUniqueId($unique_id); $subject = "OpenLCB Unique ID Range Requested"; $body = "Hi " . formatPersonName($person) . ",\r\n\r\nYou were assigned an OpenLCB unique ID range of:\r\n" . formatUniqueIdHex($unique_id) . "\r\n\r\nDelegating organization or person: " . formatPersonName($person) . "\r\nURL: " . $unique_id['uniqueid_url'] . "\r\nComment: " . $unique_id['uniqueid_user_comment'] . "\r\n\r\nThe OpenLCB Group"; if (!mail_abstraction(array(formatPersonEmail($person)), $subject, $body)) { throw new UserError('Failed to send email.'); } $body = "A new OpenLCB unique ID range has been assigned.\r\nYou have been notified as you are a moderator.\r\n\r\n" . formatUniqueIdHex($unique_id) . "\r\n\r\nDelegating organization or person: " . formatPersonName($person) . "\r\nURL: " . $unique_id['uniqueid_url'] . "\r\nComment: " . $unique_id['uniqueid_user_comment'] . "\r\n\r\nUID: " . 'http://' . $_SERVER['HTTP_HOST'] . '/uniqueidrange?uniqueid_id=' . $unique_id['uniqueid_id'] . "\r\nAll pending UIDs: " . "http://" . $_SERVER['HTTP_HOST'] . '/uniqueidranges?pending'; if (!mail_abstraction(array_map('formatPersonEmail', $dal->selectModerators()), $subject, $body, array(EMAIL_FROM))) {