array( 'method' => 'POST', 'header' => implode("\r\n", $headers), 'content' => $dataString, 'timeout' => 30)); $context = stream_context_create($options); return file_get_contents($url, false, $context); } /** * Redirects to the provided URL. * @param string $pageFileName The name of the HTML or PHP file to redirect to, relative to the base URL; for example: 'friend/thankapplication.html' */ function bpRedirect($pageFileName) { header('Location: '.LDW_BASE_URL.'/'.$pageFileName); } $formFields = array( 'fname', 'lname', 'username', 'email', 'android', 'ipad', 'iphone', 'kindle', 'winmobile', 'betaexp', 'personal', 'certify'); $requiredFields = array( 'fname', 'lname', 'email', 'betaexp', 'personal', 'certify'); $maxLengthFields = array( 'fname' => 255, 'lname' => 255, 'username' => 255, 'email' => 255, 'betaexp' => 1000, 'personal' => 1000); $emailFields = array( 'email'); $deviceFields = array( 'android', 'ipad', 'iphone', 'kindle', 'winmobile'); $deviceFieldDisplayNames = array( 'android' => 'Android phone or tablet', 'ipad' => 'iPad', 'iphone' => 'iPhone', 'kindle' => 'Kindle Fire', 'winmobile' => 'Windows phone or tablet'); // This holds any form error messages. $errors = array(); // This holds whatever was submitted. It will be used to populate the form, in case there // were errors, and it will also be used to help construct the email message, if there were // no errors. $formValues = array(); foreach ($formFields as $fieldName) { $formValues[$fieldName] = null; } if ($_POST) { // Store all submitted values in $formValues. The $formValues array is then used to populate the values // in the form, below, so that in case there are errors, the submitted values are retained. foreach ($formFields as $fieldName) { if (isset($_POST[$fieldName])) { $formValues[$fieldName] = $_POST[$fieldName]; } } // Validate required fields. foreach ($requiredFields as $requiredFieldName) { if (trim($formValues[$requiredFieldName]) === '') { $errors[$requiredFieldName] = 'Please fill out this field.'; } } // Validate fields with maximum lengths. foreach ($maxLengthFields as $maxLengthFieldName => $maxLength) { if (isset($formValues[$maxLengthFieldName]) && strlen($formValues[$maxLengthFieldName]) > $maxLength) { $errors[$maxLengthFieldName] = 'Please use a maximum of '.number_format($maxLength).' characters.'; } } // Validate email address fields. foreach ($emailFields as $emailFieldName) { // This can reportedly not allow some valid email addresses. If needed, this can be changed. if (filter_var($formValues[$emailFieldName], FILTER_VALIDATE_EMAIL) === false) { $errors[$emailFieldName] = 'Please enter a valid email address.'; } } // Require at least once device, and also validate that the submitted value matches the name // of the form element. That way, the user can't submit "something they typed in" for say, // 'android'. The 'android' field has to have 'android' as a value. $deviceCount = 0; foreach ($deviceFields as $deviceFieldName) { if (isset($formValues[$deviceFieldName])) { // Example: 'android' === 'android' if ($formValues[$deviceFieldName] === $deviceFieldName) { $deviceCount++; } // If the value isn't valid, undo the selection. else { $formValues[$deviceFieldName] = null; } } } if ($deviceCount === 0) { $errors['device'] = 'Please select at least one device.'; } // Recaptcha check. $recaptchaData = array( 'secret' => LDW_RECAPTCHA_SECRET_KEY, 'response' => $_POST['g-recaptcha-response']); if (isset($_SERVER['REMOTE_ADDR'])) { $recaptchaData['remoteip'] = $_SERVER['REMOTE_ADDR']; } // This sends the recaptcha check to Google. The response comes back as a JSON string, so // decode it, turning it into an array, and check for 'success' => true. $recaptchaResponse = json_decode(bpHttpPost('https://www.google.com/recaptcha/api/siteverify', $recaptchaData), true); if ((!isset($recaptchaResponse['success'])) || $recaptchaResponse['success'] !== true) { $errors['recaptcha'] = 'Please confirm this selection.'; } // If there were no errors, build and send the email message, and redirect to the success // page. If there were errors, just display the form again, and populate it with whatever // was submitted. if (empty($errors)) { // @TODO: Not sure if this needs to be done. It's done in order to make sure that the message // only contains "\r\n", and not some mix. foreach ($formValues as $fieldName => $value) { if (isset($formValues[$fieldName])) { $formValues[$fieldName] = str_replace(array("\r\n", PHP_EOL, "\r", "\n"), " ", $value); } } $messageNewLine = "\r\n"; $messageParts = array(); // Full name. $messageParts[] = wordwrap('Full name: '.($formValues['fname'].' '.$formValues['lname']), 70, $messageNewLine); $messageParts[] = ''; // LDW user name. $messageParts[] = wordwrap('LDW forum user name: '.$formValues['username'], 70, $messageNewLine); $messageParts[] = ''; // Email address. $messageParts[] = wordwrap('Email address: '.$formValues['email'], 70, $messageNewLine); // Devices. $messageParts[] = ''; $messageParts[] = 'Device(s):'; foreach ($deviceFields as $deviceFieldName) { if (isset($formValues[$deviceFieldName])) { $messageParts[] = $deviceFieldDisplayNames[$deviceFieldName]; } } $messageParts[] = ''; // Previous beta testing experience. $messageParts[] = 'Beta testing experience:'; $messageParts[] = wordwrap($formValues['betaexp'], 70, $messageNewLine); // Personal information. $messageParts[] = ''; $messageParts[] = 'Personal:'; $messageParts[] = wordwrap($formValues['personal'], 70, $messageNewLine); // NDA Signature. $messageParts[] = ''; $messageParts[] = ''; $messageParts[] = 'NDA Signature'; $messageParts[] = ''; $messageParts[] = 'By sending this email, I certify that I have agreed to and electronically signed the Non-Disclosure Agreement listed on the main website of Last Day of Work, LLC (LDW), by which I am entering into a confidential relationship with LDW covering any beta software and related information that is shared with me.'; // Get ready to send $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = BETA_EMAIL_SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = BETA_EMAIL_SMTP_USERNAME; $mail->Password = BETA_EMAIL_SMTP_PASSWORD; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom(BETA_EMAIL_FROM); foreach (explode(',', BETA_EMAIL_TO) as $toAddress) { $mail->addAddress(trim($toAddress)); } $mail->Subject = 'Beta Test Application'; $mail->isHTML(false); foreach ($messageParts as $i => $part) { $messageParts[$i] = $mail->html2text($part); } $mail->Body = implode($messageNewLine, $messageParts); //$mail->AltBody = $mail->html2text($mail->Body); // Try to send the email message. If successful, redirect to the thanks page. if ($mail->send()) { bpRedirect('thankapplication.php'); } else { $errors['mail'] = 'Sorry, we were unable to process your application at this time.'; } } } ?>
Home - Contact Us - Beta Test Program
We are always looking for new beta testers to join our amazing team. We especially like to have people with a good eye for bugs and typos, who are willing to devote time to carefully examining the game and providing detailed feedback about their testing experiences. This helps us to stay objective and makes sure that all our releases are as good as they can be!
We require each beta tester to sign a digital Non-Disclosure Agreement (NDA) in order to join our program. The NDA is a legal agreement between LDW Software, LLC and the individual beta tester that enforces the confidentiality of software downloaded from our beta boards. NOTE: You must be at least 18 years of age to legally sign this NDA.
To sign up as a beta tester you will need to:
All properly completed applications will be kept for consideration for future beta tests. The selection of beta testers is based upon need and the qualifications, device, and experience of applicants. You are more likely to be selected to beta test if you provide complete information about yourself and your test device(s). If you are selected as a beta tester for a particular test, you will receive an email from us shortly before the test begins.