view pages/vote.inc.php @ 1096:bbc0a3d0b51e

Major renaming / refactor of site messages. Some that were previously modifiable from admin interface are now "hardcoded" in the configuration file. Having these settings made modifiable from there made no sense and just took space in the UI.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 27 Jan 2017 22:15:06 +0200
parents 95b74632cfe2
children b2bca5f6d0ff
line wrap: on
line source

<?php
//
// FAPWeb - Simple Web-based Demoparty Management System
// Competition voting page
// (C) Copyright 2012-2015 Tecnic Software productions (TNSP)
//
$sessionType = "user";


function stGetVoteButton()
{
  return
    " <div class=\"voteControls\">\n".
    "  ".stGetFormSubmitInput("vote", "Submit votes and log out", "")."\n".
    " </div>\n";
}

function stVoteLoginForm()
{
  $userKeyLen = stGetSetting("userKeyLength");
  return
    "<div class=\"voteLogin\">\n".
    " ".stGetFormStart("vote", "usrlogin.php").
    " ".stGetFormHiddenInput("mode", "vote")."\n".
    " ".stGetFormHiddenInput("goto", "vote")."\n".
    "  Enter your vote key:\n".
    "  ".stGetFormTextInput($userKeyLen > 30 ? $userKeyLen : 30, $userKeyLen, "key", "", "", "", "autocomplete=\"off\" autofocus=\"autofocus\"")."\n".
    "  ".stGetFormSubmitInput("login", "Login")."\n".
    " </form>\n".
    "</div>\n";
}

// Check if voting is enabled
if (!stChkSetting("allowVoting"))
  echo stGetSetting("msgVotingDisabled");
else
if (!stUserSessionAuth(FALSE))
{
  // Perform authentication if we are not in session already
  if (($error = stGetRequestItem("error", 0, TRUE)) != 0)
  {
    echo
      "<h1>Voting system login failed</h1>\n".
      "<p class=\"notice\">\n";

    switch ($error)
    {
      case 1:
        echo "The userkey does not exist. Please try again.";
        break;

      case 2:
        echo "There was an error in the system. Contact an administrator.";
        break;

      case 3:
        echo
          "The userkey is not yet activated, try again later. If ".
          "you are certain that it should be working now, go pester an organizer.";
        break;
      
      default:
        echo
          "Undefined error occured.";
        break;
    }

    echo
      "</p>\n";
  }
  else
  {
    echo
      "<h1>Voting system</h1>\n";
  }

  echo stVoteLoginForm();
}
else
if (($mode = stGetSessionItem("mode")) == "vote")
{
?>
<noscript>
<div class="notice">If your browser supports JavaScript, enable it for smoother voting experience.</div>
</noscript>
<script type="text/javascript" src="usrajax.js.php"></script>
<?php
  // Try fetching previously stored votes
  $sql = stPrepareSQL(
    "SELECT entry_id,value FROM votes WHERE key_id=%d",
    stGetSessionItem("key_id"));

  $votes = array();
  if (($res = stExecSQL($sql)) !== false)
  {
    foreach ($res as $vote)
      $votes[$vote["entry_id"]] = $vote["value"];
  }

  // Output voting system HTML
  echo
    "<h1>Voting system</h1>\n".
    stGetFormStart("vote", "usrajax.php").
    " ".stGetFormHiddenInput("mode", "done")."\n".
    " ".stGetFormHiddenInput("action", "submit")."\n".
    " ".stGetFormHiddenInput("onerror", "noauthvote")."\n".
    stGetVoteButton();

  foreach (stExecSQL("SELECT * FROM compos WHERE visible<>0 AND voting<>0 ORDER BY id") as $compo)
  {
    $esql = stPrepareSQL("FROM entries WHERE (flags & %d)=0 AND compo_id=%d", EFLAG_DISQUALIFIED, $compo["id"]);
    $nentries = stFetchSQLColumn("SELECT COUNT(*) ".$esql);
    if ($nentries > 0)
    {
      echo
      " <table class=\"vote\">\n".
      "  <tr>\n".
      "   <th class=\"vshown\">#</th>\n".
      "   <th class=\"vcompo\">".chentities($compo["name"])."</th>\n";
      for ($i = stGetSetting("voteMax"); $i >= stGetSetting("voteMin"); $i--)
      {
        echo "   <th class=\"vvalue\">".$i."</th>\n";
      }
      echo
      "  </tr>\n";

      $row = 0;
      foreach (stExecSQL("SELECT * ".$esql." ORDER BY show_id ASC") as $entry)
      {
        $eid = $entry["id"];
        echo
          "  <tr class=\"".($row % 2 == 1 ? "rodd" : "reven")."\">\n".
          "   <td class=\"vshown\">".($entry["show_id"] > 0 ? $entry["show_id"] : "-")."</td>\n".
          "   <td class=\"ventry\">\n".
          "    <div class=\"vpreview\">";

        stPrintPreviewElements($compo, $entry);

        echo
          "</div>\n".
          "    <div class=\"vinfo\">".
          "<span class=\"vtitle\">".$entry["name"]."</span>".
          ($compo["show_authors"] ? "<span class=\"vby\"> by </span><span class=\"vauthor\">".$entry["author"]."</span>" : "").
          "</div>\n".
          "   </td>\n";

        $val = isset($votes[$eid]) ? $votes[$eid] : 0;

        for ($i = stGetSetting("voteMax"); $i >= stGetSetting("voteMin"); $i--)
        {
          $nid = "ve".$eid."_".$i;
          echo
            "   <td class=\"vvalue\">".
            "<input type=\"radio\" id=\"".$nid.
            "\" name=\"ventry".$eid."\" value=\"".$i."\" ".
            "onClick=\"updateVote(".$eid.",".$i.")\" ".
            ($val == $i ? "checked=\"checked\" ": "")."/>".
            "<label for=\"".$nid."\"></label>".
            "</td>\n";
        }

        echo
          "  </tr>\n";

        $row++;
      }
      echo
      " </table>\n";
    }
  }

  echo
    stGetVoteButton().
    "</form>\n";
}
else
if ($mode == "done")
{
  // Voting finished successfully
  echo stGetSetting("msgVoteFinished");
  stSessionEnd(SESS_USER);
}
else
if ($mode == "error")
{
  // Error cases in session, when using form submit
  echo
    "<h1>Voting system error</h1>\n".
    "<ul class=\"notice\">\n";

  foreach (stGetSessionItem("error") as $msg)
    echo " <li>".chentities($msg)."</li>\n";

  echo
    "</ul>\n".
    stVoteLoginForm();

  stSessionEnd(SESS_USER);
}
?>