public function executeHeatmapData(sfWebRequest $request) { $this->match = $this->getRoute()->getObject(); $this->heatmap = PlayersHeatmapTable::getInstance()->createQuery()->where("match_id = ?", $this->match->getId())->count() > 0; if ($this->heatmap) { if (class_exists($this->match->getMap()->getMapName())) { $map = $this->match->getMap()->getMapName(); $this->class_heatmap = new $map($this->match->getId()); } else { $this->heatmap = false; } } $map = $this->class_heatmap; foreach ($this->match->getPlayersHeatmap() as $event) { $map->addInformation($event->getId(), $event->getEventName(), $event->getEventX(), $event->getEventY(), $event->getPlayerId(), $event->getPlayerTeam() == "CT" ? 1 : 2, $event->getRoundId(), $event->getRoundTime(), 0, 1, $event->getAttackerX(), $event->getAttackerY(), $event->getAttackerName(), $event->getAttackerTeam()); } $type = $request->getPostParameter("type", "kill"); $points = array(); if ($type == "allstuff") { $points = array_merge($map->buildHeatMap("hegrenade"), $map->buildHeatMap("flashbang"), $map->buildHeatMap("smokegrenade"), $map->buildHeatMap("decoy"), $map->buildHeatMap("molotov")); } else { $side = $request->getPostParameter("sides", -1); if ($side == "all") { $side = -1; } elseif ($side == "ct") { $side = 1; } elseif ($side == "t") { $side = 2; } else { $side = -1; } $points = $map->buildHeatMap($type, $request->getPostParameter("rounds", array()), $side, $request->getPostParameter("players", array())); } return $this->renderText(json_encode(array("type" => "heatmap", "points" => $points))); }
public function executeExportEstats(sfWebRequest $request) { $mO = $this->getRoute()->getObject(); $stats = array(); $match = $mO->toArray(); unset($match['id'], $match['config_password'], $match['season_id'], $match['server_id'], $match['rules'], $match['team_a'], $match['team_b'], $match['config_authkey'], $match['current_map']); $stats['match'] = $match; foreach ($mO->getMaps() as $mapO) { $map = $mapO->toArray(); unset($map['match_id'], $map['id']); $stats['map'] = $map; foreach ($mapO->getMapsScore() as $sO) { $score = $sO->toArray(); unset($score['id'], $score['map_id']); $stats['scores'][] = $score; } } foreach ($mO->getPlayers() as $pO) { $player = $pO->toArray(); unset($player['map_id'], $player['match_id'], $player['ip']); $stats['players'][] = $player; } $heatmap = PlayersHeatmapTable::getInstance()->createQuery()->where("match_id = ?", $mO->getId())->orderBy("created_at ASC")->execute(); foreach ($heatmap as $hO) { $data = $hO->toArray(); unset($data['id'], $data['match_id'], $data['map_id']); $stats['heatmap'][] = $data; } $kills = PlayerKillTable::getInstance()->createQuery()->where("match_id = ?", $mO->getId())->orderBy("created_at ASC")->execute(); foreach ($kills as $hO) { $data = $hO->toArray(); unset($data['match_id'], $data['map_id']); $stats['kills'][] = $data; } $kills = RoundTable::getInstance()->createQuery()->where("match_id = ?", $mO->getId())->orderBy("created_at ASC")->execute(); foreach ($kills as $hO) { $data = $hO->toArray(); unset($data['id'], $data['match_id'], $data['map_id']); $stats['rounds'][] = $data; } $kills = RoundSummaryTable::getInstance()->createQuery()->where("match_id = ?", $mO->getId())->orderBy("created_at ASC")->execute(); foreach ($kills as $hO) { $data = $hO->toArray(); unset($data['id'], $data['match_id'], $data['map_id']); $stats['summary'][] = $data; } return $this->renderText(json_encode($stats)); }
<?php function roundTimeToSec($sec) { $s = 105 - $sec; if ($s > 60) { return "1m" . sprintf("%02d", $s % 60); } else { return sprintf("%02d", $s) . " sec"; } } $kills = \PlayersHeatmapTable::getInstance()->createQuery()->where("match_id = ?", $match->getId())->andWhere("event_name = ?", "kill")->andWhere("created_at <= ?", date('Y-m-d H:i:s', time() - 15))->orderBy("created_at DESC")->execute(); ?> <script src="http://code.jquery.com/jquery.js"></script> <script> function doIt() { $("#kills").load(document.URL+" #kills"); } setInterval("doIt()", 5000); </script> <div style="float: right"><?php echo $match->getTeamA(); ?> vs <?php echo $match->getTeamB(); ?> </div> <div id="kills"> <?php $lastRound = 0;