$dal = new DAL($opts['hn'], $opts['db'], $opts['un'], $opts['pw']); try { $dal->beginTransaction(); $user = $dal->selectUser(); if ($user === null) { throw new UserException('Login required.'); } $unique_id = $dal->selectUniqueId($_GET['uniqueid_id']); if ($unique_id === null) { throw new UserException('Range not found.'); } if ($user['person_id'] !== $unique_id['person_id'] && $user['person_is_moderator'] !== 'y') { throw new UserException('Moderator login required.'); } if (isset($_POST['transfer'])) { $person = $dal->selectPersonByEmail($_POST['email']); if ($person === null) { throw new UserException('Profile not found.'); } $unique_id['person_id'] = $person['person_id']; $dal->updateUniqueId($unique_id); $subject = "OpenLCB Unique ID Range Transferred"; $body = "Hi " . formatPersonName($unique_id) . ",\r\n\r\nThe following OpenLCB Unique ID Range has been Transferred.\r\n\r\n" . formatUniqueIdHex($unique_id) . "\r\n\r\nFrom delegating organization or person: " . formatPersonName($unique_id) . "\r\nTo delegating 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($unique_id)), $subject, $body)) { throw new UserError('Failed to send email.'); } $subject = "OpenLCB Unique ID Range Transferred"; $body = "Hi " . formatPersonName($person) . ",\r\n\r\nThe following OpenLCB Unique ID Range has been Transferred.\r\n\r\n" . formatUniqueIdHex($unique_id) . "\r\n\r\nFrom delegating organization or person: " . formatPersonName($unique_id) . "\r\nTo delegating 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.'); }
if ($user === null) { if (!isset($_POST['g-recaptcha-response']) || !$_POST['g-recaptcha-response']) { throw new UserException('Robots not allowed.'); } $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)) {