選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

checkin.php 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. include('../inc/inc.php');
  3. if (!$user->loggedin()) {
  4. header('Location: /login.php');
  5. die();
  6. }
  7. if ($user->getRole() !== "admin") {
  8. header('Location: /index.php');
  9. die();
  10. }
  11. if (!empty($_POST['voter']) && ((int) $_POST['voter']) == $_POST['voter']) {
  12. $voter = (int) $_POST['voter'];
  13. $result = $db->query("update members set checkedin=true where voting_id=$voter");
  14. }
  15. $header = new Header("2022 Michigan Flyers Election : Poll Worker");
  16. $header->addStyle("/styles/style.css");
  17. $header->addStyle("/styles/admin.css");
  18. $header->addStyle("/styles/vote.css");
  19. $header->addScript("/js/jquery-1.11.3.min.js");
  20. $header->addScript("/js/admin-search.js");
  21. $header->setAttribute('title', 'Michigan Flyers');
  22. $header->setAttribute('tagline', '2022 Election Administration');
  23. $header->output();
  24. $voters = $db->fetchAssoc('select ANY_VALUE(skymanager_id) as `skymanager_id`, ANY_VALUE(members.voting_id) as `voting_id`, ANY_VALUE(name) as `name`, ANY_VALUE(username) as `username`, group_concat(proxy.voting_id) as `proxies`, ANY_VALUE(upstream_proxy.delegate_id) as `delegate`, md5(coalesce(ANY_VALUE(email), "")) as `gravatar_hash` from members left join proxy on (members.voting_id=proxy.delegate_id) left join proxy as upstream_proxy on (upstream_proxy.voting_id=members.voting_id) where members.voting_id is not null group by members.voting_id UNION select skymanager_id, voting_id, name, username, NULL as `proxies`, NULL as `delegate`, md5(coalesce(email, "")) as `gravatar_hash` from members where members.voting_id is null');
  25. ?>
  26. <script type="text/javascript">
  27. var voters = <?= json_encode($voters); ?>;
  28. </script>
  29. <form action="checkin.php" method="POST">
  30. <div class="form-row">
  31. <div class="selector">
  32. <label class="radio">
  33. <input type="radio" name="button" value="ci" checked />
  34. <a class="radio-button-label" href="#">Check-In</a>
  35. </label>
  36. <label class="radio">
  37. <input type="radio" name="button" value="pe" />
  38. <a class="radio-button-label" href="/admin/paper.php">Paper Entry</a>
  39. </label>
  40. <label class="radio">
  41. <input type="radio" name="button" value="re" />
  42. <a class="radio-button-label" href="/admin/results.php">Results</a>
  43. </label>
  44. </div>
  45. </div>
  46. <div class="form-row">
  47. <input type="text" placeholder="Voter Search" id="voter-searchbox" name="voter-searchbox" value="" />
  48. <div id="voter-results"></div>
  49. <input type="hidden" name="voter" id="voter-input" value="0" />
  50. <div id="selectedVoter" class="selected candidate voter">
  51. <span class="placeholder">No Selected Voter</span>
  52. </div>
  53. </div>
  54. <div class="form-row">
  55. <input class="submit" type="submit" name="submit" value="Check In" />
  56. </div>
  57. </form>
  58. <?php if (!empty($voter)): ?>
  59. <div id="vote-result">
  60. <div id="status" class="<?= $result ? "success" : "failure"; ?>"></div>
  61. <div id="message" class="<?= $result ? "success" : "failure"; ?>">
  62. <?= !empty($error) ? $error : ($result ? "The member has been checked in" :
  63. "The member could not be checked in") ?>
  64. </div>
  65. </div>
  66. <?php endif; ?>
  67. <?php
  68. $footer = new Footer();
  69. $footer->output();