From 922c1cfdbc262613b4c93444cc8be6037fea0bff Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Thu, 20 Jun 2019 15:32:26 +0200 Subject: [PATCH] ENHANCEMENT: Better Docs generation * NEW FEATURE: Added clean-dist and clean-dev targets * ENHANCEMENT: Resized logo in Doxygen for better fit * ENHANCEMENT: Doxygen takes branch name or version tag as `PROJECT_NUMBER` * CHANGE: Version tag directly put in distribution filename * CHANGE: `Tournament::GameExists()` renamed to `Tournament::gameExists()` * CHANGE: Updated composer metadata * CHANGE: Some setters changed to fluent setters. (More info: 7aca35057c10d2b982f93a698499c0c01df2fdc5) --- .gitignore | 2 +- CHANGELOG.md | 10 ++ Doxyfile | 4 +- Makefile | 25 +++-- composer.json | 4 +- res/logo-darkback-111px.png | Bin 0 -> 6779 bytes res/logo-darkback-96px.png | Bin 5466 -> 0 bytes res/logo-lightback-111px.png | Bin 0 -> 6561 bytes res/logo-lightback-96px.png | Bin 5261 -> 0 bytes src/Game.php | 88 ++--------------- src/IOFactory.php | 3 + src/Pairing.php | 32 ++++-- src/Player.php | 84 ++++++++++++++-- src/Readers/Pairtwo6.php | 16 ++- src/Round.php | 12 +-- src/Tournament.php | 187 +++++++++++++++++++++++++++++------ 16 files changed, 322 insertions(+), 145 deletions(-) create mode 100644 res/logo-darkback-111px.png delete mode 100644 res/logo-darkback-96px.png create mode 100644 res/logo-lightback-111px.png delete mode 100644 res/logo-lightback-96px.png diff --git a/.gitignore b/.gitignore index c8a963d..8394ebf 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ composer.lock /.idea /doc/api/* -/libpairtwo-dist.zip +/libpairtwo-*-dist.zip /dist/vendor/ /dist/composer.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fa69b8..a5639f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +## vx.y.z (Released: xx-yyy-zzzz) +* NEW FEATURE: Added clean-dist and clean-dev targets +* ENHANCEMENT: Better Docs generation +* ENHANCEMENT: Resied logo in Doxygen for better fit +* ENHANCEMENT: Doxygen takes branch name or version tag as `PROJECT_NUMBER` +* CHANGE: Version tag directly put in distribution filename +* CHANGE: `Tournament::GameExists()` renamed to `Tournament::gameExists()` +* CHANGE: Updated composer metadata +* CHANGE: Some setters changed to fluent setters. (More info: 7aca35057c10d2b982f93a698499c0c01df2fdc5) + ## v1.1 (Released: 20-jun-2019) * NEW FEATURE: Libpairtwo distribution releases (use these if you don't have knowledge of composer or dependency management) * NEW FEATURE: Soccer Kashdan (aka: kashdan using 3-1-0 scoring) diff --git a/Doxyfile b/Doxyfile index 289846a..66d43c3 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = libpairtwo # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v1.1 +PROJECT_NUMBER = $(VERSIONTAG) # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -51,7 +51,7 @@ PROJECT_BRIEF = "A library written in PHP that are saved using common p # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = ./res/logo-lightback-96px.png +PROJECT_LOGO = ./res/logo-lightback-111px.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is diff --git a/Makefile b/Makefile index 7fe8be3..18b99c1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ .PHONY: help tests dist .DEFAULT_GOAL := help +BRANCH := $(shell git rev-parse --abbrev-ref HEAD) +VERSION := $(if $(TAG),$(TAG),$(BRANCH)) help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-12s\033[0m %s\n", $$1, $$2}' @@ -14,11 +16,11 @@ view-coverage: ## Shows the code coverage report open build/coverage/index.html api: ## Generates api-docs - doxygen + VERSIONTAG=$(VERSION) doxygen dist: ## Generates distribution touch .libpairtwo-dist - git add -A + git add .libpairtwo-dist git commit -m "Commit before release" cp dist/composer* res/ mv dist/composer-dist.json dist/composer.json @@ -26,23 +28,27 @@ dist: ## Generates distribution rm dist/composer.json rm dist/composer.lock mv dist/composer-dist-installed.json dist/composer.json - doxygen + make api mkdir -p dist/doc cp -r doc/api dist/doc - cd dist && zip -r ../libpairtwo-dist * + cd dist && zip -r ../libpairtwo-$(VERSION)-dist.zip * git reset --hard HEAD^ mv res/composer* dist/ -clean: ## Cleans the repository - rm -rf dist/doc +clean: clean-dist clean-dev + +clean-dev: rm -rf doc/api rm -rf .idea rm -rf .libpairtwo-distro rm -rf vendor rm -rf composer.lock + +clean-dist: + rm -rf dist/doc rm -rf dist/vendor rm -rf dist/composer.json - rm -rf libpairtwo-dist.zip + rm -rf libpairtwo-*-dist.zip cs: ## Fixes coding standard problems vendor/bin/php-cs-fixer fix || true @@ -52,5 +58,6 @@ tag: ## Creates a new signed git tag @echo Tagging $(TAG) chag update $(TAG) git add --all - git commit -m 'Release $(TAG)' - git tag -s $(TAG) -m 'Release $(TAG)' + git commit -m 'RELEASE: $(TAG) Release' + git tag -s $(TAG) -m 'RELEASE: $(TAG) Release' + make dist diff --git a/composer.json b/composer.json index 2877a43..c37b6df 100644 --- a/composer.json +++ b/composer.json @@ -1,8 +1,8 @@ { "name": "jeroened/libpairtwo", "type": "library", - "description": "PHP library that reads and writes SWS files from Pairtwo developed by the Belgian Chess Federation", - "keywords": ["chess", "frbe-kbsb", "pairtwo"], + "description": "A library written in PHP that are saved using common pairing applications", + "keywords": ["chess", "pairing"], "license": "MIT", "authors": [ { diff --git a/res/logo-darkback-111px.png b/res/logo-darkback-111px.png new file mode 100644 index 0000000000000000000000000000000000000000..f53e0ac2cfd62c36ddce122c9e73769e848c39b6 GIT binary patch literal 6779 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 z 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 diff --git a/res/logo-lightback-111px.png b/res/logo-lightback-111px.png new file mode 100644 index 0000000000000000000000000000000000000000..1164118927a4524776830be5f869d1fd0653e89f GIT binary patch literal 6561 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 WhRwA*ECIeuL8#x;R<2XDjrt!v^+a(1 literal 0 HcmV?d00001 diff --git a/res/logo-lightback-96px.png b/res/logo-lightback-96px.png deleted file mode 100644 index d8ac8df43341d935819dd6d5b9fc6f6a370fe4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5261 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 A;{X5v diff --git a/src/Game.php b/src/Game.php index f14a1c0..28c01f4 100644 --- a/src/Game.php +++ b/src/Game.php @@ -29,13 +29,13 @@ use JeroenED\Libpairtwo\Pairing; */ class Game { - /** @var Pairing|null */ + /** @var Pairing | null */ private $white; - /** @var Pairing|null */ + /** @var Pairing | null */ private $black; - /** @var GameResult|null */ + /** @var GameResult | null */ private $result; /** @@ -77,7 +77,7 @@ class Game /** * Gets pairing for white player * - * @return Pairing|null + * @return Pairing | null */ public function getWhite(): ?Pairing { @@ -87,7 +87,7 @@ class Game /** * Sets pairing for white player * - * @param Pairing|null $white + * @param Pairing | null $white * @return Game */ public function setWhite(?Pairing $white): Game @@ -99,7 +99,7 @@ class Game /** * Gets pairing for black player * - * @return Pairing|null + * @return Pairing | null */ public function getBlack(): ?Pairing { @@ -109,7 +109,7 @@ class Game /** * Sets pairing for black player * - * @param Pairing|null $black + * @param Pairing | null $black * @return Game */ public function setBlack(?Pairing $black): Game @@ -121,7 +121,7 @@ class Game /** * Sets result for game * - * @param Gameresult|null $result + * @param Gameresult | null $result * @return Game */ public function setResult(?Gameresult $result): Game @@ -129,76 +129,4 @@ class Game $this->result = $result; return $this; } - - /** - * @return DateTime - */ - public function getDate(): DateTime - { - return $this->date; - } - - /** - * @param DateTime $date - * @return Round - */ - public function setDate(DateTime $date): Round - { - $this->date = $date; - return $this; - } - - /** - * @return Game[] - */ - public function getGames(): array - { - return $this->games; - } - - /** - * @param Game[] $games - * @return Round - */ - public function setGames(array $games): Round - { - $this->games = $games; - return $this; - } - - /** - * @return int - */ - public function getRoundNo(): int - { - return $this->roundNo; - } - - /** - * @param int $roundNo - * @return Round - */ - public function setRoundNo(int $roundNo): Round - { - $this->roundNo = $roundNo; - return $this; - } - - /** - * @return Pairing[] - */ - public function getPairings(): array - { - return $this->pairings; - } - - /** - * @param Pairing[] $pairings - * @return Round - */ - public function setPairings(array $pairings): Round - { - $this->pairings = $pairings; - return $this; - } } diff --git a/src/IOFactory.php b/src/IOFactory.php index f732d87..78af8c9 100644 --- a/src/IOFactory.php +++ b/src/IOFactory.php @@ -42,8 +42,11 @@ abstract class IOFactory /** * Creates a reader for $type * + * Compatible types are Pairtwo-5 and Pairtwo-6 + * * @param string $type * @return ReaderInterface + * @throws LibpairtwoException */ public static function createReader(string $type): ReaderInterface { diff --git a/src/Pairing.php b/src/Pairing.php index eaba02f..21c9bd8 100644 --- a/src/Pairing.php +++ b/src/Pairing.php @@ -27,10 +27,10 @@ use JeroenED\Libpairtwo\Enums\Result; */ class Pairing { - /** @var Player|null */ + /** @var Player | null */ private $Player; - /** @var Player|null */ + /** @var Player | null */ private $Opponent; /** @var Color */ @@ -43,7 +43,9 @@ class Pairing private $Round; /** - * @return Player|null + * Returns the player of the pairing + * + * @return Player | null */ public function getPlayer(): ?Player { @@ -51,7 +53,9 @@ class Pairing } /** - * @param Player|null $Player + * Sets the player of the pairing + * + * @param Player | null $Player * @return Pairing */ public function setPlayer(?Player $Player): Pairing @@ -61,7 +65,9 @@ class Pairing } /** - * @return Player|null + * Returns the opponent of the pairing + * + * @return Player | null */ public function getOpponent(): ?Player { @@ -69,7 +75,9 @@ class Pairing } /** - * @param Player|null $Opponent + * Sets the opponent of the pairing + * + * @param Player | null $Opponent * @return Pairing */ public function setOpponent(?Player $Opponent): Pairing @@ -79,6 +87,8 @@ class Pairing } /** + * Returns the color of the pairing + * * @return Color */ public function getColor(): Color @@ -87,6 +97,8 @@ class Pairing } /** + * Sets the color of the pairing + * * @param Color $Color * @return Pairing */ @@ -97,6 +109,8 @@ class Pairing } /** + * Returns the individual result of the pairing + * * @return Result */ public function getResult(): Result @@ -105,6 +119,8 @@ class Pairing } /** + * Sets the individual result of the pairing + * * @param Result $Result * @return Pairing */ @@ -115,6 +131,8 @@ class Pairing } /** + * Returns the round number of the pairing + * * @return int */ public function getRound(): int @@ -123,6 +141,8 @@ class Pairing } /** + * Sets the round number of the pairing + * * @param int $Round * @return Pairing */ diff --git a/src/Player.php b/src/Player.php index 027f946..3b9ab1d 100644 --- a/src/Player.php +++ b/src/Player.php @@ -66,12 +66,14 @@ class Player * Adds a pairing to the tournament * * @param Pairing $pairing + * @return Player */ - public function addPairing(Pairing $pairing) + public function addPairing(Pairing $pairing): Player { $newArray = $this->GetPairings(); $newArray[] = $pairing; $this->setPairings($newArray); + return $this; } /** @@ -99,6 +101,7 @@ class Player } /** + * Returns the elo of elotype for the player * @param string $type * @return int */ @@ -108,6 +111,8 @@ class Player } /** + * Sets the elo of elotype for the player + * * @param string $type * @param int $value * @return Player @@ -121,6 +126,10 @@ class Player } /** + * Returns the identifier of type for the player + * + * Common possible values are Fide or National + * * @param string $type * @return string */ @@ -130,6 +139,10 @@ class Player } /** + * Sets the identifier of type for the player + * + * Common possible values are Fide or National + * * @param string $type * @param string $value * @return Player @@ -143,9 +156,11 @@ class Player } /** + * Returns the number of won matches for the player + * * @return int */ - public function getNoOfWins() + public function getNoOfWins(): int { $wins = 0; foreach ($this->getPairings() as $pairing) { @@ -157,6 +172,11 @@ class Player } /** + * Returns the points of the player. + * + * 1 Point is awarded for winning + * 0.5 points are awarded for draw + * * @return float */ public function getPoints(): float @@ -174,9 +194,13 @@ class Player /** + * Returns the performance rating of the player + * + * WARNING: Calculation currently incorrect. Uses the rule of 400 as temporary solution + * * @return int */ - public function getPerformance(string $type, int $unratedElo) : float + public function getPerformance(string $type, int $unratedElo): float { $total = 0; $opponents = 0; @@ -199,6 +223,8 @@ class Player /** + * Returns the number of played games of the player + * * @return int */ public function getPlayedGames(): int @@ -213,6 +239,8 @@ class Player } /** + * Returns the name of the player + * * @return string */ public function getName(): string @@ -221,8 +249,10 @@ class Player } /** + * Sets the name of the player + * * @param string $Name - * @return \JeroenED\Libpairtwo\Models\Player + * @return Player */ public function setName(string $Name): Player { @@ -231,6 +261,8 @@ class Player } /** + * Returns an array of all ID's of the player + * * @return string[] */ public function getIds(): ?array @@ -239,6 +271,8 @@ class Player } /** + * Sets an array of all ID's of the player + * * @param string[] $Ids * @return Player */ @@ -249,6 +283,8 @@ class Player } /** + * Returns an array of all elos of the player + * * @return int[] */ public function getElos(): ?array @@ -257,6 +293,8 @@ class Player } /** + * Sets an array of all elos of the player + * * @param int[] $Elos * @return Player */ @@ -267,24 +305,30 @@ class Player } /** - * @return \DateTime + * Returns the date of birth of the player + * + * @return DateTime */ - public function getDateOfBirth(): \DateTime + public function getDateOfBirth(): DateTime { return $this->DateOfBirth; } /** - * @param \DateTime $DateOfBirth + * Sets the date of birth of the player + * + * @param DateTime $DateOfBirth * @return Player */ - public function setDateOfBirth(\DateTime $DateOfBirth): Player + public function setDateOfBirth(DateTime $DateOfBirth): Player { $this->DateOfBirth = $DateOfBirth; return $this; } /** + * Returns an array of all tiebreaks for the player + * * @return float[] */ public function getTiebreaks(): array @@ -293,6 +337,8 @@ class Player } /** + * Sets an array of all tiebreaks for the player + * * @param float[] $Tiebreaks * @return Player */ @@ -303,6 +349,7 @@ class Player } /** + * Returns the nation of the player * example value: BEL * * @return string @@ -313,6 +360,7 @@ class Player } /** + * Sets the nation of the player * example value: BEL * * @param string $Nation @@ -325,6 +373,8 @@ class Player } /** + * Returns the category of the player + * * @return string */ public function getCategory(): string @@ -333,6 +383,8 @@ class Player } /** + * Sets the category of the player + * * @param string $Category * @return Player */ @@ -343,6 +395,8 @@ class Player } /** + * Returns the title of the player + * * @return Title */ public function getTitle(): Title @@ -351,6 +405,8 @@ class Player } /** + * Sets the title of the player + * * @param Title $Title * @return Player */ @@ -361,6 +417,8 @@ class Player } /** + * Returns the gender of the player + * * @return Gender */ public function getGender(): Gender @@ -369,6 +427,8 @@ class Player } /** + * Sets the gender of the player + * * @param Gender $Gender * @return Player */ @@ -379,6 +439,8 @@ class Player } /** + * Returns an array of all pairings of the player + * * @return Pairing[] */ public function getPairings(): array @@ -387,6 +449,8 @@ class Player } /** + * Sets an array of all pairings of the player + * * @param Pairing[] $Pairings * @return Player */ @@ -397,6 +461,8 @@ class Player } /** + * Returns binary data that was read out the pairtwo file but was not needed immediately + * * @param string $Key * @return bool|DateTime|int|string */ @@ -406,6 +472,8 @@ class Player } /** + * Sets binary data that is read out the pairtwo file but is not needed immediately + * * @param string $Key * @param bool|int|DateTime|string $Value * @return Player diff --git a/src/Readers/Pairtwo6.php b/src/Readers/Pairtwo6.php index f79fd27..a82ee68 100644 --- a/src/Readers/Pairtwo6.php +++ b/src/Readers/Pairtwo6.php @@ -55,6 +55,8 @@ class Pairtwo6 implements ReaderInterface private $BinaryData; /** + * Returns the version tag of Pairtwo which created the pairtwo file + * * @return string */ public function getRelease(): string @@ -63,8 +65,10 @@ class Pairtwo6 implements ReaderInterface } /** + * Sets the version tag of Pairtwo which created the pairtwo file + * * @param string $Release - * @return \JeroenED\Libpairtwo\Readers\Models\Pairtwo6 + * @return Pairtwo6 */ public function setRelease(string $Release): Pairtwo6 { @@ -73,6 +77,8 @@ class Pairtwo6 implements ReaderInterface } /** + * Returns the tournament that was read out of the pairtwo file + * * @return Tournament */ public function getTournament(): Tournament @@ -81,6 +87,8 @@ class Pairtwo6 implements ReaderInterface } /** + * Sets the tournament that was read out of the pairtwo file + * * @param Tournament $Tournament * @return Pairtwo6 */ @@ -92,6 +100,8 @@ class Pairtwo6 implements ReaderInterface /** + * Returns binary data that was read out the pairtwo file but was not needed immediately + * * @param string $Key * @return bool|DateTime|int|string */ @@ -102,6 +112,8 @@ class Pairtwo6 implements ReaderInterface /** + * Sets binary data that is read out the pairtwo file but is not needed immediately + * * @param string $Key * @param bool|int|DateTime|string $Value * @return Pairtwo6 @@ -119,7 +131,7 @@ class Pairtwo6 implements ReaderInterface * @return Pairtwo6 * @throws IncompatibleReaderException */ - public function read($filename): ReaderInterface + public function read(string $filename): ReaderInterface { $swshandle = fopen($filename, 'rb'); $swscontents = fread($swshandle, filesize($filename)); diff --git a/src/Round.php b/src/Round.php index 57bd521..e7ef644 100644 --- a/src/Round.php +++ b/src/Round.php @@ -142,7 +142,7 @@ class Round return $this; } /** - * Returns an array of all games in the tournament + * Returns an array of all games for the round * * @return Game[] */ @@ -151,7 +151,7 @@ class Round return $this->games; } /** - * Sets Round::games to $games + * Sets an array of all games for the round * * @param Game[] $games * @return Round @@ -162,7 +162,7 @@ class Round return $this; } /** - * Returns the round number + * Returns the round number of the round * * @return int */ @@ -171,7 +171,7 @@ class Round return $this->roundNo; } /** - * Sets the round number + * Sets the round number of the round * * @param int $roundNo * @return Round @@ -182,7 +182,7 @@ class Round return $this; } /** - * Returns an array of all pairings for this round + * Returns an array of all pairings for the round * * @return Pairing[] */ @@ -191,7 +191,7 @@ class Round return $this->pairings; } /** - * Sets Round::Pairings to $pairings + * Sets an array of all pairings for the round * * @param Pairing[] $pairings * @return Round diff --git a/src/Tournament.php b/src/Tournament.php index e7322fe..d32c7e5 100644 --- a/src/Tournament.php +++ b/src/Tournament.php @@ -12,6 +12,7 @@ namespace JeroenED\Libpairtwo; +use Closure; use DateTime; use JeroenED\Libpairtwo\Enums\Tiebreak; use JeroenED\Libpairtwo\Enums\Color; @@ -107,7 +108,7 @@ class Tournament * @param integer $id * @return Player */ - public function getPlayerById(int $id) + public function getPlayerById(int $id): Player { return $this->GetPlayers()[$id]; } @@ -116,12 +117,14 @@ class Tournament * Adds a player * * @param Player $Player + * @return Tournament */ - public function addPlayer(Player $Player) + public function addPlayer(Player $Player): Tournament { $newArray = $this->GetPlayers(); $newArray[] = $Player; $this->setPlayers($newArray); + return $this; } /** @@ -129,36 +132,42 @@ class Tournament * * @param int $id * @param Player $player + * @return Tournament */ - public function updatePlayer(int $id, Player $player) + public function updatePlayer(int $id, Player $player): Tournament { $newArray = $this->GetPlayers(); $newArray[$id] = $player; $this->setPlayers($newArray); + return $this; } /** * Adds a Tiebreak * * @param Tiebreak $tiebreak + * @return Tournament */ - public function addTiebreak(Tiebreak $tiebreak) + public function addTiebreak(Tiebreak $tiebreak): Tournament { $newArray = $this->getTiebreaks(); $newArray[] = $tiebreak; $this->setTiebreaks($newArray); + return $this; } /** * Adds a round with given Round object * * @param Round $round + * @return Tournament */ - public function addRound(Round $round) + public function addRound(Round $round): Tournament { $newArray = $this->getRounds(); $newArray[$round->getRoundNo()] = $round; $this->setRounds($newArray); + return $this; } /** @@ -176,18 +185,22 @@ class Tournament * Adds a pairing to the tournament * * @param Pairing $pairing + * @return Tournament */ - public function addPairing(Pairing $pairing) + public function addPairing(Pairing $pairing): Tournament { $newArray = $this->GetPairings(); $newArray[] = $pairing; $this->setPairings($newArray); + return $this; } /** * Converts pairings into games with a black and white player + * + * @return Tournament */ - public function pairingsToRounds(): void + public function pairingsToRounds(): Tournament { /** @var Pairing[] $pairings */ $pairings = $this->getPairings(); @@ -225,11 +238,12 @@ class Tournament $cache[] = $pairing; } else { // Check if game already exists - if (!$this->GameExists($game, $round)) { + if (!$this->gameExists($game, $round)) { $this->AddGame($game, $round); } } } + return $this; } /** @@ -239,7 +253,7 @@ class Tournament * @param int $round * @return bool */ - public function GameExists(Game $game, int $round = -1): bool + public function gameExists(Game $game, int $round = -1): bool { $search = [ $round ]; if ($round == -1) { @@ -275,8 +289,9 @@ class Tournament * * @param Game $game * @param int $round + * @return Tournament */ - public function addGame(Game $game, int $round) + public function addGame(Game $game, int $round): Tournament { if (!isset($this->getRounds()[$round])) { $roundObj = new Round(); @@ -285,6 +300,7 @@ class Tournament } $this->getRoundByNo($round)->addGame($game); + return $this; } /** @@ -292,7 +308,7 @@ class Tournament * * @return Player[] */ - public function getRanking() + public function getRanking(): array { $players = $this->getPlayers(); foreach ($this->getTiebreaks() as $tbkey=>$tiebreak) { @@ -337,10 +353,10 @@ class Tournament /** * @param Player $a * @param Player $b - * @return \Closure + * @return Closure */ - private function sortTiebreak(int $key) + private function sortTiebreak(int $key): Closure { return function (Player $a, Player $b) use ($key) { if (($b->getTiebreaks()[$key] == $a->getTiebreaks()[$key]) || ($a->getTiebreaks()[$key] === false) || ($b->getTiebreaks()[$key] === false)) { @@ -352,7 +368,7 @@ class Tournament /** - * @return float|null + * @return float | null */ private function calculateTiebreak(Tiebreak $tiebreak, Player $player, int $tbkey = 0): ?float { @@ -452,7 +468,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculateKeizer(Player $player): ?float { @@ -462,7 +478,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculateAmerican(Player $player): ?float { @@ -472,7 +488,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculatePoints(Player $player): ?float { @@ -482,7 +498,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculateBaumbach(Player $player): ?float { @@ -498,7 +514,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculateBlackPlayed(Player $player): ?float { @@ -513,7 +529,7 @@ class Tournament /** * @param Player $player - * @return float|null + * @return float | null */ private function calculateBlackWin(Player $player): ?float { @@ -528,10 +544,12 @@ class Tournament /** + * Result between the tied players + * * @param Player $player * @param array $opponents * @param int $key - * @return float|null + * @return float | null */ private function calculateMutualResult(Player $player, array $opponents, int $key): ?float { @@ -568,6 +586,8 @@ class Tournament /** + * The average rating of the opponents + * * @param Player $player * @param int $cut * @return float @@ -591,9 +611,11 @@ class Tournament /** + * The average performance of the opponents + * * @param Player $player * @param int $cut - * @return float|null + * @return float | null */ private function calculateAveragePerformance(Player $player, string $type, int $cut = 0): ?float { @@ -614,9 +636,11 @@ class Tournament /** + * Points against players who have more than $cut % points + * * @param Player $player * @param int $cut - * @return float|null + * @return float | null */ private function calculateKoya(Player $player, int $cut = 50): ?float { @@ -635,10 +659,11 @@ class Tournament /** + * The combined points of the opponents * @param Player $player * @param int $cutlowest * @param int $cuthighest - * @return float|null + * @return float | null */ private function calculateBuchholz(Player $player, int $cutlowest = 0, int $cuthighest = 0): ?float { @@ -672,8 +697,10 @@ class Tournament /** + * The points of $player's opponents who $player won against, plus half of the points of $player's opponents who $player drew against + * * @param Player $player - * @return float|null + * @return float | null */ private function calculateSonneborn(Player $player): ?float { @@ -692,8 +719,10 @@ class Tournament /** + * 3 points for each, 1 for each draw and no for losing. -1 for not played games + * * @param Player $player - * @return float|null + * @return float | null */ private function calculateSoccerKashdan(Player $player): ?float { @@ -717,8 +746,10 @@ class Tournament } /** + * 4 points for each, 2 for each draw and 1 point for losing. 0 points for not played games + * * @param Player $player - * @return float|null + * @return float | null */ private function calculateKashdan(Player $player): ?float { @@ -742,8 +773,10 @@ class Tournament } /** + * Combined score of $player after each round + * * @param Player $player - * @return float|null + * @return float | null */ private function calculateCumulative(Player $player): ?float { @@ -763,6 +796,8 @@ class Tournament } /** + * Returns the name of the tournament + * * @return string */ public function getName(): string @@ -771,8 +806,10 @@ class Tournament } /** + * Sets the name of the tournament + * * @param string $Name - * @return \JeroenED\Libpairtwo\Models\Tournament + * @return Tournament */ public function setName(string $Name): Tournament { @@ -781,6 +818,8 @@ class Tournament } /** + * Returns the organiser of the tournament + * * @return string */ public function getOrganiser(): string @@ -789,6 +828,8 @@ class Tournament } /** + * Sets the organiser of the tournament + * * @param string $Organiser * @return Tournament */ @@ -799,6 +840,8 @@ class Tournament } /** + * Returns the clubidentifier of the tournament + * * @return int */ public function getOrganiserClubNo(): int @@ -807,6 +850,8 @@ class Tournament } /** + * Sets the clubidentifier of the tournament + * * @param int $OrganiserClubNo * @return Tournament */ @@ -817,6 +862,8 @@ class Tournament } /** + * Returns the club of the organiser + * * @return string */ public function getOrganiserClub(): string @@ -825,6 +872,8 @@ class Tournament } /** + * Sets the club of the organiser + * * @param string $OrganiserClub * @return Tournament */ @@ -835,6 +884,8 @@ class Tournament } /** + * Returns the location of the tournament + * * @return string */ public function getOrganiserPlace(): string @@ -843,6 +894,8 @@ class Tournament } /** + * Sets the location of the tournament + * * @param string $OrganiserPlace * @return Tournament */ @@ -853,6 +906,8 @@ class Tournament } /** + * Returns the country where the tournament is held + * * @return string */ public function getOrganiserCountry(): string @@ -861,6 +916,8 @@ class Tournament } /** + * Sets the country where the tournament is held + * * @param string $OrganiserCountry * @return Tournament */ @@ -871,6 +928,8 @@ class Tournament } /** + * Returns the fide homologation + * * @return int */ public function getFideHomol(): int @@ -879,6 +938,8 @@ class Tournament } /** + * Sets the fide homologation + * * @param int $FideHomol * @return Tournament */ @@ -889,6 +950,8 @@ class Tournament } /** + * Returns the start date of the tournament + * * @return DateTime */ public function getStartDate(): DateTime @@ -897,6 +960,8 @@ class Tournament } /** + * Sets the start date of the tournament + * * @param DateTime $StartDate * @return Tournament */ @@ -907,6 +972,8 @@ class Tournament } /** + * Returns the end date of the tournament + * * @return DateTime */ public function getEndDate(): DateTime @@ -915,6 +982,8 @@ class Tournament } /** + * Sets the end date of the tournament + * * @param DateTime $EndDate * @return Tournament */ @@ -925,6 +994,8 @@ class Tournament } /** + * Returns the arbiter of the tournament + * * @return string */ public function getArbiter(): string @@ -933,6 +1004,8 @@ class Tournament } /** + * Sets the arbiter of the tournament + * * @param string $Arbiter * @return Tournament */ @@ -943,6 +1016,8 @@ class Tournament } /** + * Returns the number of round + * * @return int */ public function getNoOfRounds(): int @@ -951,6 +1026,8 @@ class Tournament } /** + * Sets the number of rounds + * * @param int $NoOfRounds * @return Tournament */ @@ -961,6 +1038,8 @@ class Tournament } /** + * Returns an array containing all rounds of the tournament + * * @return Round[] */ public function getRounds(): array @@ -969,6 +1048,8 @@ class Tournament } /** + * Sets an array containing all rounds of the tournament + * * @param Round[] $Rounds * @return Tournament */ @@ -979,6 +1060,8 @@ class Tournament } /** + * Returns the tempo of the tournament + * * @return string */ public function getTempo(): string @@ -987,6 +1070,8 @@ class Tournament } /** + * Sets the tempo of the tournament + * * @param string $Tempo * @return Tournament */ @@ -997,6 +1082,8 @@ class Tournament } /** + * Returns the elo of a player if the player does not have one + * * @return int */ public function getNonRatedElo(): int @@ -1005,6 +1092,8 @@ class Tournament } /** + * Sets the elo of a player if the player does not have one + * * @param int $NonRatedElo * @return Tournament */ @@ -1015,6 +1104,8 @@ class Tournament } /** + * Returns the tournament system + * * @return TournamentSystem */ public function getSystem(): TournamentSystem @@ -1023,6 +1114,8 @@ class Tournament } /** + * Sets the tournament system + * * @param TournamentSystem $System * @return Tournament */ @@ -1033,6 +1126,8 @@ class Tournament } /** + * Returns the first period of the tempo + * * @return string */ public function getFirstPeriod(): string @@ -1041,6 +1136,8 @@ class Tournament } /** + * Sets the first period of the tempo + * * @param string $FirstPeriod * @return Tournament */ @@ -1051,6 +1148,8 @@ class Tournament } /** + * Returns the second period of the tempo + * * @return string */ public function getSecondPeriod(): string @@ -1059,6 +1158,8 @@ class Tournament } /** + * Sets the second period of the tempo + * * @param string $SecondPeriod * @return Tournament */ @@ -1069,6 +1170,8 @@ class Tournament } /** + * Returns the federation the tournament belongs to + * * @return string */ public function getFederation(): string @@ -1077,6 +1180,8 @@ class Tournament } /** + * Sets the federation the tournament belongs to + * * @param string $Federation * @return Tournament */ @@ -1087,6 +1192,8 @@ class Tournament } /** + * Returns an array of all players of the tournament + * * @return Player[] */ public function getPlayers(): array @@ -1095,6 +1202,8 @@ class Tournament } /** + * Sets an array of all players of the tournament + * * @param Player[] $Players * @return Tournament */ @@ -1105,6 +1214,8 @@ class Tournament } /** + * Returns the year the tournament is held in + * * @return int */ public function getYear(): int @@ -1113,6 +1224,8 @@ class Tournament } /** + * Sets the year the tournament is held in + * * @param int $Year * @return Tournament */ @@ -1123,6 +1236,8 @@ class Tournament } /** + * Returns an array of all pairings of the tournament + * * @return Pairing[] */ public function getPairings(): array @@ -1131,6 +1246,8 @@ class Tournament } /** + * Sets an array of all pairings of the tournament + * * @param Pairing[] $Pairings * @return Tournament */ @@ -1141,6 +1258,8 @@ class Tournament } /** + * Returns an array of all tiebreaks of the tournament + * * @return Tiebreak[] */ public function getTiebreaks(): array @@ -1149,6 +1268,8 @@ class Tournament } /** + * Sets an array of all tiebreaks of the tournament + * * @param Tiebreak[] $Tiebreaks * @return Tournament */ @@ -1159,6 +1280,8 @@ class Tournament } /** + * Returns the elo that has priority + * * @return string */ public function getPriorityElo(): string @@ -1167,6 +1290,8 @@ class Tournament } /** + * Sets the elo that has priority + * * @param string $PriorityElo * @return Tournament */ @@ -1176,6 +1301,8 @@ class Tournament return $this; } /** + * Returns the identifier that has priority + * * @return string */ public function getPriorityId(): string @@ -1184,6 +1311,8 @@ class Tournament } /** + * Sets the identifier that has priority + * * @param string $PriorityId * @return Tournament */