WHERE c.category = :category AND c.exposed = 1 ORDER BY c.points ASC, c.id ASC', array('user_id_1' => $_SESSION['id'], 'user_id_2' => $_SESSION['id'], 'user_id_3' => $_SESSION['id'], 'user_id_4' => $_SESSION['id'], 'category' => $current_category['id'])); echo '<div id="challenges-container" class="panel-group">'; foreach ($challenges as $challenge) { // if the challenge isn't available yet, display a message and continue to next challenge if ($time < $challenge['available_from']) { echo ' <div class="panel panel-default challenge-container"> <div class="panel-heading"> <h4 class="challenge-head">Hidden challenge worth ', number_format($challenge['points']), 'pts</h4> </div> <div class="panel-body"> <div class="challenge-description"> Available in ', time_remaining($challenge['available_from']), ' (from ', date_time($challenge['available_from']), ' until ', date_time($challenge['available_until']), ') </div> </div> </div>'; continue; } $remaining_submissions = $challenge['num_attempts_allowed'] ? $challenge['num_attempts_allowed'] - $challenge['num_submissions'] : 1; $panel_class = "panel-default"; if (!$remaining_submissions) { $panel_class = "panel-danger"; } else { if ($challenge['correct_submission_added']) { $panel_class = "panel-success"; } } echo '
if ($remaining_submissions) { if ($challenge['num_submissions'] && !$challenge['automark'] && !$challenge['marked']) { message_inline_blue('Your submission is awaiting manual marking.'); } echo ' <div class="challenge-submit"> <form method="post" class="form-flag" action="actions/challenges"> <textarea name="flag" type="text" class="form-control" placeholder="Please enter flag for challenge: ', htmlspecialchars($challenge['title']), '"></textarea> <input type="hidden" name="challenge" value="', htmlspecialchars($challenge['id']), '" /> <input type="hidden" name="action" value="submit_flag" />'; form_xsrf_token(); if (CONFIG_RECAPTCHA_ENABLE_PRIVATE) { display_captcha(); } echo ' <p> ', $challenge['min_seconds_between_submissions'] ? 'Minimum of ' . seconds_to_pretty_time($challenge['min_seconds_between_submissions']) . ' between submissions. ' : '', ' ', $challenge['num_attempts_allowed'] ? number_format($remaining_submissions) . ' submissions remaining. ' : '', ' Available for another ', time_remaining($challenge['available_until']), '. </p> <button class="btn btn-sm btn-primary" type="submit">Submit flag</button> </form> </div> '; } else { message_inline_red("You have no remaining submission attempts. If you've made an erroneous submission, please contact the organizers."); } } echo ' </div> <!-- / challenge-container -->'; } foot();
function print_time_left($challenge) { echo '<span data-countdown="', $challenge['available_until'], '"> ', lang_get('time_remaining', array('time' => time_remaining($challenge['available_until']))), ' </span>'; }
function print_time_left($challenge) { echo '<span data-countdown="', $challenge['available_until'], '"> ', time_remaining($challenge['available_until']), ' remaining </span>'; }