/** * If the player parameter is in the query string apply player filter * @param SiteSettings $settings * @param MySqlConnection $connection * @param StatisticsManager $statistics_manager */ public static function ApplyPlayerFilter(SiteSettings $settings, MySqlConnection $connection, StatisticsManager $statistics_manager) { $filter = ""; if (isset($_GET['player']) and is_numeric($_GET['player'])) { require_once 'stoolball/player-manager.class.php'; $player_manager = new PlayerManager($settings, $connection); $player_manager->ReadPlayerById($_GET['player']); $player = $player_manager->GetFirst(); unset($player_manager); if (!is_null($player)) { $statistics_manager->FilterByPlayer(array($player->GetId())); $filter = "for " . $player->GetName() . " "; } } return $filter; }
public function OnLoadPageData() { # Now get statistics for the player $filter_by_player = array($this->player->GetId()); $statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection()); $statistics_manager->FilterByPlayer($filter_by_player); # Apply filters common to all statistics StatisticsFilter::SupportMatchTypeFilter($statistics_manager); StatisticsFilter::SupportOppositionFilter($statistics_manager); StatisticsFilter::SupportCompetitionFilter($statistics_manager); StatisticsFilter::ApplySeasonFilter($this->GetSettings(), $this->GetDataConnection(), $statistics_manager); StatisticsFilter::SupportGroundFilter($statistics_manager); StatisticsFilter::SupportDateFilter($statistics_manager); StatisticsFilter::SupportBattingPositionFilter($statistics_manager); StatisticsFilter::SupportInningsFilter($statistics_manager); StatisticsFilter::SupportMatchResultFilter($statistics_manager); # Now get the statistics for the player $this->player = new Player($this->GetSettings()); $data = $statistics_manager->ReadBestBowlingPerformance(true); foreach ($data as $performance) { # Not useful for either average or economy if (is_null($performance["runs_conceded"])) { continue; } $bowling = new Bowling($this->player); $bowling->SetWickets($performance["wickets"]); $bowling->SetRunsConceded($performance["runs_conceded"]); $bowling->SetOvers($performance["overs"]); $match = new Match($this->GetSettings()); $match->SetStartTime($performance["match_time"]); $bowling->SetMatch($match); $this->player->Bowling()->Add($bowling); } $statistics_manager->FilterByPlayer(null); $statistics_manager->FilterByBowler($filter_by_player); $statistics_manager->FilterByHowOut(array(Batting::BODY_BEFORE_WICKET, Batting::BOWLED, Batting::CAUGHT, Batting::CAUGHT_AND_BOWLED, Batting::HIT_BALL_TWICE)); $this->player->SetHowWicketsTaken($statistics_manager->ReadHowWicketsFall()); unset($statistics_manager); # How dismissed ?> { <?php if ($this->player->Bowling()->GetCount()) { ?> "economy": { "labels": [<?php echo $this->BuildBowlingTimeline($this->player->Bowling()->GetItems()); ?> ], "datasets": [ { "label": "Economy in each match", "data": [<?php echo $this->BuildMatchEconomyData($this->player->Bowling()->GetItems()); ?> ] }, { "label": "Economy overall", "data": [<?php echo $this->BuildEconomyData($this->player->Bowling()->GetItems()); ?> ] } ] }, "bowlingAverage": { "labels": [<?php echo $this->BuildBowlingTimeline($this->player->Bowling()->GetItems()); ?> ], "datasets": [ { "label": "Average in each match", "data": [<?php echo $this->BuildMatchBowlingAverageData($this->player->Bowling()->GetItems()); ?> ] }, { "label": "Average overall", "data": [<?php echo $this->BuildBowlingAverageData($this->player->Bowling()->GetItems()); ?> ] } ] }, <?php } ?> "wickets": [ <?php $how_out = $this->player->GetHowWicketsTaken(); $len = count($how_out); $count = 0; foreach ($how_out as $key => $value) { $label = ucfirst(html_entity_decode(Batting::Text($key))); echo '{ "label":"' . $label . '","value":' . $value . "}"; $count++; if ($count < $len) { echo ','; } } ?> ] } <?php exit; }
public function OnLoadPageData() { # Always get the player's unfiltered profile, because it's needed for the page description require_once "stoolball/player-manager.class.php"; $player_manager = new PlayerManager($this->GetSettings(), $this->GetDataConnection()); $player_manager->ReadPlayerById($this->player->GetId()); $this->player_unfiltered = $player_manager->GetFirst(); if (!$this->player_unfiltered instanceof Player) { http_response_code(404); $this->not_found = true; return; } # Update search engine if ($this->player_unfiltered->GetSearchUpdateRequired()) { require_once "search/player-search-adapter.class.php"; $this->SearchIndexer()->DeleteFromIndexById("player" . $this->player->GetId()); $adapter = new PlayerSearchAdapter($this->player_unfiltered); $this->SearchIndexer()->Index($adapter->GetSearchableItem()); $this->SearchIndexer()->CommitChanges(); $player_manager->SearchUpdated($this->player->GetId()); } unset($player_manager); # Check first for a player created using 'add player', who hasn't played yet if ($this->player_unfiltered->GetTotalMatches() == 0) { $this->player = $this->player_unfiltered; } else { # Now get statistics for the player $statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection()); $statistics_manager->FilterByPlayer(array($this->player->GetId())); # Apply filters common to all statistics $this->filter_control = new StatisticsFilterControl(); $filter_batting_position = StatisticsFilter::SupportBattingPositionFilter($statistics_manager); $this->filter_control->SupportBattingPositionFilter($filter_batting_position); $this->filter .= $filter_batting_position[2]; $filter_match_type = StatisticsFilter::SupportMatchTypeFilter($statistics_manager); $this->filter_control->SupportMatchTypeFilter($filter_match_type); $this->filter .= $filter_match_type[2]; $filter_opposition = StatisticsFilter::SupportOppositionFilter($statistics_manager); $this->filter_control->SupportOppositionFilter($filter_opposition); $this->filter .= $filter_opposition[2]; $filter_competition = StatisticsFilter::SupportCompetitionFilter($statistics_manager); $this->filter_control->SupportCompetitionFilter($filter_competition); $this->filter .= $filter_competition[2]; $this->filter .= StatisticsFilter::ApplySeasonFilter($this->GetSettings(), $this->GetDataConnection(), $statistics_manager); $filter_ground = StatisticsFilter::SupportGroundFilter($statistics_manager); $this->filter_control->SupportGroundFilter($filter_ground); $this->filter .= $filter_ground[2]; $filter_date = StatisticsFilter::SupportDateFilter($statistics_manager); if (!is_null($filter_date[0])) { $this->filter_control->SupportAfterDateFilter($filter_date[0]); } if (!is_null($filter_date[1])) { $this->filter_control->SupportBeforeDateFilter($filter_date[1]); } $this->filter .= $filter_date[2]; $filter_innings = StatisticsFilter::SupportInningsFilter($statistics_manager); $this->filter_control->SupportInningsFilter($filter_innings[1]); $this->filter .= $filter_innings[2]; $filter_won_match = StatisticsFilter::SupportMatchResultFilter($statistics_manager); $this->filter_control->SupportMatchResultFilter($filter_won_match[1]); $this->filter .= $filter_won_match[2]; # Now get the statistics for the player $data = $statistics_manager->ReadPlayerSummary(); if (count($data)) { $this->player = $data[0]; } else { if ($this->filter) { # If no matches matched the filter, ensure we have the player's name and team $this->player = $this->player_unfiltered; $this->filter_matched_nothing = true; } else { $this->regenerating = true; } } $data = $statistics_manager->ReadBestBattingPerformance(false); foreach ($data as $performance) { $batting = new Batting($this->player, $performance["how_out"], null, null, $performance["runs_scored"], $performance["balls_faced"]); $this->player->Batting()->Add($batting); } if ($this->player->GetPlayerRole() == Player::PLAYER) { $data = $statistics_manager->ReadBestPlayerAggregate("player_of_match"); $this->player->SetTotalPlayerOfTheMatchNominations(count($data) ? $data[0]["statistic"] : 0); } unset($statistics_manager); } }
public function OnLoadPageData() { # Now get statistics for the player $filter_by_player = array($this->player->GetId()); $statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection()); $statistics_manager->FilterByPlayer($filter_by_player); # Apply filters common to all statistics StatisticsFilter::SupportMatchTypeFilter($statistics_manager); StatisticsFilter::SupportOppositionFilter($statistics_manager); StatisticsFilter::SupportCompetitionFilter($statistics_manager); StatisticsFilter::ApplySeasonFilter($this->GetSettings(), $this->GetDataConnection(), $statistics_manager); StatisticsFilter::SupportGroundFilter($statistics_manager); StatisticsFilter::SupportDateFilter($statistics_manager); StatisticsFilter::SupportBattingPositionFilter($statistics_manager); StatisticsFilter::SupportInningsFilter($statistics_manager); StatisticsFilter::SupportMatchResultFilter($statistics_manager); # Now get the statistics for the player $this->player = new Player($this->GetSettings()); $data = $statistics_manager->ReadBestBattingPerformance(false, true); foreach ($data as $performance) { $batting = new Batting($this->player, $performance["how_out"], null, null, $performance["runs_scored"]); $match = new Match($this->GetSettings()); $match->SetStartTime($performance["match_time"]); $batting->SetMatch($match); $this->player->Batting()->Add($batting); } unset($statistics_manager); # How dismissed ?> { <?php $score_spread = $this->player->ScoreSpread(); if (is_array($score_spread)) { ?> "scoreSpread": { "labels": [ <?php $len = count($score_spread); $count = 0; foreach ($score_spread as $key => $value) { echo '"' . $key . '"'; $count++; if ($count < $len) { echo ','; } } ?> ], "datasets": [ { "label": "Not out", "data": [ <?php $len = count($score_spread); $count = 0; foreach ($score_spread as $key => $value) { echo $value["not-out"]; $count++; if ($count < $len) { echo ','; } } ?> ] }, { "label": "Out", "data": [ <?php $len = count($score_spread); $count = 0; foreach ($score_spread as $key => $value) { echo $value["out"]; $count++; if ($count < $len) { echo ','; } } ?> ] } ] }, <?php } if ($this->player->Batting()->GetCount()) { ?> "battingForm": { "labels": [<?php echo $this->BuildBattingTimeline($this->player->Batting()->GetItems()); ?> ], "datasets": [ { "label": "Scores", "data": [<?php echo $this->BuildScoresData($this->player->Batting()->GetItems()); ?> ] }, { "label": "Average", "data": [<?php echo $this->BuildBattingAverageData($this->player->Batting()->GetItems()); ?> ] } ] }, <?php } ?> "dismissals": [ <?php $how_out = $this->player->HowOut(); $len = count($how_out); $count = 0; foreach ($how_out as $key => $value) { if ($key == Batting::DID_NOT_BAT) { continue; } $label = ucfirst(html_entity_decode(Batting::Text($key))); echo '{ "label":"' . $label . '","value":' . $value . "}"; $count++; if ($count < $len) { echo ','; } } ?> ] } <?php exit; }