本文整理汇总了PHP中Match::GetId方法的典型用法代码示例。如果您正苦于以下问题:PHP Match::GetId方法的具体用法?PHP Match::GetId怎么用?PHP Match::GetId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Match
的用法示例。
在下文中一共展示了Match::GetId方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: OnLoadPageData
function OnLoadPageData()
{
/* @var Match $tournament */
# check parameter
if (!isset($_GET['match']) or !is_numeric($_GET['match'])) {
$this->Redirect();
}
# get tournament
$match_manager = new MatchManager($this->GetSettings(), $this->GetDataConnection());
$match_manager->ReadByMatchId(array($_GET['match']));
$this->tournament = $match_manager->GetFirst();
unset($match_manager);
# must have found a match
if (!$this->tournament instanceof Match) {
$this->page_not_found = true;
return;
}
# Get some stats on the best players
require_once 'stoolball/statistics/statistics-manager.class.php';
$statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection());
$statistics_manager->FilterByTournament(array($this->tournament->GetId()));
$this->statistics["querystring"] = "?tournament=" . $this->tournament->GetId();
require_once "_summary-data-query.php";
unset($statistics_manager);
}
示例2: OnPostback
public function OnPostback()
{
# If there's no id, ensure no match object is created. Page will then display a "match not found" message.
# There's a separate page for adding matches, even for admins.
if (!$this->editor->GetDataObjectId()) {
return;
}
# Get the submitted match
$this->match = $this->editor->GetDataObject();
# Because this is a new request, we need to reverify whether this is the match owner before letting anything happen.
# Can't trust that info from a postback so MUST go to the database to check it.
$this->match_manager->ReadByMatchId(array($this->editor->GetDataObjectId()));
$check_match = $this->match_manager->GetFirst();
$this->b_user_is_match_owner = ($check_match instanceof Match and AuthenticationManager::GetUser()->GetId() == $check_match->GetAddedBy()->GetId());
# Don't wan't to edit tournaments on this page, so even as admin make sure we're not trying to save one.
# Can't change the match type, so find out what that is from the db too.
$this->b_is_tournament = $check_match->GetMatchType() == MatchType::TOURNAMENT;
# Check whether cancel was clicked
if ($this->editor->CancelClicked()) {
# If so, get the match's short URL and redirect
$this->match_manager->ExpandMatchUrl($this->match);
$this->Redirect($this->match->GetNavigateUrl());
}
# save data if valid
if ($this->IsValid() and !$this->b_is_tournament) {
# Save player of match
$this->match_manager->SaveHighlights($this->match);
$this->match_manager->ExpandMatchUrl($this->match);
# Add comment if provided
if (trim($this->match->GetNewComment())) {
require_once 'forums/topic-manager.class.php';
require_once 'forums/review-item.class.php';
require_once 'forums/subscription-manager.class.php';
$topic_manager = new TopicManager($this->GetSettings(), $this->GetDataConnection());
$item_to_comment_on = new ReviewItem($this->GetSettings());
$item_to_comment_on->SetType(ContentType::STOOLBALL_MATCH);
$item_to_comment_on->SetId($this->match->GetId());
$item_to_comment_on->SetNavigateUrl("https://" . $this->GetSettings()->GetDomain() . $this->match->GetNavigateUrl());
$message = $topic_manager->SaveComment($item_to_comment_on, $this->match->GetNewComment());
# send subscription emails
$subs_manager = new SubscriptionManager($this->GetSettings(), $this->GetDataConnection());
$subs_manager->SendCommentsSubscriptions($item_to_comment_on, $message);
unset($subs_manager);
}
# Match may have been updated so send an email
$this->match_manager->NotifyMatchModerator($this->match->GetId());
# Show user the match, so they can see update was applied
$this->Redirect($this->match->GetNavigateUrl());
}
}
示例3: OnPostback
function OnPostback()
{
if ($this->editor->GetDataObjectId()) {
# Because this is a new request we need to reverify that this is the match owner before letting anything happen.
# Can't trust that info from a postback so MUST go to the database to check it.
$this->match_manager->ReadByMatchId(array($this->editor->GetDataObjectId()));
$check_match = $this->match_manager->GetFirst();
$this->b_user_is_match_owner = ($check_match instanceof Match and AuthenticationManager::GetUser()->GetId() == $check_match->GetAddedBy()->GetId());
# This page is only for tournaments, so check that against the db too
$this->b_is_tournament = $check_match->GetMatchType() == MatchType::TOURNAMENT;
} else {
# Not an entirely correct error for there being no match id on postback,
# but no match = not the owner, and most importantly it will prevent the
# match being saved or the edit form being shown.
$this->b_user_is_match_owner = false;
}
# get object
$this->tournament = $this->editor->GetDataObject();
# Check whether cancel was clicked
if ($this->editor->CancelClicked()) {
$this->match_manager->ExpandMatchUrl($this->tournament);
if ($this->adding) {
http_response_code(303);
$this->Redirect($this->tournament->GetDeleteNavigateUrl());
} else {
# Show the tournament
$this->Redirect($this->tournament->GetNavigateUrl());
}
}
# save data if valid
if ($this->IsValid()) {
# Confirm match is being saved as a tournament
$this->b_is_tournament = $this->b_is_tournament and $this->tournament->GetMatchType() == MatchType::TOURNAMENT;
# Check that the requester has permission to update this match
if (($this->b_user_is_match_admin or $this->b_user_is_match_owner) and $this->b_is_tournament) {
# Save the teams in the tournament
$this->match_manager->SaveTeams($this->tournament);
$this->match_manager->NotifyMatchModerator($this->tournament->GetId());
$this->match_manager->ExpandMatchUrl($this->tournament);
http_response_code(303);
if ($this->adding) {
$this->Redirect($this->tournament->AddTournamentCompetitionsUrl());
} else {
$this->Redirect($this->tournament->GetNavigateUrl());
}
}
}
}
示例4: OnPostback
function OnPostback()
{
# get object
$this->tournament = $this->editor->GetDataObject();
if ($this->editor->GetDataObjectId()) {
# Because this is a new request we need to reverify security details before letting anything happen.
# Can't trust that info from a postback so MUST go to the database to check it.
$this->match_manager->ReadByMatchId(array($this->editor->GetDataObjectId()));
$check_match = $this->match_manager->GetFirst();
if ($check_match instanceof Match) {
# This page is only for tournaments, so check that against the db
$this->b_is_tournament = $check_match->GetMatchType() == MatchType::TOURNAMENT;
/* The editor requires the teams in the tournament to populate the dropdown and to come up with a
* match title, and it doesn't have them when recreating the tournament from the postback data.
* Since we have $check_match available from the database anyway, get the teams from there. */
foreach ($check_match->GetAwayTeams() as $team) {
$this->tournament->AddAwayTeam($team);
}
}
} else {
# Error for there being no match id on postback,
$this->b_is_tournament = false;
}
# Check whether cancel was clicked
if ($this->editor->CancelClicked()) {
$this->match_manager->ExpandMatchUrl($this->tournament);
$this->Redirect($this->tournament->GetNavigateUrl());
}
# save data if valid
if ($this->IsValid()) {
# Confirm match is being saved as a tournament
$this->b_is_tournament = $this->b_is_tournament and $this->tournament->GetMatchType() == MatchType::TOURNAMENT;
# Check that the requester has permission to update this match
if ($this->b_is_tournament) {
# Save the matches in the tournament
$this->match_manager->SaveMatchesInTournament($this->tournament);
$this->match_manager->NotifyMatchModerator($this->tournament->GetId());
$this->match_manager->ExpandMatchUrl($this->tournament);
http_response_code(303);
$this->Redirect($this->tournament->GetNavigateUrl());
}
}
}
示例5: OnPostback
public function OnPostback()
{
# If there's no id, ensure no match object is created. Page will then display a "match not found" message.
# There's a separate page for adding matches, even for admins.
if (!$this->editor->GetDataObjectId()) {
return;
}
# Get the submitted match
$this->match = $this->editor->GetDataObject();
# Because this is a new request, we need to reverify whether this is the match owner before letting anything happen.
# Can't trust that info from a postback so MUST go to the database to check it.
$this->match_manager->ReadByMatchId(array($this->editor->GetDataObjectId()));
$check_match = $this->match_manager->GetFirst();
$this->b_user_is_match_owner = ($check_match instanceof Match and AuthenticationManager::GetUser()->GetId() == $check_match->GetAddedBy()->GetId());
# Don't wan't to edit tournaments on this page, so even as admin make sure we're not trying to save one.
# Can't change the match type, so find out what that is from the db too.
$this->b_is_tournament = $check_match->GetMatchType() == MatchType::TOURNAMENT;
# Check whether cancel was clicked
if ($this->editor->CancelClicked()) {
# Match may have been updated so send an email
$this->match_manager->NotifyMatchModerator($this->match->GetId());
# If so, get the match's short URL and redirect
$this->match_manager->ExpandMatchUrl($this->match);
$this->Redirect($this->match->GetNavigateUrl());
}
# save data if valid
if ($this->IsValid() and !$this->b_is_tournament) {
switch ($this->editor->GetCurrentPage()) {
case ScorecardEditControl::FIRST_INNINGS:
$this->match_manager->SaveScorecard($this->match, true, $this->SearchIndexer());
$this->editor->SetCurrentPage(ScorecardEditControl::SECOND_INNINGS);
break;
case ScorecardEditControl::SECOND_INNINGS:
$this->match_manager->SaveScorecard($this->match, false, $this->SearchIndexer());
$this->match_manager->ExpandMatchUrl($this->match);
http_response_code(303);
$this->Redirect($this->match->EditHighlightsUrl());
break;
}
}
}
示例6: __construct
public function __construct(Match $match)
{
$this->match = $match;
$this->searchable = new SearchItem("match", "match" . $match->GetId(), $match->GetNavigateUrl());
$this->searchable->Title($match->GetTitle() . ", " . $match->GetStartTimeFormatted(true, false));
$this->searchable->Description($this->GetSearchDescription());
$this->searchable->FullText($match->GetNotes());
$this->searchable->RelatedLinksHtml('<ul>' . '<li><a href="' . $match->GetNavigateUrl() . '/statistics">Statistics</a></li>' . '<li><a href="' . $match->GetCalendarNavigateUrl() . '">Add to calendar</a></li>' . '<li><a href="' . $match->GetEditNavigateUrl() . '">Update result</a></li>' . '</ul>');
# Assign more weight to newer matches
$weight = $match->GetStartTime() / 60 / 60 / 24 / 365;
$this->searchable->WeightWithinType($weight);
}
示例7: OnPostback
function OnPostback()
{
# Get the match info and store it
$i_id = $this->manager->GetItemId($this->match);
$this->manager->ReadByMatchId(array($i_id));
$this->match = $this->manager->GetFirst();
if (!$this->match instanceof Match) {
# This can be the case if the back button is used to go back to the "match has been deleted" page.
$this->b_deleted = true;
return;
}
# Check whether cancel was clicked
if (isset($_POST['cancel'])) {
$this->Redirect($this->match->GetNavigateUrl());
}
# Check whether delete was clicked
if (isset($_POST['delete'])) {
# Check again that the requester has permission to delete this match
$has_permission = (AuthenticationManager::GetUser()->Permissions()->HasPermission(PermissionType::MANAGE_MATCHES) or AuthenticationManager::GetUser()->GetId() == $this->match->GetAddedBy()->GetId());
if ($has_permission) {
# Delete the match
$this->manager->DeleteMatch(array($i_id));
# Remove match, and all dependent tournament matches, from search results
foreach ($this->match->GetMatchesInTournament() as $tournament_match) {
$this->SearchIndexer()->DeleteFromIndexById("match" . $tournament_match->GetId());
}
$this->SearchIndexer()->DeleteFromIndexById("match" . $this->match->GetId());
$this->SearchIndexer()->CommitChanges();
require_once 'stoolball/data-change-notifier.class.php';
$notifier = new DataChangeNotifier($this->GetSettings());
$notifier->MatchUpdated($this->match, AuthenticationManager::GetUser(), false, true);
# Update 'next 5 matches'
$this->manager->ReadNext();
$this->a_next_matches = $this->manager->GetItems();
# Note success
$this->b_deleted = true;
}
}
}
示例8: CreateFixtureControls
/**
* Creates the controls when the editor is in its fixture view
*
*/
private function CreateFixtureControls(Match $match, XhtmlElement $match_box)
{
$css_class = 'TournamentEdit';
if ($this->GetCssClass()) {
$css_class .= ' ' . $this->GetCssClass();
}
$match_outer_1 = new XhtmlElement('div');
$match_outer_1->SetCssClass($css_class);
$this->SetCssClass('');
$match_outer_1->SetXhtmlId($this->GetNamingPrefix());
$match_outer_2 = new XhtmlElement('div');
$this->AddControl($match_outer_1);
$match_outer_1->AddControl($match_outer_2);
$match_outer_2->AddControl($match_box);
if ($match->GetId()) {
$heading = "Edit tournament";
} else {
$heading = "Add your tournament";
}
if ($this->show_step_number) {
$heading .= ' – step 1 of 3';
}
$o_title_inner_1 = new XhtmlElement('span', $heading);
$o_title_inner_2 = new XhtmlElement('span', $o_title_inner_1);
$o_title_inner_3 = new XhtmlElement('span', $o_title_inner_2);
$match_box->AddControl(new XhtmlElement('h2', $o_title_inner_3, "large"));
# Tournament title
$suggested_title = $match->GetTitle();
if (isset($this->context_season)) {
$suggested_title = $this->GetContextSeason()->GetCompetition()->GetName();
if (strpos(strtolower($suggested_title), 'tournament') === false) {
$suggested_title .= ' tournament';
}
} else {
if (isset($this->context_team)) {
$suggested_title = $this->GetContextTeam()->GetName();
if (strpos(strtolower($suggested_title), 'tournament') === false) {
$suggested_title .= ' tournament';
}
}
}
if ($suggested_title == "To be confirmed tournament") {
$suggested_title = "";
}
if ($suggested_title == "To be confirmed v To be confirmed") {
$suggested_title = "";
}
$title = new TextBox($this->GetNamingPrefix() . 'Title', $suggested_title, $this->IsValidSubmit());
$title->SetMaxLength(200);
$match_box->AddControl(new FormPart('Tournament name', $title));
# Open or invite?
require_once 'xhtml/forms/radio-button.class.php';
$qualify_set = new XhtmlElement('fieldset');
$qualify_set->SetCssClass('formPart radioButtonList');
$qualify_set->AddControl(new XhtmlElement('legend', 'Who can play?', 'formLabel'));
$qualify_radios = new XhtmlElement('div', null, 'formControl');
$qualify_set->AddControl($qualify_radios);
$qualify_radios->AddControl(new RadioButton($this->GetNamingPrefix() . 'Open', $this->GetNamingPrefix() . 'Qualify', 'any team may enter', MatchQualification::OPEN_TOURNAMENT, $match->GetQualificationType() === MatchQualification::OPEN_TOURNAMENT or !$match->GetId(), $this->IsValidSubmit()));
$qualify_radios->AddControl(new RadioButton($this->GetNamingPrefix() . 'Qualify', $this->GetNamingPrefix() . 'Qualify', 'only invited or qualifying teams can enter', MatchQualification::CLOSED_TOURNAMENT, $match->GetQualificationType() === MatchQualification::CLOSED_TOURNAMENT, $this->IsValidSubmit()));
$match_box->AddControl($qualify_set);
# Player type
$suggested_type = 2;
if (isset($this->context_season)) {
$suggested_type = $this->context_season->GetCompetition()->GetPlayerType();
} elseif (isset($this->context_team)) {
$suggested_type = $this->context_team->GetPlayerType();
}
if (!is_null($match->GetPlayerType())) {
$suggested_type = $match->GetPlayerType();
}
# Saved value overrides suggestion
$player_set = new XhtmlElement('fieldset');
$player_set->SetCssClass('formPart radioButtonList');
$player_set->AddControl(new XhtmlElement('legend', 'Type of teams', 'formLabel'));
$player_radios = new XhtmlElement('div', null, 'formControl');
$player_set->AddControl($player_radios);
$player_radios_1 = new XhtmlElement('div', null, 'column');
$player_radios_2 = new XhtmlElement('div', null, 'column');
$player_radios->AddControl($player_radios_1);
$player_radios->AddControl($player_radios_2);
$player_radios_1->AddControl(new RadioButton($this->GetNamingPrefix() . 'Ladies', $this->GetNamingPrefix() . 'PlayerType', 'Ladies', 2, $suggested_type === 2, $this->IsValidSubmit()));
$player_radios_1->AddControl(new RadioButton($this->GetNamingPrefix() . 'Mixed', $this->GetNamingPrefix() . 'PlayerType', 'Mixed', 1, $suggested_type === 1, $this->IsValidSubmit()));
$player_radios_2->AddControl(new RadioButton($this->GetNamingPrefix() . 'Girls', $this->GetNamingPrefix() . 'PlayerType', 'Junior girls', 5, $suggested_type === 5, $this->IsValidSubmit()));
$player_radios_2->AddControl(new RadioButton($this->GetNamingPrefix() . 'Children', $this->GetNamingPrefix() . 'PlayerType', 'Junior mixed', 4, $suggested_type === 6, $this->IsValidSubmit()));
$match_box->AddControl($player_set);
# How many?
$per_side_box = new XhtmlSelect($this->GetNamingPrefix() . "Players", null, $this->IsValid());
$per_side_box->SetBlankFirst(true);
for ($i = 6; $i <= 16; $i++) {
$per_side_box->AddControl(new XhtmlOption($i));
}
if ($match->GetIsMaximumPlayersPerTeamKnown()) {
$per_side_box->SelectOption($match->GetMaximumPlayersPerTeam());
} else {
if (!$match->GetId()) {
# Use eight as sensible default for new tournaments
//.........这里部分代码省略.........
开发者ID:stoolball-england,项目名称:stoolball-england-website,代码行数:101,代码来源:tournament-edit-control.class.php
示例9: SaveHighlights
/**
* @return void
* @param Match $o_match
* @desc Save the result and player(s) of the match to the database
*/
public function SaveHighlights(Match $o_match)
{
# To add a result there must always already be a match to update
if (!$o_match->GetId()) {
return;
}
require_once "stoolball/player-manager.class.php";
$player_manager = new PlayerManager($this->GetSettings(), $this->GetDataConnection());
# build query
$s_match = $this->GetSettings()->GetTable('Match');
$statistics = $this->GetSettings()->GetTable('PlayerMatch');
$i_result = $o_match->Result()->GetResultType() <= 0 ? null : $o_match->Result()->GetResultType();
$player_of_match = $player_manager->SaveOrMatchPlayer($o_match->Result()->GetPlayerOfTheMatch());
$player_of_match_home = $player_manager->SaveOrMatchPlayer($o_match->Result()->GetPlayerOfTheMatchHome());
$player_of_match_away = $player_manager->SaveOrMatchPlayer($o_match->Result()->GetPlayerOfTheMatchAway());
# Check whether anything's changed and don't re-save if not
$s_sql = 'SELECT match_id FROM ' . $s_match . ' ';
$s_where = $this->SqlAddCondition("", 'match_result_id' . Sql::ProtectNumeric($i_result, true, true));
$s_where = $this->SqlAddCondition($s_where, 'player_of_match_id ' . Sql::ProtectNumeric($player_of_match, true, true));
$s_where = $this->SqlAddCondition($s_where, 'player_of_match_home_id ' . Sql::ProtectNumeric($player_of_match_home, true, true));
$s_where = $this->SqlAddCondition($s_where, 'player_of_match_away_id ' . Sql::ProtectNumeric($player_of_match_away, true, true));
$s_where = $this->SqlAddCondition($s_where, 'match_id = ' . Sql::ProtectNumeric($o_match->GetId()));
$s_sql = $this->SqlAddWhereClause($s_sql, $s_where);
$o_result = $this->GetDataConnection()->query($s_sql);
if ($o_result->fetch()) {
return;
}
# Should the match_title be regenerated?
$s_sql = "SELECT custom_title FROM {$s_match} WHERE {$s_match}.match_id = " . Sql::ProtectNumeric($o_match->GetId());
$o_result = $this->GetDataConnection()->query($s_sql);
$o_row = $o_result->fetch();
if (!is_null($o_row)) {
$o_match->SetUseCustomTitle($o_row->custom_title);
}
# Save IDs of players affected by any change
$affected_players = array();
if (!is_null($player_of_match)) {
$affected_players[] = $player_of_match;
}
if (!is_null($player_of_match_home)) {
$affected_players[] = $player_of_match_home;
}
if (!is_null($player_of_match_away)) {
$affected_players[] = $player_of_match_away;
}
$s_sql = "SELECT player_of_match_id, player_of_match_home_id, player_of_match_away_id FROM {$s_match} WHERE {$s_match}.match_id = " . Sql::ProtectNumeric($o_match->GetId());
$o_result = $this->GetDataConnection()->query($s_sql);
$row = $o_result->fetch();
if (!is_null($row)) {
if (!is_null($row->player_of_match_id)) {
$affected_players[] = $row->player_of_match_id;
}
if (!is_null($row->player_of_match_home_id)) {
$affected_players[] = $row->player_of_match_home_id;
}
if (!is_null($row->player_of_match_away_id)) {
$affected_players[] = $row->player_of_match_away_id;
}
}
# Update the main match record
# All changes from here to master data are logged, because this method can be called from the public interface
$sql = "UPDATE {$s_match} SET ";
if (!$o_match->GetUseCustomTitle()) {
$sql .= "match_title = " . Sql::ProtectString($this->GetDataConnection(), $o_match->GetTitle()) . ", ";
}
$sql .= 'match_result_id = ' . Sql::ProtectNumeric($i_result, true) . ",\r\n\t\t\tplayer_of_match_id = " . Sql::ProtectNumeric($player_of_match, true) . ', ' . "player_of_match_home_id = " . Sql::ProtectNumeric($player_of_match_home, true) . ', ' . "player_of_match_away_id = " . Sql::ProtectNumeric($player_of_match_away, true) . ',
update_search = 1,
date_changed = ' . gmdate('U') . ", \r\n modified_by_id = " . Sql::ProtectNumeric(AuthenticationManager::GetUser()->GetId()) . ' ' . 'WHERE match_id = ' . Sql::ProtectNumeric($o_match->GetId());
$this->LoggedQuery($sql);
# Copy updated match to statistics
require_once 'stoolball/statistics/statistics-manager.class.php';
$statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection());
$statistics_manager->UpdateMatchDataInStatistics($this, $o_match->GetId());
# Save IDs of players affected by any change
if (count($affected_players)) {
$statistics_manager->UpdatePlayerOfTheMatchStatistics($o_match->GetId());
$statistics_manager->DeleteObsoleteStatistics($o_match->GetId());
$statistics_manager->UpdatePlayerStatistics($affected_players);
}
unset($statistics_manager);
# Match data has changed so notify moderator
$this->QueueForNotification($o_match->GetId(), false);
}
示例10: OnPostback
public function OnPostback()
{
# If there's no id, ensure no match object is created. Page will then display a "match not found" message.
# There's a separate page for adding matches, even for admins.
if (!$this->editor->GetDataObjectId()) {
return;
}
# Get the submitted match
$this->match = $this->editor->GetDataObject();
$check_match = $this->match;
# Because this is a new request, if the user isn't admin we need to reverify whether this is the match owner
# before letting anything happen. Can't trust that info from a postback so MUST go to the database to check it.
if (!$this->b_user_is_match_admin) {
$this->match_manager->ReadByMatchId(array($this->editor->GetDataObjectId()));
$check_match = $this->match_manager->GetFirst();
$this->b_user_is_match_owner = ($check_match instanceof Match and AuthenticationManager::GetUser()->GetId() == $check_match->GetAddedBy()->GetId());
if ($this->b_user_is_match_owner) {
# Set the owner of the match. This means the edit control knows who the owner is and therefore
# whether to display the fixture editor on an invalid postback
$this->match->SetAddedBy(AuthenticationManager::GetUser());
} else {
# If user is neither admin nor owner, they won't have the team info. Get it from the $check_match so
# that the match title can be updated correctly with a changed result.
$this->match->SetHomeTeam($check_match->GetHomeTeam());
$this->match->SetAwayTeam($check_match->GetAwayTeam());
}
}
# Don't wan't to edit tournaments on this page, so even as admin make sure we're not trying to save one.
# If user's not admin, can't change the match type, so find out what that is from the db too. For admin,
# $check_match is the submitted one as the match type might've been changed.
$this->b_is_tournament = $check_match->GetMatchType() == MatchType::TOURNAMENT;
# Check whether cancel was clicked
if ($this->editor->CancelClicked()) {
# If so, get the match's short URL and redirect
$this->match_manager->ExpandMatchUrl($this->match);
$this->Redirect($this->match->GetNavigateUrl());
}
# save data if valid
if ($this->IsValid() and !$this->b_is_tournament) {
# Check whether the user has permission to update the fixture as well as the result
if ($this->b_user_is_match_admin or $this->b_user_is_match_owner) {
# Get the ground name from the database. This is used when compiling an email about the updated match result.
if ($this->match->GetGround() instanceof Ground and $this->match->GetGround()->GetId() and !$this->match->GetGround()->GetName()) {
require_once 'stoolball/ground-manager.class.php';
$ground_manager = new GroundManager($this->GetSettings(), $this->GetDataConnection());
$ground_manager->ReadById(array($this->match->GetGround()->GetId()));
if ($ground_manager->GetCount()) {
$this->match->SetGround($ground_manager->GetFirst());
}
unset($ground_manager);
}
$this->match_manager->SaveFixture($this->match);
if ($this->b_user_is_match_admin) {
$this->match_manager->SaveSeasons($this->match, false);
}
$this->editor->SetNavigateUrl($this->match->GetEditNavigateUrl());
# because edit URL may have changed
}
# Save the result
$this->match_manager->SaveIfPlayed($this->match);
$this->match_manager->SaveWhoWonTheToss($this->match);
$this->match_manager->SaveWhoBattedFirst($this->match);
# If match didn't happen or the teams aren't known yet, save and finish, otherwise go to next page
$result = $this->match->Result()->GetResultType();
if ($result == MatchResult::HOME_WIN_BY_FORFEIT or $result == MatchResult::AWAY_WIN_BY_FORFEIT or $result == MatchResult::CANCELLED or $result == MatchResult::POSTPONED or $check_match->GetStartTime() > gmdate('U') or $this->b_user_is_match_admin and (!$this->match->GetHomeTeamId() or !$this->match->GetAwayTeamId())) {
# Match may have been updated so, first, send an email
$this->match_manager->NotifyMatchModerator($this->match->GetId());
http_response_code(303);
$this->Redirect($this->match->GetNavigateUrl());
} else {
http_response_code(303);
$this->Redirect($this->match->EditScorecardUrl());
}
}
}
示例11: CreateControls
protected function CreateControls()
{
$o_match = $this->GetDataObject();
if (is_null($o_match)) {
$o_match = new Match($this->GetSettings());
}
/* @var $o_match Match */
/* @var $o_team Team */
$b_got_home = !is_null($o_match->GetHomeTeam());
$b_got_away = !is_null($o_match->GetAwayTeam());
$b_is_new_match = !(bool) $o_match->GetId();
$b_is_tournament_match = false;
if ($this->i_match_type == MatchType::TOURNAMENT_MATCH) {
$b_is_tournament_match = $this->tournament instanceof Match;
} else {
if ($o_match->GetMatchType() == MatchType::TOURNAMENT_MATCH and $o_match->GetTournament() instanceof Match) {
$this->SetTournament($o_match->GetTournament());
$this->SetMatchType($o_match->GetMatchType());
$b_is_tournament_match = true;
}
}
$o_match_outer_1 = new XhtmlElement('div');
$o_match_outer_1->SetCssClass('MatchFixtureEdit');
$o_match_outer_1->AddCssClass($this->GetCssClass());
$this->SetCssClass('');
$o_match_outer_1->SetXhtmlId($this->GetNamingPrefix());
$o_match_outer_2 = new XhtmlElement('div');
$o_match_box = new XhtmlElement('div');
$this->AddControl($o_match_outer_1);
$o_match_outer_1->AddControl($o_match_outer_2);
$o_match_outer_2->AddControl($o_match_box);
if ($this->GetShowHeading()) {
$s_heading = str_replace('{0}', MatchType::Text($this->i_match_type), $this->GetHeading());
# Add match type if required
$o_title_inner_1 = new XhtmlElement('span', htmlentities($s_heading, ENT_QUOTES, "UTF-8", false));
$o_title_inner_2 = new XhtmlElement('span', $o_title_inner_1);
$o_title_inner_3 = new XhtmlElement('span', $o_title_inner_2);
$o_match_box->AddControl(new XhtmlElement('h2', $o_title_inner_3, "medium large"));
}
# Offer choice of season if appropriate
$season_count = $this->seasons->GetCount();
if ($season_count == 1 and $this->i_match_type != MatchType::PRACTICE) {
$o_season_id = new TextBox($this->GetNamingPrefix() . 'Season', $this->seasons->GetFirst()->GetId());
$o_season_id->SetMode(TextBoxMode::Hidden());
$o_match_box->AddControl($o_season_id);
} elseif ($season_count > 1 and $this->i_match_type != MatchType::PRACTICE) {
$o_season_id = new XhtmlSelect($this->GetNamingPrefix() . 'Season', '', $this->IsValidSubmit());
foreach ($this->Seasons()->GetItems() as $season) {
$o_season_id->AddControl(new XhtmlOption($season->GetCompetitionName(), $season->GetId()));
}
$o_match_box->AddControl(new FormPart('Competition', $o_season_id));
}
# Start date and time
$match_time_known = (bool) $o_match->GetStartTime();
if (!$match_time_known) {
# if no date set, use specified default
if ($this->i_default_time) {
$o_match->SetStartTime($this->i_default_time);
if ($b_is_tournament_match) {
$o_match->SetIsStartTimeKnown(false);
}
} else {
# if no date set and no default, default to today at 6.30pm BST
$i_now = gmdate('U');
$o_match->SetStartTime(gmmktime(17, 30, 00, (int) gmdate('n', $i_now), (int) gmdate('d', $i_now), (int) gmdate('Y', $i_now)));
}
}
$o_date = new DateControl($this->GetNamingPrefix() . 'Start', $o_match->GetStartTime(), $o_match->GetIsStartTimeKnown(), $this->IsValidSubmit());
$o_date->SetShowTime(true);
$o_date->SetRequireTime(false);
$o_date->SetMinuteInterval(5);
# if no date set and only one season to choose from, limit available dates to the length of that season
if (!$match_time_known and $season_count == 1) {
if ($this->Seasons()->GetFirst()->GetStartYear() == $this->Seasons()->GetFirst()->GetEndYear()) {
$i_mid_season = gmmktime(0, 0, 0, 6, 30, $this->Seasons()->GetFirst()->GetStartYear());
} else {
$i_mid_season = gmmktime(0, 0, 0, 12, 31, $this->Seasons()->GetFirst()->GetStartYear());
}
$season_dates = Season::SeasonDates($i_mid_season);
$season_start_month = gmdate('n', $season_dates[0]);
$season_end_month = gmdate('n', $season_dates[1]);
if ($season_start_month) {
$o_date->SetMonthStart($season_start_month);
}
if ($season_end_month) {
$o_date->SetMonthEnd($season_end_month + 1);
}
// TODO: need a better way to handle this, allowing overlap. Shirley has indoor matches until early April.
$season_start_year = $this->Seasons()->GetFirst()->GetStartYear();
$season_end_year = $this->Seasons()->GetFirst()->GetEndYear();
if ($season_start_year) {
$o_date->SetYearStart($season_start_year);
}
if ($season_end_year) {
$o_date->SetYearEnd($season_end_year);
}
}
if ($b_is_tournament_match) {
$o_date->SetShowDate(false);
$o_date->SetShowTime(false);
//.........这里部分代码省略.........
开发者ID:stoolball-england,项目名称:stoolball-england-website,代码行数:101,代码来源:match-fixture-edit-control.class.php
示例12: OnLoadPageData
function OnLoadPageData()
{
/* @var $o_last_match Match */
/* @var $season Season */
/* @var $team Team */
# new data manager
$o_match_manager = new MatchManager($this->GetSettings(), $this->GetDataConnection());
# Collect season to add this match to, starting with the URL
# get season and teams (was at this stage because editor needed teams to build its
# posted data object, but that's no longer the case so probably could be later if needed)
if (isset($this->i_season_id)) {
$season_manager = new SeasonManager($this->GetSettings(), $this->GetDataConnection());
$season_manager->ReadById(array($this->i_season_id));
$this->season = $season_manager->GetFirst();
unset($season_manager);
$this->edit->Seasons()->Add($this->season);
# If there are at least 2 teams in the season, show only those teams, otherwise show all teams of the relevant player type
if (count($this->season->GetTeams()) > 1) {
$this->edit->SetTeams(array($this->season->GetTeams()));
} else {
require_once 'stoolball/team-manager.class.php';
$team_manager = new TeamManager($this->GetSettings(), $this->GetDataConnection());
$team_manager->FilterByPlayerType(array($this->season->GetCompetition()->GetPlayerType()));
$team_manager->ReadTeamSummaries();
$this->edit->SetTeams(array($team_manager->GetItems()));
unset($team_manager);
}
}
# Not elseif, because when you've added a match there's a season, but we still need this to run to populate
# the choices for the next match to be added
if ($this->team instanceof Team) {
# Otherwise it should be a team.
# Get more information about the team itself
require_once 'stoolball/team-manager.class.php';
$team_manager = new TeamManager($this->GetSettings(), $this->GetDataConnection());
$team_manager->ReadById(array($this->team->GetId()));
$this->team = $team_manager->GetFirst();
if (!is_null($this->team)) {
$this->edit->SetContextTeam($this->team);
$season_ids = array();
$team_groups = array();
$a_exclude_team_ids = array();
$team_manager->FilterByActive(true);
# Add the home team first
$team_groups[] = array($this->team);
$a_exclude_team_ids[] = $this->team->GetId();
# Get the seasons this team is in...
$season_manager = new SeasonManager($this->GetSettings(), $this->GetDataConnection());
if ($this->i_match_type == MatchType::FRIENDLY) {
# For a friendly, any group of teams they play with is fine
$season_manager->ReadCurrentSeasonsByTeamId(array($this->team->GetId()));
} else {
# For anything else, get the seasons *for this type of match*
$season_manager->ReadCurrentSeasonsByTeamId(array($this->team->GetId()), array($this->i_match_type));
}
$seasons = $season_manager->GetItems();
unset($season_manager);
$this->edit->Seasons()->Clear();
# on postback, the season just added is already there, so clear to prevent a duplicate
foreach ($seasons as $season) {
$this->edit->Seasons()->Add($season);
$season_ids[] = $season->GetId();
}
#... and their opponent teams in those seasons
if (count($season_ids)) {
$team_manager->FilterExceptTeams($a_exclude_team_ids);
$team_manager->ReadBySeasonId($season_ids);
$season_teams = $team_manager->GetItems();
if (count($season_teams)) {
$team_groups['This season\'s teams'] = $season_teams;
}
foreach ($season_teams as $team) {
$a_exclude_team_ids[] = $team->GetId();
}
}
# ...and if this is a friendly it could be any other team
if ($this->i_match_type == MatchType::FRIENDLY) {
# get any other teams they played in the last 2 years, and combine with existing results
$team_manager->FilterExceptTeams($a_exclude_team_ids);
$team_manager->ReadRecentOpponents(array($this->team->GetId()), 24);
$recent_opponents = $team_manager->GetItems();
if (count($recent_opponents)) {
$team_groups['Recent opponents'] = $recent_opponents;
}
foreach ($recent_opponents as $team) {
$a_exclude_team_ids[] = $team->GetId();
}
# get any other teams they might play, and combine with existing results
$team_manager->FilterExceptTeams($a_exclude_team_ids);
$team_manager->ReadAll();
$team_groups['Other teams'] = $team_manager->GetItems();
}
# What if there are still no opponents to choose from? In that case select all teams.
if (count($team_groups) == 1) {
$team_manager->FilterExceptTeams($a_exclude_team_ids);
$team_manager->ReadAll();
$team_groups[] = $team_manager->GetItems();
}
# Offer those teams to select from
if ($total_groups = count($team_groups)) {
//.........这里部分代码省略.........
示例13: OnLoadPageData
public function OnLoadPageData()
{
/* @var $topic ForumTopic */
/* @var $match Match */
# new data manager
$match_manager = new MatchManager($this->GetSettings(), $this->GetDataConnection());
# get match
$match_manager->ReadByMatchId(array($_GET['item']));
$match_manager->ExpandMatchScorecards();
$this->match = $match_manager->GetFirst();
# must have found a match
if (!$this->match instanceof Match) {
header('Location: /matches/');
exit;
}
# Update search engine
if ($this->match->GetSearchUpdateRequired()) {
require_once "search/match-search-adapter.class.php";
$this->SearchIndexer()->DeleteFromIndexById("match" . $this->match->GetId());
$adapter = new MatchSearchAdapter($this->match);
$this->SearchIndexer()->Index($adapter->GetSearchableItem());
$this->SearchIndexer()->CommitChanges();
$match_manager->SearchUpdated($this->match->GetId());
}
# tidy up
unset($match_manager);
# Get comments
$this->review_item = new ReviewItem($this->GetSettings());
$this->review_item->SetId($this->match->GetId());
$this->review_item->SetType(ContentType::STOOLBALL_MATCH);
$this->review_item->SetTitle($this->match->GetTitle());
$this->review_item->SetNavigateUrl("https://" . $this->GetSettings()->GetDomain() . $this->review_item->GetNavigateUrl());
$this->review_item->SetLinkedDataUri($this->match->GetLinkedDataUri());
$topic_manager = new TopicManager($this->GetSettings(), $this->GetDataConnection());
if ($this->IsPostback()) {
$this->SavePostedComments($topic_manager);
}
$topic_manager->ReadCommentsForReviewItem($this->review_item);
$this->topic = $topic_manager->GetFirst();
unset($topic_manager);
if ($this->match->GetMatchType() == MatchType::TOURNAMENT or $this->match->GetMatchType() == MatchType::TOURNAMENT_MATCH) {
# Get stats highlights
require_once 'stoolball/statistics/statistics-manager.class.php';
$statistics_manager = new StatisticsManager($this->GetSettings(), $this->GetDataConnection());
if ($this->match->GetMatchType() == MatchType::TOURNAMENT) {
$statistics_manager->FilterByTournament(array($this->match->GetId()));
} else {
$statistics_manager->FilterByTournament(array($this->match->GetTournament()->GetId()));
}
$statistics_manager->FilterMaxResults(1);
$this->best_batting = $statistics_manager->ReadBestBattingPerformance();
$this->best_bowling = $statistics_manager->ReadBestBowlingPerformance();
$this->most_runs = $statistics_manager->ReadBestPlayerAggregate("runs_scored");
$this->most_wickets = $statistics_manager->ReadBestPlayerAggregate("wickets");
$this->most_catches = $statistics_manager->ReadBestPlayerAggregate("catches");
# See what stats we've got available
$best_batting_count = count($this->best_batting);
$best_bowling_count = count($this->best_bowling);
$best_batters = count($this->most_runs);
$best_bowlers = count($this->most_wickets);
$best_catchers = count($this->most_catches);
$this->has_player_stats = ($best_batting_count or $best_batters or $best_bowling_count or $best_bowlers or $best_catchers);
if (!$this->has_player_stats) {
$player_of_match = $statistics_manager->ReadBestPlayerAggregate("player_of_match");
$this->has_player_stats = (bool) count($player_of_match);
}
unset($statistics_manager);
}
}
示例14: GetDataObjectHash
/**
* Gets a hash of the specified match
*
* @param Match $data_object
* @return string
*/
protected function GetDataObjectHash($data_object)
{
return $this->GenerateHash(array($data_object->GetId()));
}
开发者ID:stoolball-england,项目名称:stoolball-england-website,代码行数:10,代码来源:matches-in-tournament-editor.class.php