function print_ratingsHistory($format) { global $player; $db = Database::getConnection(); $stmt = $db->prepare("SELECT e.name, r.rating, n.medal, n.deck AS id\n FROM events e, entries n, ratings r\n WHERE r.format= ? AND r.player = ?\n AND e.start=r.updated AND n.player=r.player AND n.event=e.name\n ORDER BY e.start DESC"); $stmt->bind_param("ss", $format, $player->name); $stmt->execute(); $stmt->bind_result($eventname, $rating, $medal, $deckid); $stmt->store_result(); echo "<table style=\"border-width: 0px;\" align=\"center\">\n"; echo "<tr><td align=\"center\"><b>Pre-Event</td>\n"; echo "<td><b>Event</td>\n"; echo "<td><b>Deck</td>\n"; echo "<td align=\"center\"><b>Record</td>\n"; echo "<td align=\"center\"><b>Medal</td>\n"; echo "<td align=\"center\"><b>Post-Event</td></tr>\n"; if ($stmt->num_rows > 0) { $stmt->fetch(); $preveventname = $eventname; $prevrating = $rating; while ($stmt->fetch()) { $entry = new Entry($preveventname, $player->name); $wl = $entry->recordString(); $img = medalImgStr($entry->medal); echo "<tr><td align=\"center\">{$rating}</td>\n"; echo "<td>{$preveventname}</td>\n"; echo "<td>" . $entry->deck->linkTo() . "</td>\n"; echo "<td align=\"center\">{$wl}</td>\n"; echo "<td align=\"center\">{$img}</td>"; echo "<td align=\"center\">{$prevrating}</td></tr>"; $prevrating = $rating; $preveventname = $eventname; } $entry = new Entry($preveventname, $player->name); $wl = $entry->recordString(); $img = medalImgStr($entry->medal); echo "<tr><td align=\"center\">1600</td>\n"; echo "<td>{$preveventname}</td>\n"; echo "<td>" . $entry->deck->linkTo() . "</td>\n"; echo "<td align=\"center\">{$wl}</td>\n"; echo "<td align=\"center\">{$img}</td>"; echo "<td align=\"center\">{$prevrating}</td></tr>"; } else { echo "<tr><td colspan=6 align=\"center\"><i>"; echo "You have not played any {$format} events.</td></tr>\n"; } echo "</table>\n"; }
function inlineMedal($medal) { echo medalImgStr($medal) . " "; }
function exactMatchTable($deck) { if ($deck->cardcount < 5) { return; } $decks = $deck->findIdenticalDecks(); if (count($decks) == 0) { return false; } echo "<table style=\"border-width: 0px\" cellpadding=1 align=\"right\">\n"; echo "<tr><th colspan=5 align=\"left\"><b>THIS DECK ALSO PLAYED AS</td></tr>\n"; foreach ($decks as $deck) { if (!isset($deck->playername)) { continue; } $cell1 = medalImgStr($deck->medal); $cell4 = $deck->recordString(); echo "<tr><td>{$cell1}</td>\n"; echo "<td style=\"width: 140px\">" . $deck->linkTo() . "</td>\n"; echo "<td>{$deck->playername}</td>\n"; echo "<td><a href=\"{$deck->getEvent()->threadurl}\">{$deck->eventname}</a></td>\n"; echo "<td style=\"text-align: right; width: 30px;\">{$cell4}</td></tr>\n"; } echo "</table>\n"; }
function pointsAdjustmentForm($event) { $entries = $event->getEntries(); // Start a new form echo "<form action=\"event.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"name\" value=\"" . htmlentities($event->name) . "\" />"; echo "<table style=\"border-width: 0px\" align=\"center\">"; echo "<input type=\"hidden\" name=\"view\" value=\"points_adj\">"; echo "<tr class=\"top\"> <th> Player </th> <th> </th> <th> Deck </th> <th> Points <br /> Adj. </th> <th> Reason </th> </tr>"; foreach ($entries as $entry) { $name = $entry->player->name; $adjustment = $event->getSeasonPointAdjustment($name); echo "<tr> <td> {$name} </td>"; if ($entry->medal != "") { $img = medalImgStr($entry->medal); echo "<td> {$img} </td>"; } else { echo "<td> </td>"; } if ($entry->deck != NULL) { $img = image_tag("verified.png", array("alt" => "Verified", "title" => "Player posted deck")); echo "<td> {$img} </td>"; } else { echo "<td> </td>"; } if ($adjustment != NULL) { echo "<td style=\"text-align: center;\"> <input type=\"text\" style=\"width: 50px;\" name=\"adjustments[{$name}]\" value=\"{$adjustment['adjustment']}\" /> </td>"; echo "<td> <input type=\"text\" style=\"width: 400px;\" name=\"reasons[{$name}]\" value=\"{$adjustment['reason']}\" /> </td>"; } else { echo "<td style=\"text-align: center;\"> <input type=\"text\" style=\"width: 50px;\" name=\"adjustments[{$name}]\" value=\"\" /> </td>"; echo "<td> <input type=\"text\" style=\"width: 400px;\" name=\"reasons[{$name}]\" value=\"\" /> </td>"; } echo "</tr>"; } echo "<tr> <td colspan=\"3\" class=\"buttons\"> "; echo "<input type=\"submit\" name=\"mode\" value=\"Update Adjustments\" />"; echo "</td> </tr> </table> </form>"; }
function fullmetagame($event) { $decks = $event->getDecks(); $players = array(); foreach ($decks as $deck) { $info = array("player" => $deck->playername, "deckname" => $deck->name, "archetype" => $deck->archetype, "medal" => $deck->medal, "id" => $deck->id); $arr = deckInfo($deck); $info["colors"] = $arr[1]; if ($info['medal'] == "dot") { $info['medal'] = "z"; } $players[] = $info; } $db = Database::getConnection(); $succ = $db->query("CREATE TEMPORARY TABLE meta(\n player VARCHAR(40), deckname VARCHAR(40), archetype VARCHAR(20),\n colors VARCHAR(10), medal VARCHAR(10), id BIGINT UNSIGNED,\n srtordr TINYINT UNSIGNED DEFAULT 0)"); $succ or die($db->error); $stmt = $db->prepare("INSERT INTO meta(player, deckname, archetype, colors, medal, id)\n VALUES(?, ?, ?, ?, ?, ?)"); foreach ($players as $player) { $stmt->bind_param("sssssd", $player['player'], $player['deckname'], $player['archetype'], $player['colors'], $player['medal'], $player['id']); $stmt->execute() or die($stmt->error); } $stmt->close(); $result = $db->query("SELECT colors, COUNT(player) AS cnt FROM meta GROUP BY(colors)"); $stmt = $db->prepare("UPDATE meta SET srtordr = ? WHERE colors = ?"); while ($row = $result->fetch_assoc()) { $stmt->bind_param("ds", $row['cnt'], $row['colors']); $stmt->execute() or die($stmt->error); } $stmt->close(); $result->close(); $result = $db->query("SELECT player, deckname, archetype, colors, medal, id, srtordr\n FROM meta ORDER BY srtordr DESC, colors, medal, player"); $color = "orange"; echo "<table style=\"border-width: 0px;\" align=\"center\">"; echo "<tr>"; echo "<td colspan=5 align=\"center\"><b>Metagame Breakdown</td></tr>\n"; while ($row = $result->fetch_assoc()) { if ($row['colors'] != $color) { $color = $row['colors']; echo "<tr><td>"; echo image_tag("colors/{$color}.png") . " </td>\n"; echo "<td colspan=4 align=\"left\"><i>{$row['srtordr']} Players "; echo "</td></tr>\n"; } echo "<tr><td></td>\n"; echo "<td align=\"left\">"; echo "</td>\n<td align=\"left\">"; if ($event->finalized == '0') { echo "Player is anonymous for deck privacy until event is finalized."; } else { // puts medal next to name of person who won it if ($row['medal'] != "z") { echo medalImgStr($row['medal']) . " "; } $play = new Player($row['player']); $entry = new Entry($event->name, $play->name); echo $play->linkTo() . "</td>\n"; echo "<td align=\\left\">{$entry->recordString()}</td>"; echo "<td align=\"left\">"; echo "<a href=\"deck.php?mode=view&id={$row['id']}\">"; echo "{$row['deckname']}</a></td>\n"; echo "<td align=\"right\">{$row['archetype']}</td></tr>\n"; } } $result->close(); echo "</table>\n"; }
function content() { if (!empty($_GET['deck']) || !empty($_GET['card'])) { $db = Database::getConnection(); $decknamesearch = "%" . $db->escape_string($_GET['deck']) . "%"; $cardsearch_wild = "%" . $db->escape_string($_GET['card']) . "%"; // TODO: I need a better way of doing this if (empty($_GET['card']) && !empty($_GET['deck'])) { $stmt = $db->prepare("SELECT id FROM decks WHERE name LIKE ? LIMIT 20"); $stmt->bind_param("s", $decknamesearch); } else { if (!empty($_GET['card']) && !empty($_GET['deck'])) { $stmt = $db->prepare("SELECT id FROM decks WHERE name LIKE ? AND deck_contents_cache LIKE ? LIMIT 20"); $stmt->bind_param("ss", $decknamesearch, $cardsearch); } else { if (!empty($_GET['card']) && empty($_GET['deck'])) { $stmt = $db->prepare("SELECT id FROM decks WHERE deck_contents_cache LIKE ? LIMIT 20"); $stmt->bind_param("s", $cardsearch_wild); } } } $stmt->execute(); $stmt->store_result(); $stmt->bind_result($id); $search_desc = ""; if (!empty($_GET['card'])) { $search_desc .= " with {$_GET['card']} in them"; } if (!empty($_GET['deck'])) { if (!empty($search_desc)) { $search_desc .= " AND "; } $search_desc .= " with '{$_GET['deck']}' in the deck name"; } if ($stmt->num_rows() == 0) { echo "<center>No decks {$search_desc}! Try again!</center>\n"; } else { if ($stmt->num_rows() == 20) { echo "<center>More than 20 decks {$search_desc}</center>\n"; } else { echo "<center>{$stmt->num_rows()} decks {$search_desc}</center>\n"; } $deck_ids = array(); while ($stmt->fetch()) { $deck_ids[] = $id; } $stmt->close(); echo "<table align=\"center\" style=\"border-width: 0px;\" cellpadding=3>"; echo "<tr><th>Deck Name</th><th>Played by</th><th>Event</th> </tr>"; foreach ($deck_ids as $deck_id) { $deck = new Deck($deck_id); echo "<tr><td>" . medalImgStr($deck->medal) . "\n"; echo $deck->linkTo(); echo "</td>"; if ($deck->playername != NULL) { $aplay = new Player($deck->playername); echo "<td>{$aplay->linkTo()}</td>"; } else { echo "<td>???</td>"; } if ($deck->eventname != NULL) { echo "<td><a href=\"eventreport.php?event={$deck->eventname}\">{$deck->eventname}</a></td>"; } else { echo "<td>???</td>"; } echo "</tr>\n"; } echo "</table>"; } } else { echo "<form method=\"get\" action=\"{$_SERVER['REQUEST_URI']}\"><table class=\"form\">"; echo "<tr><th>Deck name contains</th> <td>"; echo "<input type=\"text\" name=\"deck\"></td></tr>"; echo "<tr><th>Deck contains card</th><td>"; echo "<input type=\"text\" name=\"card\"></td></tr>"; echo "<tr><td colspan=2 class=\"buttons\">"; echo "<input type=\"submit\" value=\"Gimme some decks!\"></td></tr>"; echo "</table></form>"; echo "<table><tr><th colspan=2><b>MOST PLAYED DECKS</b></th></tr>"; echo "<tr><th>Deck Name</th><th>Played</th></tr>"; $db = Database::getConnection(); $stmt = $db->prepare("SELECT count(d.deck_hash) as cnt, d.name, d.id FROM decks d, entries n where n.deck = d.id AND 5 < (SELECT count(*) from deckcontents where deck = d.id group by deck) group by d.deck_hash order by cnt desc limit 20"); $stmt->execute(); $stmt->bind_result($count, $name, $deckid); while ($stmt->fetch()) { echo "<tr><td><a href=\"deck.php?mode=view&id={$deckid}\">{$name}</a></td>"; echo "<td>{$count} times</td></tr>"; } echo "</table>"; } }