+ $utils->log('user_log_check', 'user: '.$user['id'].', email: '.$user['email'].', status: '.$user['status']);
+ if ($user['status'] == 'unchecked' && !is_null($user['hcheck_question']) && array_key_exists('hcheck_solution', $_POST)) {
+ if ($_POST['hcheck_solution'] == $user['hcheck_solution']) {
+ $result = $db->prepare('UPDATE `auth_users` SET `status` = :status, `hcheck_question` = :hcquestion, `hcheck_solution` = :hcsolution WHERE `id` = :userid;');
+ if (!$result->execute(array(':status' => 'unverified', ':hcquestion' => null, ':hcsolution' => null, ':userid' => $user['id']))) {
+ $errors[] = _('Could not update user status.').' '
+ .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']);
+ }
+ $user['status'] = 'unverified';
+ $utils->log('user_checked', 'user: '.$user['id'].', email: '.$user['email']);
+ }
+ else {
+ $errors[] = _('Solution was not correct. Please start over.');
+ $utils->log('user_check_failed', 'user: '.$user['id'].', email: '.$user['email']);
+ }
+ }
+ if ($user['status'] == 'unchecked') {
+ // Display a humanity check.
+ $pagetype = 'human_check';
+ // simple numbers, we stay within the 0 to 100 range
+ $num1 = mt_rand(0, 10);
+ $num2 = mt_rand($num1, 100);
+ $operation = mt_rand(0, 1); // 0 is addition, 1 is subtraction
+ if ($operation == 0) {
+ $user['hcheck_question'] = sprintf(_('%s plus %s equals'), ($num2 - $num1), $num1);
+ $user['hcheck_solution'] = $num2;
+ }
+ else {
+ $user['hcheck_question'] = sprintf(_('%s minus %s equals'), $num2, $num1);
+ $user['hcheck_solution'] = $num2 - $num1;
+ }
+ $result = $db->prepare('UPDATE `auth_users` SET `hcheck_question` = :hcquestion, `hcheck_solution` = :hcsolution WHERE `id` = :userid;');
+ if (!$result->execute(array(':hcquestion' => $user['hcheck_question'], ':hcsolution' => $user['hcheck_solution'], ':userid' => $user['id']))) {
+ $errors[] = _('Could not generate check for being a human.').' '
+ .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']);
+ }
+ }
+ elseif ($user['status'] == 'unverified') {